用組合語言列出8位二進位制數表示的十進位制數的個十百位。此微控制器彙編指令無乘除和取餘

2022-07-07 10:22:39 字數 4323 閱讀 2541

1樓:做而論道

;mov  30h, #255   ;百位mov  31h, #255   ;十位

mov   a,  n   ;8位二進位制數lp1:

inc   30h

clr   c

subb  a, #100

jnc   lp1

add   a, #100

lp2:

inc   31h

clr   c

subb  a, #10

jnc   lp2

add   a, #10

mov   32h, a  ;個位

retend

2樓:

//採用減法實現除法運算

#include

extern unsigned char emudiv10(unsigned char);

extern unsigned char emumod10(unsigned char);

void main(void)

unsigned char emudiv10(unsigned char x1)

return tmp;

}unsigned char emumod10(unsigned char x1)

要求彙編:用「與」運算判斷某8位二進位制數是奇數還是偶數個1。 (微控制器作業……)

3樓:楊必宇

二進位制數只是正數的話,那百麼只看末尾的數字就行了,如果是0,那麼就是偶數,如果是1,那麼就是奇數。

因為,除過末尾數字,其他數字都是當前位乘以2^n後的結果,那麼不管是偶數還是奇數,只要乘了2,都會是偶數,偶數加度偶數還是偶數。因此,只要判問斷末尾數字的奇偶就行了,當然,如果二進位制數是負數的話,那麼就得轉化成原碼再看。

擴充套件資料

常用的有二進位制、八問進製、十進位制、十六進製制。任何資料在計算機記憶體中都是以二進位制的形式存放的。二進位制數是以2為計算單元,滿內2進1位的數;八進位制數是以8為計算單元,滿8進1位的數。

對於任何乙個數字,都可以用不同的容進製來表示,比如,十進位制數12,用二進位制表示為1100,用八進位制表示為14,用十六進製制表示為0xc。

4樓:勤奮的哈七八答

假設r3中存放待判數值,r4存放臨時結果。如果暫存器不足,就用記憶體代替。 mov r0,1,mov r1,0 //1個數計數器,mov r2,0 //迴圈次數,共迴圈8次。

label_loop,cmp r2,8 //迴圈次數比較,be loop_end //如果已經迴圈8次則跳轉到loop_end。

and r4,r3,r0 //r3,r0按位與運算,結果存入r4,cmp r4,0 //依次取出相應的位與0比較,be loop_next //若相等則跳轉到loop_next,否則計數器加1再跳轉inc r1,b loop_next//到這裡結束了,r1如果等於1那麼有奇數個「1」,否則偶數個「1」。

由於共有8位數,最多0b1000個"1",只有r1最低位為1時才是奇數個「1」,微控制器中似乎沒有三個運算元的指令。

5樓:千葉郎君

arm的彙編還可以,微控制器的沒學過。

以下是偽**,翻譯成微控制器彙編即可。

//假設r3中存放待判數值,r4存放臨時結果。如果暫存器不足,就用記憶體代替。

mov r0,1

mov r1,0 //1個數計數器

mov r2,0 //迴圈次數,共迴圈8次

label_loop:

cmp r2,8 //迴圈次數比較

be loop_end //如果已經迴圈8次則跳轉到loop_end

and r4,r3,r0 //r3,r0按位與運算,結果存入r4

cmp r4,0 //依次取出相應的位與0比較

be loop_next //若相等則跳轉到loop_next,否則計數器加1再跳轉

inc r1

b loop_next

loop_next:

inc r2

shl r0 //r0左移一位,以便取出下一位

b label_loop

loop_end:

and r1,r1,1 //r1中存放了"1"的個數

cmp r1,1

...//到這裡結束了,r1如果等於1那麼有奇數個「1」,否則偶數個「1」

由於共有8位數,最多0b1000個"1",只有r1最低位為1時才是奇數個「1」

大概微控制器中似乎沒有三個運算元的指令, 像and r4,r3,r0,自己再單獨實現以下吧

組合語言程式設計:將位元組變數x中的8位無符號二進位制數轉換成十進位制數,存入bug開始的位元組儲存單元

6樓:

組合語言程式設計:將位元組變數x中的8位無符號二進位制數轉換成十進位制數,存入bug開始的位元組儲存單元

匿名 19:37

xor ah,ah

mov al,x

mov bx,offset bug

mov cl,100

div cl

add al,30h

mov [bx],al

inc bx

mov al,ah

xor ah,ah

mov cl,10

div cl

add ax,3030h

mov [bx],al

inc bx

mov [bx],ah

微控制器組合語言 求乙個演算法將十位二進位制數按要求轉化為四位十進位制數 20

7樓:做而論道

除以 10,餘數就是個位數。

再除以 10,餘數就是十位數。

……即可。

用組合語言編寫乙個程式:輸入乙個八位二進位制數,用除十取餘法求出十進位制數,並輸出

將乙個8位二進位制數轉換為10進製的微控制器程式,越簡單越好

8樓:匿名使用者

不理解問題,能說一下這段程式的使用背景嗎? 10進製數在記憶體中就是以二進位制數形式存放的,根本不用轉換。

9樓:匿名使用者

;51微控制器組合語言

;入口20h乙個8位二進位制數

;出口21h22h4位10進製bcd碼

bcd:mov 21h,#00h

mov 22h,#00h

jnb 20h.7,bcd1

mov 22h,#01h

mov 21h,#28h

bcd1:jnb 20h.6,bcd2

mov a,#64h

acall add

bcd2:jnb 20h.5,bcd3

mov a,#32h

acall add

bcd3:jnb 20h.4,bcd4

mov a,#16h

acall add

bcd4:mov a,20h

anl a,#0fh

da a

acall add

retadd:add a,21h

da a

mov 21h,a

clr a

addc a,22h

mov 22h,aret

div微控制器組合語言啥意思?如何算?

10樓:億欲暨幣

div在彙編裡是除法指令,例如div a,b;意思是將累加器a中的無符號8位二進位制數除以暫存器b中的無符號8位二進位制數,商的整數部分存放在累加器a中,餘數部分存放在暫存器b中。

11樓:匿名使用者

div ab

表示將a除以b,商放到a裡,餘數放到b裡

例如mov a,#09h

mov b,#04h

div ab

;此時,a的值為2,b的值為1好運

12樓:電子工程自學者

資料相除指令.

格式是:div a,b

結果好象是 a為得數,b為餘數,你自己看書對對吧.

13樓:匿名使用者

div src;

如果src是8位,ax除以src,商在al,餘數在ah。

如果src是16位,dx:ax除以src,商在ax,餘數在dx。

14樓:

div ab

a除以b,商放在a裡,餘數在b裡。

c語言二進位制表示,C語言中二進位制數字的字首是什麼?

正數,原碼補碼一樣。負數 除符號位,每位取反,然後加1。所以 1的16位表示為 11111111 11111111 有符號的負整數在記憶體中以二進位制補碼的形式存放原始碼是 10000000 00000001按位取反 符號位不變 11111111 11111110 1得到 1的補碼 11111111...

用二進位制數表示四位十進位制數最少需要多少位

最大的四位十進位制數是9999.2 n 9999 所以用二進位制數表示四位十進位制數最少需要14位。最少需要14位。望採納,謝謝 表示乙個四位十進位制數,至少需要多少位二進位制位數?乙個位元組由 復8個二進位制位組成,表示一制個四位十進位制數至少需要10位二進位制位。位元組 byte 是計算機資訊技...

用VHDL語言設計16位二進位制資料比較器

library ieee use ieee.std logic 1164.all use ieee.std logic unsigned.all use ieee.std logic arith.all entity source is port a,b in std logic vector 15...