为什么引导加载程序中的字节“0xea 0000 ffff”会导致计算机重启?

时间:2015-07-08 14:58:35

标签: assembly x86 bootloader bios reboot

我正在研究引导加载程序,我发现了这个有趣的程序集:

;Sends us to the end of the memory
;causing reboot
db 0x0ea
dw 0x0000
dw 0xffff

通过评论,我知道它的作用;将计算机发送到内存的末尾,但我无法弄清楚 这些数字是如何重新启动计算机的(16位模式下的x86_64处理器)。

2 个答案:

答案 0 :(得分:3)

它是对旧8086重置地址的远程跳转指令。当8086重置时,它将开始执行FFFF:0000处的指令。出于兼容性原因,现代BIOS实现在这里跳转到它们的复位代码,尽管现代CPU的复位地址是不同的。

答案 1 :(得分:3)

这些字节对应jmp word 0xffff:0000(您可以通过与NASM组合然后反汇编生成的二进制文件来看到这一点),这恰好是在实模式下跳转到x86 reset vector