当我添加3 + 3它的答案是正确的,但是当我添加7 + 7它不起作用。我想添加两个数字,如75 + 75其答案应该是150或900 + 100其答案应该是1000.如何在汇编语言中添加两个16位数字?
它的程序请告诉我什么。什么是错我的代码,我很抱歉,因为我只是新的汇编语言..
.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
很多文章这是相同的ol'问题:多位数字。看看如何将一个字符串转换为数字(atoi)和反向(itoa)。这方面应该有很多问题。 –
我知道如何反转,但是,我不知道现在如何解决这个问题..有什么,你可以帮我修复我的代码?谢谢 –
玛格丽特刚刚给你解决方案。您试图将代表数字的多位字符串转换为数字。有* no * panacea指令来做到这一点,而是,需要循环阅读从右到左的字符串,并从文本转换为整数和相乘。在谷歌的'atoi'汇编中有很多例子。 –