这个问题在这里已有答案:
我对汇编编程完全不熟悉。在课堂作业的例子中,需要添加两个数字并显示总和,我发现神秘的是当它是两位数时显示总和。这是我的代码。
mov al,num1
mov bl,num2
add al,bl
add ax,3030h
mov dl,ah
mov ah,02h
int 21h
mov dl,al
mov ah,02h
int 21h
mov ah,4ch
int 21h
虽然添加可能会导致打包号码,但如何解压缩并显示为十进制的两个不同数字?
我也是装配新手。但我认为这会对你有所帮助。
.model small
.stack 100h
.data
msg1 db "Enter number 1:$"
msg2 db "Enter number 2:$"
msg3 db "Sum is:$"
no1 db 0
no2 db 0
mysum db 0
rem db 0
.code
mov ax,@data
mov ds,ax
;print msg 1
mov dx,offset msg1
mov ah,09h
int 21h
;read input no1
mov ah,01h
int 21h
sub al,48
mov no1,al
;print new line
mov dl,10
mov ah,02h
int 21h
;print msg2
mov dx,offset msg2
mov ah,09h
int 21h
;read input 2
mov ah,01h
int 21h
sub al,48
mov no2,al
;print new line
mov dl,10
mov ah,02h
int 21h
;print msg3
mov dx,offset msg3
mov ah,09h
int 21h
;add two numbers
mov dl,no1
add dl,no2
;moving the sum to mysum
mov mysum,dl
;clear AH to use for reminder
mov ah,00
;moving sum to al
mov al,mysum
;take bl=10
mov bl,10
;al/bl --> twodigit number/10 = decemel value
div bl
;move reminder to rim
mov rem,ah
;to print (al) we move al to dl
mov dl,al
add dl,48
mov ah,02h
int 21h
;to print the reminder
mov dl,rem
add dl,48
mov ah,02h
int 21h
mov ax,4c00h
int 21h
end
在这里我所做的就是把总数拿到了可以保留它的al。然后我将它除以10并打印商和提醒。如果你觉得有问题。你可以问。谢谢 !
一个简单的汇编程序,添加两个数字如下:
.model small
.stack 100h
.data
var1 db ?
var2 db ?
str db 0ah,0dh,'sum: $'
.code
main proc
mov ax, @data ; initialization of data segment
mov ds, ax
mov ah, 1 ; input var1 and var2
int 21h
mov var1, al
int 21h
mov var2, al
mov bl, var1
mov cl, var2
add bl, cl ; addition of var1 and var2
mov al, bl ;
mov ah,0
aaa
mov bx,ax
add bh,30h
add bl,30h
mov ah,9
lea dx,str
int 21h
mov ah,2
mov dl,bh ;showing sum
int 21h
mov ah,2
mov dl,bl
int 21h
main endp