以堆栈方式推送3个输入,汇编语言

时间:2018-04-19 21:25:32

标签: assembly visual-studio-2015 stack

我试图用三个输入计算结果,但我一直在收到错误。我想推送和弹出指令有问题。我发布了错误的图片。 任何帮助都非常感谢。 我正在使用Visual Studio 2015。

我试图用三个输入计算结果,但我一直在收到错误。我想推送和弹出指令有问题。我发布了错误的图片。 任何帮助都非常感谢。 我正在使用Visual Studio 2015。

.586
.MODEL FLAT
INCLUDE io.h
.STACK 4096

.DATA
number1 DWORD ?
number2 DWORD ?
number3 DWORD ? 
prompt1 BYTE "Enter first number, x", 0 
prompt2 BYTE    "Enter second number, y", 0 
prompt3 BYTE       "Enter second number, z", 0 
string  BYTE    40 DUP(? ) 
resultLbl BYTE    "result", 0 
sum     BYTE    11 DUP(? ), 0

   .CODE    
  _MainProc PROC 
   input   prompt1, string, 40 
   atod    string 
   mov     number1, eax

   input   prompt2, string, 40 
   atod    string 
   mov     number2, eax

   input   prompt3, string, 40 
   atod    string
   mov     number3, eax

   push number3 
   push number2 
   push number1

   call fctn1 

   add esp, 8
   dtoa    sum, eax 
   output  resultLbl, sum
   mov     eax, 0 
   ret    
   _MainProc ENDP




   fctn1 PROC 
   push ebp 
   mov ebp, esp 

   push ebx

   mov eax, [ebp + 8] 
   imul eax, 3 
   mov ebx, [ebp+12]
   imul ebx, 7 
   add eax, ebx 
   mov ecx, [ebp+16]
   imul ecx, 2 
   add eax, ecx

   pop ebx 
   pop ebp
   ret
   fctn1 ENDP

   END

enter image description here

0 个答案:

没有答案