标题: 请问下面两段程序有什么区别程序 菜鸟求教51系列编程 [打印本页]

作者: 13163340127    时间: 2017-6-16 15:19
标题: 请问下面两段程序有什么区别程序 菜鸟求教51系列编程
请问下面两段程序有什么区别程序1,
ORG  0200H      MOV  A,   40H
      MOV  R0, 41H
      CJNE  A, 41H, GP2
GP1:MOV    50H,  A
          MOV    51H,  R0
          SJMP   GP3
GP2:   JNC   GP1
          MOV  51H,  A
          MOV  50H,  R0
GP3:SJMP   GP3
           END
程序2,ORG  0200H

      MOV  A,40H
      CJNE A , 41H, GP2
GP1:MOV    50H,  A
          MOV    51H,  41H
          SJMP   GP3
GP2:JNC   GP1
          MOV  51H,  A
          MOV  50H,  41H
GP3:SJMP   GP3
           END

我想知道这两段程序都是正确的吗?它们的功能是否一样?,有错误的话 是那个地方?为什么?

作者: 不倒翁.WZT    时间: 2017-6-17 07:34
标题: RE: 请问下面两段程序有什么区别程序 菜鸟求教51系列编程
单从这两段程序看,结果完全一样,第一段程序多了一个R0,这里的R0只起过渡作用。
      ORG  0200H              ;程序起始地址为0200H
      MOV  A,  40H            ;将地址为40H的寄存器中数据传送给累加器A
      MOV  R0, 41H         ;将地址为41H的寄存器中数据传送给工作寄存器R0
      CJNE  A, 41H, GP2     ;将累加器A中数据与工作寄存器R0进行比较,如果不等跳转到GP2执行
GP1:MOV    50H,  A       ;将累加器A中数据传送给地址为40H的寄存器
         MOV    51H,  R0    ;将工作寄存器R0中数据传送给地址为51H的寄存器
         SJMP   GP3           ;跳转到GP3 执行
GP2:  JNC   GP1              ;进位标志位Cy中数据等于0,则跳转到GP1执行
         MOV  51H,  A        ;将累加器A中数据传送给地址为51H的寄存器
         MOV  50H,  R0      ;将工作寄存器R0中数据传送给地址为41H的寄存器
GP3:SJMP   GP3            ;跳转到GP3 执行
         END                    ;程序结束


程序2
      ORG  0200H              ;程序起始地址为0200H
      MOV  A,40H              ;将地址为40H的寄存器中数据传送给累加器A
      CJNE  A , 41H, GP2     ;将累加器A中数据与工作寄存器R0进行比较,如果不等跳转到GP2执行
GP1:MOV  50H,  A         ;将累加器A中数据传送给地址为40H的寄存器
         MOV  51H, 41H      ;将地址为41H中数据传送给地址为51H的寄存器
         SJMP  GP3            ;跳转到GP3 执行
GP2:JNC  GP1              ;进位标志位Cy中数据等于0,则跳转到GP1执行
         MOV  51H,  A       ;将累加器A中数据传送给地址为51H的寄存器
         MOV  50H,  41H    ;将地址为41H中数据传送给地址为50H的寄存器
GP3:SJMP   GP3            ;跳转到GP3 执行
         END                    ;程序结束

作者: shuisheng60    时间: 2019-2-8 01:33
不倒翁.WZT 发表于 2017-6-17 07:34
单从这两段程序看,结果完全一样,第一段程序多了一个R0,这里的R0只起过渡作用。
      ORG  0200H       ...

不错,还有汇编玩的溜的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1