我是新的汇编和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上的代码。