要求汇编:用“与”运算判断某8位二进制数是奇数还是偶数个1.(单片机作业……)

问题描述:

要求汇编:用“与”运算判断某8位二进制数是奇数还是偶数个1.(单片机作业……)
1个回答 分类:数学 2014-09-28

问题解答:

我来补答
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,自己再单独实现以下吧
 
 
展开全文阅读
剩余:2000
上一页:解题方法 技巧
下一页:过程3