1
我在我的组装问题code.I希望交换的数字,但是当我添加这些数字加功能没有工作well.Thanks大会,添加功能
后两个数字添加用户输入的这代码
.model small
.stack 100h
.data
msg1 db 'Enter the number1:$'
msg2 db 'Enter the number2:$'
msg3 db 'After swap numbers are:$'
msg4 db 'Sum is:$'
num1 db ?
num2 db ?
sum db ?
diff db ?
.code
MAIN PROC
mov ax,@data
mov ds,ax
mov ah,09h ;display first msg
mov dx,offset msg1
mov ah,01h ;taking input
int 21h
mov num1,al
mov ah,09h ;display second msg
mov dx,offset msg2
int 21h
mov ah,01h ;taking input
int 21h
mov num2,al
mov bl,num1
mov cl,num2
mov num1,cl
mov num2,bl
mov ah,09h ;display third msg
mov dx,offset msg3
int 21h
mov ah,02h
mov dl,num1
int 21h
mov ah,02h
mov dl,num2
int 21h
mov bl,num1
add bl,num2
mov sum,bl
mov ah,09h ;display fourth msg
mov dx,offset msg4
int 21h
mov ah,02h
mov dl,sum
int 21h
mov ah,4ch
int 21h
MAIN ENDP
END MAIN
一些代码在代码块外部结束,多条线连接在一起。刷新页面,你会看到。我会重新发布,因为它可能有助于一个答案 –
请定义*“工作不好”*,是从计算机冒出来的烟? – Leeor
你的程序的问题是,当你执行'mov bl,num1'' add bl,num2'和'mov sum,bl'时,你正在添加你输入的字符的ASCII值。 ASCII'0'是48位十进制,'1'是49位十进制等。在添加这些数字之前,您需要从每个值中减去48位小数,然后添加它们。要打印出总和,您需要将ASCII 48添加到结果中以将其转换回可打印字符。你也会发现,如果num1和num2的总和大于9,那么你会遇到另一个问题。总和需要在打印前转换为ASCII字符串。 –