小编Pav*_*van的帖子

NASM汇编程序 - 如何确保功能标签不会再执行一次?

您好我正在修补汇编级编程.我有以下代码

    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从堆栈弹出地址,将地址指向调用者并再次执行标签.

现在我的问题是,如何避免这种情况?我不能只使用像实际功能这样的标签而不打印两次吗?我不想要额外的执行可能会改变我的程序.

x86 assembly

5
推荐指数
2
解决办法
441
查看次数

标签 统计

assembly ×1

x86 ×1