【发布时间】:2018-06-27 13:49:43
【问题描述】:
我正在使用 Kip Irvine 的库学习汇编语言,我正在尝试创建一个简单的程序,该程序将两个整数作为输入并输出它们的加法和减法,但我在输出它们时遇到了问题。
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
但我得到了
【问题讨论】:
-
我不知道 Irvine,但字符串必须以某种方式终止。尝试在字符串后面添加“,0”,告诉“WriteString”函数它在哪里停止
-
我也怀疑“writeInt”会打印 EDX 指向的字符串。使用“writeString”打印字符串(在这种情况下没有换行符),然后调用“writeInt”
-
@Tommylee2k 谢谢,我忘了在 mov edx 之后添加调用 writestring,偏移 myMessage。我将 ,0Ah 替换为 ,0,13h,10h 并且大部分都已修复
标签: assembly x86 masm irvine32