调用子程序时TASM额外的字符

时间:2014-11-22 13:00:14

标签: assembly call subroutine tasm

所以我有这个子程序:

proc print_msg msgptr:word
    mov dx, [msgptr]
    mov ah, 9h
    int 21h
    ret
endp

我尝试使用

调用它
call print_msg, offset msg_description

但是在这一行上,tasm说“在线的额外字符”。如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:2)

call只接受一个操作数,即子程序的地址。你需要手动传递参数,根据tasm使用的约定,如果你像你一样声明proc。假设它使用通常的基于堆栈的约定,您将需要类似的东西:

push offset msg_description
call print_msg
add sp, 2 ; remove argument if called proc doesn't end with `ret 2`