Was ist INT = 10H / AX = 2000H in Windows XP NTLDR?

493
znatz

Ich habe derzeit NTLDR von Windows XP demontiert. Während des Startvorgangs verwendet NTLDR den folgenden Interrupt:

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

Ich kenne die Bedeutung dieses Interrupts nicht. Was heißt das?

1
Könnten Sie einen Code / Assembler-Ausgabeausschnitt mit diesem Interrupt veröffentlichen? Es wäre hilfreich, diese bestimmte Position in der Assembler-Ausgabe zu sehen. Breakthrough vor 11 Jahren 0
Sind Sie außerdem sicher, dass die Byte-Reihenfolge (Endiananness) korrekt berechnet wurde und AX '2000H' und nicht '0020H' ist? Breakthrough vor 11 Jahren 0

1 Antwort auf die Frage

1
Jason Lane

Um die Antwort zu verstehen, ist ein wenig Assembler-Sprache erforderlich.

Von den Mehrzweckregistern, die von x86- und x64-Prozessoren verwendet werden, können EAX, EBX, ECX und EDX in Hälften unterteilt werden. Also zerbricht EAX in AX und AH. Dasselbe gilt für EBX und so weiter. AX, BX, CX und DX sind die unteren Hälften der EAX-, EBX-, ECX- und EDX-Register. Der Interrupt 10H ist der Video-Interrupt-Code.

* zwei ... nicht zu. Gramer Fale Jason Lane vor 11 Jahren 0
Ich denke, es ist unwahrscheinlich, dass die erweiterten Register für int 10H aus Gründen der Rückwärtskompatibilität verwendet werden. martineau vor 11 Jahren 0
@ JasonLane: Das kannst du bearbeiten Journeyman Geek vor 11 Jahren 0
Ich möchte eigentlich wissen, was INT = 10h / AH = 20H bedeutet. Es gibt keinen dokumentierten Sub-Service unter int10h / ah = 20h, aber es gibt ihn in Ntldr. vor 11 Jahren 1
@znatz Sind Sie sicher, dass die Bytereihenfolge korrekt ist? Breakthrough vor 11 Jahren 0