Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 虚拟盒vdi Nasm跳转_Assembly_X86_Virtualbox_Nasm_X86 16 - Fatal编程技术网

Assembly 虚拟盒vdi Nasm跳转

Assembly 虚拟盒vdi Nasm跳转,assembly,x86,virtualbox,nasm,x86-16,Assembly,X86,Virtualbox,Nasm,X86 16,我正在研究引导加载程序。也就是说,我正在尝试用Nasm编写简单的引导加载程序,它将在VB(vdi磁盘)中运行。目前,我确实为测试目的设置了virtualbox环境,并成功加载了驻留在绝对地址(HXD十六进制编辑器)0x2000上的MBR。但现在我想跳出MBR(0x2200 big-endian)并执行驻留在那里的代码(下面的代码片段不起作用)。我使用Nasm指令[org 0x7C00],进行跳转时是否必须使用此偏移 [BITS 16] [org 0x7C00] %define location

我正在研究引导加载程序。也就是说,我正在尝试用Nasm编写简单的引导加载程序,它将在VB(vdi磁盘)中运行。目前,我确实为测试目的设置了virtualbox环境,并成功加载了驻留在绝对地址(HXD十六进制编辑器)0x2000上的MBR。但现在我想跳出MBR(0x2200 big-endian)并执行驻留在那里的代码(下面的代码片段不起作用)。我使用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是我想要跳转的位置):


引导扇区将在地址0x7c00处加载(由于实模式段的特殊性,可以通过多种方式对其进行寻址。两种常见的方式是0:0x7c00和0x7c0:0-您不应该依赖特定的方式)。它在磁盘映像中的偏移量0x2000可能是由于所述映像的格式,它与内存地址无关。此外,引导过程仅加载512字节的单个扇区,如果需要更多扇区,则必须自己加载。然后,您可以使用加载到的地址跳转到它