微控制器程式設計運用「與」運算,判斷某8位二進位制數是奇數還是偶數個

2021-08-11 06:06:22 字數 3168 閱讀 3409

1樓:生活如歌

51微控制器可以不用與運算,只接判斷,用p(奇偶校驗位),如果非得用與運算只能這樣:

mov a,#0ffh

anl a,#data;某數)

jnb p,rel

2樓:_小顧

mcs-51微控制器,奇偶校驗位p在程式狀態字psw(特殊功能暫存器)裡,psw.0就是p。

p奇偶校驗位。它用來表示alu運算結果中二進位制數位「1」個數的奇偶性。若為奇數,則p=1;否則為0。運算結果有奇數個1,p=1;運算結果有偶數個1,p=0.

3樓:匿名使用者

//假設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」

4樓:斬丨我了個去

char par

int i,odd;

for(i=0;i<8;i++)

微控制器中,用c語言怎麼實現一個8位二進位制數的高四位與低四位的交換,例如0xfe,怎麼變成0xef

5樓:還是呼喚

好像沒有直接的語句實現:應該可以通過左移和右移來實現把把!

如:a=0xfe;

a=(a>>4) | (a<<4);

6樓:匿名使用者

& 按位與

| 按位或

^ 按位異或

~ 取反

<< 左移

>> 右移

7樓:崔運生

b=a<<4;

a>=4;

a|=b;

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

8樓:楊必宇

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

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

擴充套件資料

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

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

9樓:勤奮的哈七八答

假設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」,微控制器中似乎沒有三個運算元的指令。

10樓:千葉郎君

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,自己再單獨實現以下吧

微控制器與PC機的序列通訊問題,微控制器與微控制器之間如何進行序列通訊?

define com1 0 define data ready 0x0100 define true 1 define false 0 define settings 0xe0 0x00 0x00 0x03 void main a bioscom 2,0,com1 0x00ff printf a x...

51微控制器程式設計題微控制器P1 0 1 7口接發光二極體(愛心圖樣)試編寫流水燈的彙編程式使發光二極體逐個亮

啟動入口 org 0000h 復位啟動 ljmp start org 000bh t0中斷 ljmp t0int org 0100h ljmp start 主控程式 start mov sp,80h 初始堆疊值mov tmod,01h 定時器0工作於方式1,50毫秒 12.000mhz mov th...

51微控制器與430微控制器的區別,430微控制器與51微控制器有什麼區別

首先,89c 51 單片 1 51單片 bai機是8位單 片機,du430是16位微控制器zhi。2 51微控制器dao效能和功耗上都不如版430微控制器,430微控制器被認權 為是現在功耗最低的微控制器。3 51微控制器主要用在一些比較簡單的工業裝置控制上,430主要用在一些低功耗手持裝置上 4 ...