assembly 组装ORG指令如何计算偏移量?

ej83mcc0  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(133)

我正在尝试创建一个简单的BIOS Boot 扇区,我发现在整个引导过程中内存的布局看起来就像这段文字下面的图片。我的想法是使用 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

问题是,当我把这些代码汇编成二进制代码并启动 Boot 过程时,终端中没有出现“X”,我在这里犯了什么错误?

zfciruhq

zfciruhq1#

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

[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

相关问题