我需要一些关于我正在尝试编写的程序的帮助。该程序应该从标准输入中读取两个数字,保存并使用它来执行基本的数学运算,然后返回它。
我想,大多数事情都在工作。但它不能正确打印结果。它打印一大堆随机字符。我相信这个问题与我的代码中发生的 ascii 到 int 或 int 到 ascii 的转换有关,但我不能确定。
这是我从输入中读取的代码部分:
mov byte [firstNum], 30
mov byte [firstNum + 1], 0
mov ah, 0Ah
mov edx, firstNum
int 021H
movzx esi, byte [firstNum+1]
mov edx, firstNum+2
add esi, edx
mov byte [esi], "$"
mov byte [secondNum], 30
mov byte [secondNum + 1], 0
mov ah, 0Ah
mov edx, secondNum
int 021H
movzx esi, byte [secondNum+1]
mov edx, secondNum+2
add esi, edx
mov byte [esi], "$"
在哪里:
firstNum resb 32 ; first number
secondNum resb 32 ; second number
result resb 32 ; result
现在这是将字符串输入转换为整数的部分,将两个值相加,从整数转换为字符串并打印结果:
push dword secondNum+2
call _atoi
add esp, 4
mov ebx, eax
push dword firstNum+2
call _atoi
add esp, 4
add eax, ebx
push dword 10 ; base of 10, decimal
push dword result
push dword eax
call _itoa
add esp, 12
printOut result
如果有人能告诉我我的代码有什么问题,我将不胜感激。谢谢!