王爽組合語言第二版,實驗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...