Irvine x86 Сборочный вывод - PullRequest
0 голосов
/ 27 июня 2018

Я изучаю язык ассемблера, используя библиотеку Кипа Ирвина, и я пытался создать простую программу, которая принимает в качестве входных данных два целых числа и выводит их сложение и вычитание, но у меня возникают проблемы с их выводом.

    include irvine32.inc
.data
    myMessage BYTE "Enter First Number: ",0Ah
    myMessage1 BYTE "Enter Second Number: ",0Ah
    myMessage2 BYTE "Addition: ",0Ah
    myMessage3 BYTE "Subtraction: ",0Ah
    num1 DWORD ?
    num2 DWORD ?
.code
main proc
    mov edx, offset myMessage
    call writestring
    call readint
    mov num1, eax
    mov edx, offset myMessage1
    call writestring
    call readint
    mov num2, eax
    mov eax, num1
    add eax, num2
    mov edx, offset myMessage2
    call writeint
    mov eax, num1
    sub eax, num2
    mov edx, offset myMessage3
    call writeint
exit
main endp
end main

Ожидаемый результат:

Введите первое число: 5
Введите второе число: 3
Дополнение: + 8
Вычитание: +2

но я получаю

OUTPUT SS

1 Ответ

0 голосов
/ 27 июня 2018

Я не знаю Ирвин, но руководство довольно ясно

Это, вероятно, то, что вы хотели

    include irvine32.inc
.data
; the strings have to be terminated, so ",0" is added:
    myMessage BYTE "Enter First Number: ",0      
    myMessage1 BYTE "Enter Second Number: ",0
    myMessage2 BYTE "Addition: ",0
    myMessage3 BYTE "Subtraction: ",0
    myMessage3 BYTE 10,13,0
    num1 DWORD ?
    num2 DWORD ?
.code
main proc
    mov edx, offset myMessage
    call writestring
    call readint
    mov num1, eax
    mov edx, offset myMessage1
    call writestring
    call readint
    mov num2, eax

    ; addition, compose the line ( 3 parts: prompt, number, newline)
    mov edx, offset myMessage2
    call writestring
    mov eax, num1
    add eax, num2
    call writeint
    mov edx, offset newLine    ; add a CrLF here
    call writestring


    ; subtraction
    mov edx, offset myMessage3
    call writestring
    mov eax, num1
    sub eax, num2
    call writeint
    mov edx, offset newLine
    call writestring

exit
main endp
end main
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...