boot - What is INT=10H / AX=2000H in Windows XP NTLDR?

06
2014-04
  • znatz

    I currently disassembled NTLDR of Windows XP. During the process of booting, NTLDR uses the following interrupt:

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

    I don't know the meaning of this interrupt. What does it mean?

  • Answers
  • Jason Lane

    Understanding the answer is going to require a bit of assembly language to understand.

    Of the multipurpose registers used by x86 and x64 processors, EAX, EBX, ECX, and EDX can be divided into to halves. So EAX breaks down into AX and AH. The same holds true for EBX and so on. AX, BX, CX, and DX are the lower halves of the EAX, EBX, ECX, and EDX registers. The interrupt 10H is the video interrupt code.


  • Related Question

    hidden features - RAMDisk option in NTLDR
  • SLaks

    While experimenting for this answer, I came accross the following messages in NTLDR:

    • Windows could not start due to an error while booting from a RAMDISK.
    • The RAMDISK options specified in boot.ini are invalid.
    • Windows failed to build a bootable RAMDISK image.
    • Windows failed to open the RAMDISK image.

    Does this mean that Windows XP includes a RAMDisk?
    Does anyone know how to use it?
    Should this be moved to ServerFault or StackOverflow?


  • Related Answers
  • MDMarra

    Does this mean that Windows XP includes a RAMDisk?

    Yes, it's a relic from the olden days.

    Does anyone know how to use it?

    You can use the dos based ramdrive.sys in Win XP by following these steps.

    Should this be moved to ServerFault or StackOverflow?

    No.