我正在研究引导加载程序。也就是说,我正在尝试使用 Nasm 编写简单的引导加载程序,它将在 VB(vdi 磁盘)中运行。现在,我确实设置了一个用于测试目的的 virtualbox 环境,并成功加载了位于绝对地址(HXD 十六进制编辑器)0x2000 上的 MBR。但现在我想跳出 MBR(0x2200 大端)并执行驻留在那里的代码(下面的代码片段不能完成这项工作)。我使用 Nasm 指令 [org 0x7C00],进行跳转时是否必须使用此偏移量?
[BITS 16]
[org 0x7C00]
%define location 0x0022
start:
mov al, 0x12
mov ah, 0
int 0x10
jmp location:0000
TIMES 510 - ($ - $$) db 0
DW 0xAA55
这是来自 vdi 的十六进制视图(2000h 是 MBR 开始的地方,2200h 是我要跳转的地方):