Программа сборки для вычитания трех целых чисел из пользовательского ввода (xyz)

Здравствуйте, я пытаюсь написать программу, которая вычитает три целых числа (xyz), которые вводит пользователь, а затем выводит их на экран. Я верю, что я на правильном пути, но теряюсь, куда идти дальше. Я новичок в сборке. Это сборка irvine32. Спасибо!

TITLE Programming Assignment 1 (main.asm)

INCLUDE Irvine32.inc
.data
myMessage1 BYTE "Please input integer x: ",0dh,0ah,0
myMessage2 BYTE "Please input integer y: ",0dh,0ah,0
myMessage3 BYTE "Please input integer z: ",0dh,0ah,0
inputNum1 DWORD ?
inputNum2 DWORD ?
inputNum3 DWORD ?

.code
main PROC
   call Clrscr

   mov edx,offset myMessage1
   call WriteString
   call ReadInt
   mov inputNum1,eax


   mov edx,offset myMessage2
   call WriteString
   call ReadInt
   mov inputNum2,ebx

   mov edx,offset myMessage3
   call WriteString
   call ReadInt
   mov inputNum3,ecx

   sub eax, ebx
   sub ebx, ecx




   exit
   main ENDP

   END main

1 ответ

ReadInt возвращает число в eax, Поэтому вы должны записать это в свои переменные. Для выполнения арифметики вам необходимо использовать указанные переменные. Такие как:

   mov edx,offset myMessage1
   call WriteString
   call ReadInt
   mov inputNum1,eax

   mov edx,offset myMessage2
   call WriteString
   call ReadInt
   mov inputNum2,eax

   mov edx,offset myMessage3
   call WriteString
   call ReadInt
   mov inputNum3,eax

   mov eax, inputNum1
   sub eax, inputNum2
   sub eax, inputNum3

   call WriteInt

PS: научитесь пользоваться отладчиком и читайте документацию.

Другие вопросы по тегам