【发布时间】:2018-01-24 09:25:35
【问题描述】:
我是汇编新手,一直坚持使用这个程序,其中使用了一个简单的加法函数,该函数接受两个输入并给出总和。 我现在得到的输出总是0。 我认为这与数据类型的处理方式有关。 任何帮助表示赞赏。
注意:程序在没有函数的情况下也能正常工作
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
.data
msg1 db "Please enter first number ",0
msg2 db "Pleae enter second number ",0
input1 db 10 DUP(0)
input2 db 10 DUP(0)
sum dword 0
sums db 10 DUP(0)
msg3 db "The sum of your numbers is :",0
temp1 dword 0
temp2 dword 0
fsum PROTO :dword, :dword, :dword
.code
start:
invoke StdOut , addr msg1
invoke StdIn , addr input1,10
invoke StdOut , addr msg2
invoke StdIn , addr input2,10
;Strip CRLF
invoke StripLF, addr input1
invoke StripLF, addr input2
;string to int
invoke atodw, addr input1
mov temp1,eax
invoke atodw , addr input2
mov temp2,eax
;Function CALL
invoke fsum, addr temp1,addr temp2,addr sum
;int to string
invoke dwtoa,sum, addr sums
;Printing OUTPUT
invoke StdOut, addr msg3
invoke StdOut, addr sums
invoke ExitProcess, 0
;Function Definition
fsum PROC x:DWORD , y:DWORD , z:DWORD
mov eax,x
add eax,y
mov z,eax
ret
fsum endp
end start
【问题讨论】: