《組譯工具》王爽–實驗10.3的解法

來源:互聯網
上載者:User

一、實驗要求

編寫一個子程式,實現將一個數值轉換為表示十進位數的字串

二、程式介面

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.