继续学习,昨天实验10.3数值显示的子程序dtoc.asm,请各位大神指正!
assume cs:code,ds:data
data segment
db 10 dup (0)
data ends
code segment
start:
mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4200h
int 21h
dtoc:
push bx
push cx
push dx
push si
push di
mov di,0
s:
mov dl,al ;低位暂存入dl
mov al,ah ;高位赋值给低位
mov ah,0
mov bl,0ah
div bl ;高位除以10,余数放入ah
mov dh,al ;高位的商,先放入dl寄存
mov al,dl ;原来的低位重新赋值到al,加上高位除法后的商ah,进行除法
div bl ;余数加低位除以10,余数放入ah,商在al
mov dl,ah ;余数放入DL
mov ah,dh ;高位商和低位商整合为总的商,放入ax下次使用
add dx,30h ;余数加30,转换位asii码
push dx ;asii码入栈
inc di
mov cx,ax
jcxz ok ;被除数为0时,结束循环
jmp s
ok:
mov cx,di
s0:
pop dx ;入栈出栈,调整字符顺序
mov byte ptr ds:[si],dl
inc si
loop s0
mov byte ptr ds:[si],0

这篇博客探讨了汇编语言中用于数值显示的子程序dtoc.asm,作者分享了学习过程,并诚邀专家进行指导。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



