我正在研究引导加载程序,我发现了这个有趣的程序集:
;Sends us to the end of the memory
;causing reboot
db 0x0ea
dw 0x0000
dw 0xffff
通过评论,我知道它的作用;将计算机发送到内存的末尾,但我无法弄清楚 这些数字是如何重新启动计算机的(16位模式下的x86_64处理器)。
答案 0 :(得分:3)
它是对旧8086重置地址的远程跳转指令。当8086重置时,它将开始执行FFFF:0000处的指令。出于兼容性原因,现代BIOS实现在这里跳转到它们的复位代码,尽管现代CPU的复位地址是不同的。
答案 1 :(得分:3)
这些字节对应jmp word 0xffff:0000
(您可以通过与NASM组合然后反汇编生成的二进制文件来看到这一点),这恰好是在实模式下跳转到x86 reset vector。