一、实验要求

编写一个子程序,实现将一个数值转换为表示十进制数的字符串


二、程序接口

名称: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


posted on 2013-03-19 13:13  曾经的你|  阅读(345)  评论(0编辑  收藏  举报