汇编代码循环次数太多

时间:2016-10-26 21:50:46

标签: assembly boot osdev

我是新的汇编和OS开发与BIOS。我目前正在按照教程帮助我更好地了解我的系统,并且我的代码出现了循环问题。

尝试打印带有函数的字符串(print.asm):

print:
    lp:
    mov ax, [bx]    ;Move contents of address in BX into AX
    cmp ax, 00      ;Compare AX to 0
    je jumptrm      ;IF AX == 0 jump to end
    jmp jumppr      ;ELSE print char

    jumppr:         ;Print
    pusha           ;Store current instructions
    mov ah, 0x0e    ;Set to print mode
    mov al, [bx]    ;Set AL to char
    int 0x10        ;Print
    popa            ;Bring back instructions
    add bx, 1       ;Add one to address
    jmp lp          ;Loop

    jumptrm:        ;End
    ret

像这样运行它(boot.asm):

[org 0x7c00]
mov bx, hello
call print
jmp $
%include "print.asm"
hello:
    db 'Hiy', 00
mmph:
    db 'mmph!', 00
times  510-($-$$) db 0
dw 0xaa55

我一直得到输出:

Hiy mmph!

而不仅仅是:

Hiy

有人可以借一双额外的眼睛吗?

如果能帮助任何人,我会在软盘上运行Bochs上的代码。

0 个答案:

没有答案