这一小段代码在bochs 2.6上运行良好,但似乎并没有在真正的'上工作。电脑(我试过其中几台电脑)。似乎lodsb导致问题,因为它工作正常,当我通过打印字符串"手动"按性格划分。
.code16
.text
.globl _start
_start:
movw $0, %ax
jmp main
### DATA AND BUFFERS ###
welcome:
.asciz "welcome"
main:
movw $welcome, %si
call print_string
hang:
jmp hang
print_string:
lodsb
cmp $0, %al
je done
mov $0x0e, %ah
int $0x10
jmp print_string
done:
ret
. = _start + 510
.byte 0x55
.byte 0xaa
因为我没有在我的真实'上使用调试器。计算机我无法弄清楚问题是什么,重启计算机这么多次变得非常令人沮丧。问题可能出在段寄存器上吗?
问题解决了:问题出现了方向标志,当bios跳过我的代码时,与bochs不同的是向后设置。有关避免进一步问题的更多详细信息和建议,请参阅以下答案。