Assembly 启动扇区程序的意外输出
我通过16位引导加载程序编程自学汇编(NASM),遇到了一个问题。 我编写了一个程序,使用函数Assembly 启动扇区程序的意外输出,assembly,nasm,boot,16-bit,Assembly,Nasm,Boot,16 Bit,我通过16位引导加载程序编程自学汇编(NASM),遇到了一个问题。 我编写了一个程序,使用函数print将“Hello,World!”显示到屏幕上,但我只得到“U”作为输出 以下是大会: print: pusha mov ah, 0x0e int 0x10 popa ret mov al, 'H' call print mov al, 'e' call print mov al, 'l' call print mov al, 'l' call print
print
将“Hello,World!”显示到屏幕上,但我只得到“U”作为输出
以下是大会:
print:
pusha
mov ah, 0x0e
int 0x10
popa
ret
mov al, 'H'
call print
mov al, 'e'
call print
mov al, 'l'
call print
mov al, 'l'
call print
mov al, 'o'
call print
mov al, ','
call print
mov al, 'W'
call print
mov al, 'o'
call print
mov al, 'r'
call print
mov al, 'l'
call print
mov al, 'd'
call print
mov al, '!'
call print
jmp $
times 510-($-$$) db 0
dw 0xaa55
我相信这是非常明显或愚蠢的事情,因为我才刚刚开始。
提前感谢。您似乎首先执行了
print
功能。当它到达ret
时,没有可返回的返回地址,因此会崩溃。跳过它,或者把子程序放在最后。哇,我真是太傻了。谢谢