“Assembly Language”, 3rd Edition by Wang Shuang
Chapter 13: int Instruction
Checkpoint 13.2 (Page 259)
Determine the correctness of the following statements:
(1) We can programmatically change the instruction at FFFF:0 so that the CPU does not execute the hardware system checks and initialization program in the BIOS.
(2) The int 19H interrupt routine can be provided by DOS.
================
Reference Answer
(1): Incorrect.
Analysis: As mentioned by Professor Wang in the first chapter on basic knowledge (Page 12), in the 8086 CPU, the address space from C0000 to FFFFF is allocated for various ROMs, and these memory units are read-only, making it impossible to programmatically change them in DOS.
(2): Incorrect.
Analysis: First, it is important to clarify the purpose of the 19H interrupt routine. It is used to boot the operating system after hardware checks and initialization are complete, at which point DOS itself has not yet been loaded, making it impossible for DOS to provide the interrupt routine.
Secondly, the 19H interrupt routine is hardcoded in ROM, and during the boot process, the BIOS registers the entry address in the interrupt vector table, so it cannot be programmed or rewritten in DOS.
Finally, we can indeed write our own 19H interrupt routine, install it in the unused memory space, and rewrite the interrupt vector table to point the entry address to our custom 19H interrupt routine. However, this custom 19H interrupt routine cannot achieve the actual function of booting DOS provided by the real 19H interrupt routine, because DOS has already been started and is running 🙂