爱问知识人 爱问教育 医院库

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

首页

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


        

提交回答

全部答案

    2018-05-05 19:08:47
  •   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,自己再单独实现以下吧。

    h***

    2018-05-05 19:08:47

类似问题

换一换
  • 数学 相关知识

  • 教育培训
  • 教育科学
  • 教育考试

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):