在51微控制器中,使用組合語言,如何將十六進位制數轉換成十進位制

時間 2021-09-06 09:23:35

1樓:

共陽數碼管顯示數字嗎?0~9:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90

2樓:

把數值送到暫存器a中,

mov b,#10

div ab

得到的a即是商,也就是十位,b中是餘數,也就是個位。

如果位數更多的話,例如三位六進位制數,100關到b中,相除,得到的a中就是最高位,先存放到別的暫存器中,再

mov a,b

mov b,10

div ab

得到的a就是十位嘍,b中自然是個位

就是這個原理,再想想,不難的

3樓:匿名使用者

程式經過**除錯通過,如下所示:

mov r0, tl0

mov r1, th0

clr a

mov r2, a, ;先清零

mov r3, a,

mov r4, a,

mov r5, #16 ;共轉換十六位數

loop:

clr c

mov a, r0 ;從待轉換數的高階移出一位到cy

rlc a

mov r0, a

mov a, r1

rlc a

mov r1, a

mov a, r4 ;送到bcd碼的低端

addc a, r4 ;帶進位加。自身相加,相當於左移一位

da a ;十進位制調整,變成bcd碼

mov r4, a

mov a, r3

addc a, r3

da a

mov r3, a

mov a, r2

addc a, r2

mov r2, a

djnz r5, loop ;共轉換十六位數

;-------至此,已經把th1 tl1中的數字,轉換成bcd碼,送到了r2 r3 r4。

;-------下面,分別存入r4 r3 r2 r1 r0。

mov a, r4

mov b, #16

div ab

mov r1, a

mov r0, b

mov a, r2

mov r4, a

mov a, r3

mov b, #16

div ab

mov r3, a

mov r2, b

ret;完

4樓:匿名使用者

unsigned char code seg_code = ; // a, b, c, d, e, f

是幾就點亮相應的led腳。

5樓:匿名使用者

樓主可以到網上搜尋一下,很多這樣的子程式。在使用時要注意這段子程式佔用了哪些儲存單元,程式的入口和出口分別是什麼。你可以把計數器得到的數值賦給轉換子程式的入口單元,轉換結束後就可以從出口的儲存地址得到結果,然後做一下處理送到數碼管顯示。

這類程式有很多,樓主只要注意它使用了哪些儲存地址即可順利使用。

在51微控制器中,使用組合語言,如何將8位2進位制數轉換成2位16進位制顯示 5

6樓:匿名使用者

太高深了,真沒看懂

難道8位2進位制不是2位16進位制?

是不是要顯示成字元啊?

比如0101_1010,在顯示器上顯示0x5a ?

7樓:匿名使用者

在微控制器組合語言 程式設計中 ,其實 8位2進位制數 就可以直接 看成 2位16進位制數,

只是 與 10進位制數 有轉換關係, 組合語言中 也是通用的 如mov a, #11111111bmov a, #0ffh ; 彙編 中 資料的第一個 數不能以字元開頭

mov a, #255 ; 這 三條語句是相同的

8樓:做而論道

顯示16(或10、或2)進位制數字,需要顯示器,led數碼管、lcd1602,都很常用。

如何顯示?

樓主必須指定顯示器和電路。

9樓:匿名使用者

在微控制器中是可以識別2進位制和16進位制的,直接轉換就可以的如mov a,00110101b;

mov r1,a;

and a,0fh;

mov porta,a;

mov a,r1

swap a;

and a,0fh

mov porta,a;

10樓:匿名使用者

要把8位的,變成兩個4位的二進位制數

高位部分,右移4位即可,

低位部分,對之取與0f,即可

11樓:匿名使用者

將8位2進位制數除以16,商就是2位16進位制資料的高位,餘數是低位。

12樓:朝酒晚舞

分解成高四位、低四位,分別找出顯示**,送到顯示器即可。

順便問一下:你有顯示器嗎?

13樓:匿名使用者

還要看是靜態顯示的,還是動態顯示的。

如何用51微控制器組合語言編寫一個將十六進位制數轉換成十進位制數,並在七段數碼管上顯示出來的程式

14樓:匿名使用者

keyval equ 30h

dat equ 33h

scanled equ 39h

org 0000h

ljmp main

org 001bh

ljmp t1isr ;掃描顯示

org 0030h

main:

mov sp,#5fh

mov tmod,#10h

mov th1,#0ech

mov tl1,#078h

mov 33h,#10h

mov 34h,#10h

mov 35h,#10h

mov 36h,#10h

setb tr1

setb et1

setb ea

mov keyval,50h

loop:

lcall datchg

jb p1.0,loop1

jnb p1.0,$

inc keyval

sjmp loop

loop1:

jb p1.1,loop

jnb p1.1,$

mov a,keyval

dec a

mov keyval,a

sjmp loop

t1isr:

push acc

clr tr1

mov th1,#0ech

mov tl1,#78h

setb tr1

mov dptr,#ledtab

t100:

mov r0,#dat

mov a,scanled

add a,r0

mov r0,a

mov a,scanled

jnz t101

mov p2,#01h

sjmp t1dis

t101:

dec a

jnz t102

mov p2,#02h

sjmp t1dis

t102:

dec a

jnz t103

mov p2,#04h

sjmp t1dis

t103:

mov p2,#08h

t1dis:

mov a,@r0

movc a,@a+dptr

mov p0,a

inc scanled

mov a,scanled

cjne a,#4,t1end

mov scanled,#0

t1end:

pop acc

reti

datchg:

mov a,keyval

mov b,#100

div ab

mov 34h,a

xch a,b

mov b,#10

div ab

mov 35h,a

mov 36h,b

retledtab: ; 共陰極數碼管顯示**表db 3fh,06h,5bh,4fh,66h ;01234db 6dh,7dh,07h,7fh,6fh ;56789end

51微控制器彙編程式二進位制、十進位制、十六進位制數怎麼表示?

15樓:落日之暮

彙編中的2進位制在數值結尾加“b”

10進位制在結尾加“d”(有的編譯器不加字母預設為十進位制)

16進位制在結尾加“h”(有的編譯器不加字母預設為十六進位制,如windows裡面的debug程式)

16樓:亮到掉渣

00010100b

2014h

51微控制器彙編程式二進位制、十進位制、十六進位制數怎麼表示??

17樓:匿名使用者

十進位制 20d

十六進位制 14h

二進位制 10100b

應該是這樣,試一下吧

18樓:匿名使用者

十進位制bai就是0到9這是個數 比如du mov a,#8二進位制就

是01這兩個數

十六進位制是zhi從0到9到a b c d e f 這16個數.a表示10 b表示11 。。dao。。。。。

f表示15就這樣。16進位制後面有帶一個h表示16進位制。比如 mov a #0ffh

19樓:林立秋

真是搞笑,你把這個當成提供答案的工具呀,每個人都問這些奇怪的問題,這個問題是最基本的,你應該不是小學生吧

20樓:匿名使用者

比如說20,用二進位制表示為00010100,十進位制20,十六進位制14h

51微控制器組合語言做16位除法,51微控制器是否能夠完成16位的加減乘除運算

大別山的蝸牛 雙位元組無符號除法程式 r5r2r3r4 r6r7 r2 r3r4 餘數r6r7 入口 r5,r2,r3,r4,r6,r7 占用資源 acc,b,f0 堆疊需求 4位元組 出口 r2 r3,r4,r6,r7,ovndiv42 mov a,r1 push a mov b,00h ndv4...

組合語言在51微控制器中的所有指令有那些

冷月上柵欄 微控制器指令功能一覽表 助記符 說明 mov a,rn e8 ef 暫存器a mov a,direct e5 dircet 直接位元組送a mov a,ri er e7 間接ram送a mov a,data 74 data 立即數送a mov rn,a f8 ff a送暫存器 mov r...

微控制器彙編DA指令什麼用,微控制器組合語言十進位制調整da

胡像貓 微控制器彙編言語da指令,是指十進位制加法運算。是結合加法指令一起用的,例如daa,這條指令是十進位制調整指令,用來在進行十進位制運算 bcd碼 時進行校正的。當兩個bcd碼加法時,01h 09h應該是等於10h,但由於 微控制器的加法指令是二進位制的運算,加完之後得到的結果是0ah,這時就...