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 ...