繁体   English   中英

汇编ORG指令如何计算偏移量?

[英]How does assembly ORG instruction calculate offset?

我正在尝试创建一个简单的 BIOS 引导扇区,为此我使用了 x86 汇编语言。 我发现整个引导过程中的内存布局看起来像本文下面的图片。 我的想法是使用ORG汇编指令来通知汇编程序设置一个相对内存地址(在本例中为 0x7c00) 这样我就不必为当场计算内存地址而烦恼。 汇编代码如下所示:

[org 0x7C00]
    mov ah, 0x0e
    mov al, [0x09]    ;this is the offset of 'the_secret'
    int 0x10

the_secret:
    db "X"

    times 510 - ($-$$) db 0
    dw 0xaa55

问题是,当我将这段代码汇编成二进制文件并启动引导过程时,终端中没有出现“X”。 我在这里犯的错误是什么?

在此处输入图像描述

最好让汇编程序为您计算偏移量。

[org 0x7C00]
    xor ax,ax
    mov ds,ax


    mov ah, 0x0e
    mov al, [the_secret]  ;load the ascii code for 'X' into AL
    int 0x10

    JMP $    ;halt

the_secret:
    db "X"
    
    times 510 - ($-$$) db 0
    dw 0xaa55

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM