Assembly 在部件中显示两位数字?
我对汇编编程一无所知。在课堂上的例子中,需要添加两个数字并显示总和,我发现很神秘的是,当它是两位数时,显示总和。 这是我的密码Assembly 在部件中显示两位数字?,assembly,Assembly,我对汇编编程一无所知。在课堂上的例子中,需要添加两个数字并显示总和,我发现很神秘的是,当它是两位数时,显示总和。 这是我的密码 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 虽然加法可能会产
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
除以10,分别显示商和余数。
div bl
计算AX/bl
,而不是AL/bl
。这就是为什么你必须先归零啊。将剩余部分存储在AH中是一个只写操作。顺便说一句,您首先可以将添加到AL中;您不需要一个mysum
静态存储位置。使用寄存器保存数据,这就是它们的用途。