【发布时间】:2016-12-06 08:54:57
【问题描述】:
当我添加 3+3 时,它的答案是正确的,但是当我添加 7+7 时,它不起作用。我想添加两个数字,例如 75+75,它的答案应该是 150 或 900+100,它的答案应该是 1000。
请告诉我它的程序是什么。我的代码有什么问题,对不起,因为我只是新的汇编语言..
.model small
.stack 0100h
.data
num1 db ?
num2 db ?
msg1 db 13,10, "Enter 1st Number : $"
msg2 db 13,10, "Enter 2nd Number : $"
msg3 db 13,10, "The answer is : $"
.code
mov ax, @data
mov ds, ax
lea dx,msg1
mov ah,09h
int 21h
start:
mov ah,01h
int 21h
cmp al,0dh
je second
sub al,30h
push ax
mov num1,al
jmp start
second:
lea dx,msg2
mov ah,09h
int 21h
number2:
mov ah,01h
int 21h
cmp al,0dh
je ans
sub al,30h
push ax
mov num2,al
jmp number2
ans:
mov al,num1
add al,num2
MOV AH,9
LEA DX,MSG3
INT 21H
ADD AL,30H
MOV AH,2h
MOV DL,AL
INT 21H
jmp start
end
【问题讨论】:
-
这是同一个问题:多位数字。看看如何将字符串转换为数字 (atoi) 和反向 (itoa)。这方面应该有很多问题。
-
我知道如何扭转,但我不知道现在是否能解决这个问题.. 有什么可以帮助我修复我的代码的吗?谢谢
-
玛格丽特刚刚给了你解决方案。您正在尝试将表示数字的多位字符串转换为数字。有 no 灵丹妙药指令可以做到这一点,但是需要循环从右到左读取的字符串并将文本转换为整数并进行乘法运算。
atoigoogle 的汇编中有很多例子。 -
什么是汇编中的“字符串”:stackoverflow.com/a/40580889/4271923 如何将(无符号)数值转换为字符串:stackoverflow.com/a/40505938/4271923 .. 字符串转换为值:stackoverflow.com/questions/10471281/… ... 你还应该学习
byte/word/dword是什么,以及它们可以处理多少信息,因为num1 db ?不足以处理 0-900 范围内的数字,因此您的 900+100 示例无论如何都会失败。你在堆栈上pushingax,但没有使用它。这是不好的做法,在这种情况下几乎无害,但是.. -
如何使用我推的斧头??...我很抱歉,因为我只是这个汇编编程的新手..