当我添加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
答案 0 :(得分:0)
简单回答:使用ADD< 16bit Register>,< 16bit Register>
你混淆了两件事:二进制表示和ASCII表示。你的cpu不知道“4711”或“12345”是什么意思。它只是一系列字节。
你需要转换字符串的ASCII表示,添加它们的二进制值,并将结果转换回ASCII
对于两者而言,SO中有很多文章