一、实验要求
编写一个子程序,实现将一个数值转换为表示十进制数的字符串
二、程序接口
名称:dtoc
功能:将word型数据转变为十进制数的字符串,字符串以0为结尾符
参数:(ax) = word型数据
ds:si指向字符串的首地址
返回:无
三、算法概述
1、可以反复调用除法运算除以10d取余数,直到商为0,可以获得十进制各位码
例如:
10 | 12666 6
——————
10 | 1266 6
—————
10 | 126 6
————
10 | 12 2
———
10 | 1 1
——
0
2、对十进制各位码加上30h就转换成为了各位的ASCII值
解法
;子程序描述
;名称: d2c
;功能: 将数字转换成字符串形式,放入[DI]为起始的内存单元中
;参数: (dx)=dword型数据的高16位 (ax)=dword型数据的低16位
;返回: 以0结尾的字符串,放在[DI]为起始地址的内存单元中
d2c:
call divdw
add cx,30h ;得到的余数转化为字符串
push cx
mov cx,ax
jcxz ok
jmp d2c
ok:
mov ax,64
mov cx,sp
sub ax,cx
mov cl,2
div cl ;得到字符的个数
mov ch,0
mov cl,al ;设置循环的次数
sub cl,1
reverse: ;以正确的顺序放入字符串
pop ax
mov [di],al
inc di
loop reverse
mov al,0
mov [di],al
inc di
ret