我自己簡單編了一個。。。 下面的程式是16位彙編,以十進位制數89158為例,編譯透過,執行正確。
; Program Name: Dec_ASCII.asm
Dec_ASCII SEGMENT
ASSUME CS:Dec_ASCII,DS:Dec_ASCII
ORG 100H
Start: jmp Begin
ASCII DB 5 dup(" ") ;儲存十進位制無符號數的ASCII
ASCII_End DB "$" ;字串結束標誌
Decimal DW 89158 ; 十進位制無符號數,最大65535。
Begin: lea di,ASCII_End ; 字串尾地址
dec di
mov bx,10 ; 用於除10,取商數和餘數
std ;設定變址暫存器變址方向
mov ax,Decimal ; 取十進位制無符號數
ASCII_Ctr: xor dx,dx
div bx ; 除10,取商數和餘數
xchg ax,dx ;交換商數和餘數
or al,30h ;轉換成ASCII碼
stosb ;儲存ASCII碼
mov ax,dx ;把商數放入ax中
cmp ax,0
ja ASCII_Ctr ;商數大於0,繼續取餘數
lea dx,ASCII ;字串首地址
mov ah,9 ; 顯示結果
int 21h
Exit_Proc: mov ax,4c00h ;結束程式
Dec_ASCII ENDS
END Start
我自己簡單編了一個。。。 下面的程式是16位彙編,以十進位制數89158為例,編譯透過,執行正確。
; Program Name: Dec_ASCII.asm
Dec_ASCII SEGMENT
ASSUME CS:Dec_ASCII,DS:Dec_ASCII
ORG 100H
Start: jmp Begin
ASCII DB 5 dup(" ") ;儲存十進位制無符號數的ASCII
ASCII_End DB "$" ;字串結束標誌
Decimal DW 89158 ; 十進位制無符號數,最大65535。
Begin: lea di,ASCII_End ; 字串尾地址
dec di
mov bx,10 ; 用於除10,取商數和餘數
std ;設定變址暫存器變址方向
mov ax,Decimal ; 取十進位制無符號數
ASCII_Ctr: xor dx,dx
div bx ; 除10,取商數和餘數
xchg ax,dx ;交換商數和餘數
or al,30h ;轉換成ASCII碼
stosb ;儲存ASCII碼
mov ax,dx ;把商數放入ax中
cmp ax,0
ja ASCII_Ctr ;商數大於0,繼續取餘數
lea dx,ASCII ;字串首地址
mov ah,9 ; 顯示結果
int 21h
Exit_Proc: mov ax,4c00h ;結束程式
int 21h
Dec_ASCII ENDS
END Start