代码适用于bochs,但不适用于真实计算机,x86实模式

时间:2016-03-24 07:39:47

标签: assembly x86 bootloader gas real-mode

这一小段代码在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不同的是向后设置。有关避免进一步问题的更多详细信息和建议,请参阅以下答案。

0 个答案:

没有答案