Assembly TASM中带参数的函数
你能用汇编语言发布一个使用带参数函数的例子吗。一些简单的东西,比如返回两个元素之和的函数 谷歌搜索不到任何足够简单的例子 增加:Assembly TASM中带参数的函数,assembly,tasm,function-parameter,Assembly,Tasm,Function Parameter,你能用汇编语言发布一个使用带参数函数的例子吗。一些简单的东西,比如返回两个元素之和的函数 谷歌搜索不到任何足够简单的例子 增加: .model small .data .stack 320h .code extrn writer:near add_numbers PROC ARG number1:WORD ARG number2:WORD MOV ax, number1 MOV bx, numbe
.model small
.data
.stack 320h
.code
extrn writer:near
add_numbers PROC
ARG number1:WORD
ARG number2:WORD
MOV ax, number1
MOV bx, number2
ADD ax, bx
CALL writer ; this procedure prints the contents of ax
RET
add_numbers ENDP
.startup
PUSH 1
PUSH 2
CALL add_numbers ; instead of 3 it prints -11602
call writer ; instead of 3 it prints 0
.EXIT
END
这取决于您使用的TASM版本。在现代版上,你可以写下如下内容:
add_numbers PROC
ARG number1:DWORD
ARG number2:DWORD
MOV eax, [number1]
MOV ebx, [number2]
ADD eax, ebx
RET
add_numbers ENDP
我使用的是涡轮汇编程序4.1。由于寄存器名的原因,您的示例未编译。将eax替换为ax,将ebx替换为bx,我仍然得到一个关于行“MOV eax,[number1]”的错误:操作数类型不匹配。将DWORD更改为WORD后,它就工作了。但是我现在如何调用这个过程呢?使用
call
指令:PUSH,PUSH,call add\u numbers
。返回值将在ax
中。已尝试此操作,但某些操作仍然无效。。。我在问题中添加了我的代码。@sergey:你需要学习使用调试器,这样你就可以单步执行代码了。你可以发布writer
的代码吗?也许问题就出在那里。