將數值轉換為表示十進位制數的字串

2021-05-17 16:22:40 字數 1673 閱讀 8589

王爽組合語言第二版,實驗10.3

一、實驗要求

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

二、程式介面

三、演算法概述

1、可以反覆呼叫除法運算除以10d取餘數,直到商為0,可以獲得十進位制各位碼

例如:10 |  12666                 6

——————

10 |    1266              6

—————

10 |  126              6

————

10 | 12               2

———   

10 | 1             1——0

2、對十進位制各位碼加上30h就轉換成為了各位的ascii值

四、實現**

dtoc:

push ax;

儲存暫存器現場

push bx

push cx

push dx

push si

mov bp,0;

字串長度計數器

dtoc_s:

mov cx,10

mov dx,0

div cx

push dx;

餘數入棧

mov cx,dx;

商儲存到

cx中,進行判斷

inc bp

loop dtoc_s;

如果cx

值不為零,則轉跳

mov cx,bp

mov dx,0

dtoc_s1:

pop dx

add dl,30h;

轉換為ascii

碼mov ds:[si],dl

inc si

loop dtoc_s1

mov byte ptr ds:[si],0;

向最後一位寫入乙個0

pop si;

恢復暫存器現場

pop dx

pop cx

pop bx

pop ax

ret五、測試**

assume cs:code

data segment

db 10 dup (0)

data ends

stack segment

dw 16 dup (0)

stack ends

code segment

start:

mov bx,stack;

定義棧段

mov ss,bx

mov sp,33

mov ax,12666;

為呼叫子程式傳參

mov bx,data

mov ds,bx

mov si,0

call dtoc          ;呼叫子程式

;呼叫顯示字串的子程式,參考http://blog.csdn.net/lingdushanke/archive/2009/12/27/5085512.aspx

mov dh,8

mov dl,3

mov cl,2

call show_str 

mov ax,4c00h

int 21h

code ends

end start

六、測試結果

將數值轉換為表示十進位制數的字串2

王爽組合語言第二版 一 實驗要求 上一部分實現了把乙個word型別的資料轉換為表示十進位制數的字串,現有需求要實現dword型別資料的轉換,可用類似演算法實現。演算法參考http blog.csdn.net lingdushanke archive 2009 12 28 5090736.aspx。對...

將數值轉換為表示十進位制數的字串2

王爽組合語言第二版 一 實驗要求 上一部分實現了把乙個word型別的資料轉換為表示十進位制數的字串,現有需求要實現dword型別資料的轉換,可用類似演算法實現。演算法參考 對dword型別的轉換可能出現除法溢位的問題,解決方法參考 二 程式介面 名稱 dtoc 功能 將dword型數轉變為表示十進位...

將十進位制數M轉換為N進製數

題目描述 給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數。exp 輸入 輸入為一行,m 32位整數 n 2 n 16 以空格隔開,如7,2。輸出 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 如111...