彙編 把暫存器AX的十六進製制數轉換成十進位制形式輸出

2021-04-12 20:51:32 字數 1577 閱讀 6863

比如ax=7bh 則輸出字元123。

原理:ax為十六位暫存器,所以輸出十進位制數範圍為0 - 65535,最大五位數,有如下演算法:

65535/10000= 商6 餘數5535

5535/1000= 商5  餘數535

535/100= 商5  餘數35

35/10=  商3  餘數5

5/1=  商5  餘數0

把每次所得商加上48即可得到相應數字的ascii碼

loop指令:

(cx)=(cx)-1或(ecx)=(ecx)-1;

如果(cx)≠0或(ecx)≠0,轉向「標號」所指向的指令,否則,終止迴圈,執行該指令下面的指令。

程式清單:

data    segment

divisors        dw 10000, 1000, 100, 10, 1

results          db 0,0,0,0,0,"$"        ;存放五位數ascii碼

data ends

stack segment stack

stack ends

code segment

assume cs:code,ds:data,ss:stack

start:

mov     ax,data

mov     ds,ax

mov     ax,7bh        ;7bh 要顯示的字元

mov     si, offset divisors

mov     di, offset results                    

mov     cx,5  

aa:mov     dx,0           

div     word ptr [si]   ;除法指令的被除數是隱含運算元,此處為dx:ax,商ax,餘數dx

add     al,48           ;商加上48即可得到相應數字的ascii碼

mov     byte ptr [di],al       

inc     di                               

add     si,2                          

mov     ax,dx                       

loop    aa

mov     cx,4   

mov     di, offset results

bb:cmp     byte ptr [di],'0'   ;不輸出前面的0字元   

jne     print

inc     di                          

loop    bb

print:

mov     dx,di                      

mov     ah,9

int     21h                  

mov     ax,4c00h      

int     21h

code ends

end start

Python中的十六進製制數

運算十進位制整數轉十六進製制整數用hex 十六進製制整數轉十進位制整數用int 類似地,十進位制整數轉二進位制整數用bin 十進位制整數轉八進位制整數用oct 描述 hex 函式用於將10進製整數轉換成16進製制,以字串形式表示。語法 hex x 引數說明 x 10進製整數 返回值 返回16進製制數...

彙編學習 一位十六進製制數轉換為十進位制數

程式執行效果如下 如題,此程式只能實現一位十六進製制數的轉換 具體 如下 datas segment buf db 5 dup msg1 db please input a hex number 13,10,設定提示 msg2 db the dec number 13,10,ctlf db 13,1...

c 十六進製制加法 16進製制數之間的加法

十六進製制 1.數碼 0.1.2 9.a.b.c.d.e.f.其中 十六進製制數碼 a b c d e f 十進位制數值 10 11 12 13 14 15 基數 16 2.計數規則 逢十六進一 借一當十六 3.按權展開式 按權展開每上十六進製制數.例 4e6c 4 16 3 e 16 2 6 16...