我正在尝试使用NASM在Q模拟器中打印一个字符串。我的代码如下:
然而,当我编译这段代码时,得到的输出是:
mov bx,HELLO
mov ah, 0x0e
int 0x10
HELLO:
db 'Hello', 0
jmp $
times 510-($-$$) db 0
dw 0xaa55
然而,当我编译这段代码时,得到的输出是:
UU
请问有人能告诉我为什么会这样吗?如何获得所需的字符串输出?
提前致谢。
ORG 0x7c00
。可能你在使用_NASM_进行汇编时使用了"-f bin",并且它使用了默认的ORG值0x0000。虽然这不会是你的问题。Int 10h/ah = 0eh逐个字符打印,并且不接受_BX_中的内存地址。 - Michael Petchjmp $
之后放置你的数据。如果将其放在 JMP 之前,处理器将解码HELLO
中的数据作为指令,可能会导致意外行为。 - Michael Petch