繁体   English   中英

Irvine x86组件输出

[英]Irvine x86 Assembly Output

我正在使用Kip Irvine的Library学习汇编语言,并且试图创建一个简单的程序,该程序将两个整数作为输入并输出它们的加法和减法,但是在输出它们时遇到了问题。

    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

但我越来越

输出SS

我不知道irvine,但是手册很清楚

这可能就是您想要的

    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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM