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,自己再單獨實現以下吧
微控制器程式設計習題,求教幾道微控制器程式設計題
我可以給你參考一下。硬體連線 p0口通過10k的排阻,連線到vcc 5v,這樣使po口上拉。vcc 5v端連線8個發光二極體串聯一個1k的電阻到p0口各個8個i o口上,即當i o口為低電平,燈變亮。這樣設計可以使電源的功耗比較低。軟體程式設計 在keil中編寫,除錯通過 include 燈的變化內...
微控制器與c語言,微控制器與c語言
這樣.假設三個按鍵分別連在微控制器p1.0 p1.1 p1.2三個io口上,按下去為低電平,不按為高電平。include 你是什麼微控制器?自己把標頭檔案包含好哦。define keymask 0x07 對應二進位制0000 0111,作用是取出p1連結有按鍵的最低三位 int key 記錄按鍵 i...
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...