我试图在Qemu中加载“ Hello World”字符串,但只显示字母“ H”。我对此很陌生,在此先感谢您尝试帮助我:D 我正在Windows操作系统上执行此操作。
[BITS 16]
[ORG 0X7C00]
MOV SI, BOOTLOADSTR
CALL Printstring
JMP $
Printcharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
Printstring
next_character:
MOV AL, [SI]
INC SI
OR AL, AL
JZ exit_function
CALL Printcharacter
exit_function
RET
;DATA
BOOTLOADSTR db 'Hello World', 0
TIMES 510 - ($ - $$) DB 0
DW 0XAA55
答案 0 :(得分:1)
您的代码似乎错误地引用了[DS:SI] ...似乎您只是从[DS:SI]抓取了一个字节,尝试使用lodsb
连续收集字节直到{{1} }已终止 [CHAR_STREAM] NULL
可能我建议尝试这段代码;我提供了注释和[0x00]
指令,并附有简单的详细信息来解释该过程:
lodsb
这是受人尊敬的结果: