实验10.3把数值转换成字符串,并存放到data数据段中子程序。虽然程序写出来,调试通过了,可是总觉得算法不对,循环好像用的太多了,还有这个栈的处理,使代码看着不舒服。
====================================
;**************************************************************************************
;Name: dtoc
;Function: 将word类型的数据转换成以0结尾的字符串
;参数: ax=word型数据
; ds:si返回转换后字符串的首地址
;*************************************************************************************
dtoc: mov bx,0
push dx
push bx ;|此行处是子程序写完,发现出栈有问题,才加上的,这里如果不仔细推理
mov di,0 ;|全部程序,估计永无法明白,我写完了,也觉得太可怕了。不喜欢这样,
mov dx,0 ;|可是实在又愚笨,不知如何更好。
s: mov bx,10
div bx
mov cx,ax ;ax=商 dx=余数
add dx,30h
push dx
inc si
jcxz ok
mov dx,0
jmp short s
ok: mov si,0
ok2: pop cx
mov ds:[si],cl
jcxz kkk
inc si
jmp short ok2
kkk: pop dx
mov si,0
ret |