Что такое INT = 10H / AX = 2000H в Windows XP NTLDR?

490
znatz

В данный момент я разобрал NTLDR Windows XP. В процессе загрузки NTLDR использует следующее прерывание:

INT 10H, AX=2000H, BX=0301H, CX=0H, DX=0H 

Я не знаю значение этого прерывания. Что это значит?

1
Не могли бы вы выложить выходной код / ​​ассемблер с этим прерыванием? Было бы полезно увидеть это конкретное место на выходе ассемблера. Breakthrough 11 лет назад 0
Кроме того, вы уверены, что порядок байтов (порядковый номер) был вычислен правильно, и `AX` - это` 2000H`, а не `0020H`? Breakthrough 11 лет назад 0

1 ответ на вопрос

1
Jason Lane

Чтобы понять ответ, потребуется немного языка ассемблера для понимания.

Из многоцелевых регистров, используемых процессорами x86 и x64, EAX, EBX, ECX и EDX можно разделить на две половины. Так что EAX разбивается на AX и AH. То же самое относится к EBX и так далее. AX, BX, CX и DX - это нижние половины регистров EAX, EBX, ECX и EDX. Прерывание 10H - это код прерывания видео.

* два ... не надо. Gramer Fale Jason Lane 11 лет назад 0
Я думаю, что вряд ли использовать расширенные регистры для int 10H по причинам обратной совместимости. martineau 11 лет назад 0
@JasonLane: Вы можете редактировать это Journeyman Geek 11 лет назад 0
Я на самом деле хочу знать, что означает INT = 10h / AH = 20H. В int10h / ah = 20h нет документированной подуслуги, но она существует в Ntldr. 11 лет назад 1
@znatz вы уверены, что порядок байтов правильный? Breakthrough 11 лет назад 0