您好我正在修补汇编级编程.我有以下代码
mov al, 'H'
call my_function
my_function:
mov ah,0x0e ; BIOS print-character
int 0x10
ret
jmp $ ; infinite loop because there's no OS to exit to
times 510-($-$$) db 0
dw 0xaa55 ; boot sector signature
Run Code Online (Sandbox Code Playgroud)
我有一个打印内容的标签al,它正在按预期工作(打印H).但是在函数返回之后,再次执行相同的标签并打印一个额外的标签H.这是可以理解的,因为ret从堆栈弹出地址,将地址指向调用者并再次执行标签.
现在我的问题是,如何避免这种情况?我不能只使用像实际功能这样的标签而不打印两次吗?我不想要额外的执行可能会改变我的程序.