汇编中 相等转移如何实现呢

[复制链接]
5049|11
 楼主| wyhkerry 发表于 2008-8-1 14:12 | 显示全部楼层 |阅读模式
各位高手,汇编中,相等转移怎么实现啊?比如 当寄存器A的值为#03h时候,转移到changdec 有么好的指令吗  谢谢 
我是这样实现的

  MOV R1,#0ffH
       MOV R2,#0ffH
       MOV R3,#10
GAINWAITAX:
    MOVX A,@DPTR            
     ANL A,#03H
     CLR C
     SUBB A,#03H
     JNC  GAININTERX
         jb gainbit,gainwaita0X
        DJNZ R1,GAINWAITAX
        MOV R1,#255
        DJNZ R2,GAINWAITAX
        mov r2,#0ffh
        djnz r3,gainwaitaX
        setb gainbit
        CLR EX0
gainwaita0X:         
    clr gainbit
        LJMP LOOP    






可以吗 
xwj 发表于 2008-8-1 14:18 | 显示全部楼层

用XRL,再JZ

 楼主| wyhkerry 发表于 2008-8-1 14:46 | 显示全部楼层

我用subb 可以吗?

我用subb 可以吗?
救火车 发表于 2008-8-1 15:07 | 显示全部楼层

多年不用汇编了,好像是这么写的。

CJNE A,R1,loop
JMP deng
loop:
;不等的程序
deng:
;相等的程序
spqgey 发表于 2008-8-1 15:28 | 显示全部楼层

lz正确

subb 完全可以
cgkdxx 发表于 2008-8-1 15:49 | 显示全部楼层

cjne a, #xxh, adr1;

a=xxh 跳到adr1执行
xwj 发表于 2008-8-1 15:55 | 显示全部楼层

LS错,是不等于才会 跳到adr1执行

51的指令很灵活周到的,能实现的方法太多了,

光是CJNE加上JC就可以区别出大于、小于、等于等各种情况

相等的处理语句放在CJNE的下一行即可
ayb_ice 发表于 2008-8-1 15:56 | 显示全部楼层

XRL,CJNE...

HWM 发表于 2008-8-1 16:01 | 显示全部楼层

咳,都忘本了。CJNE+JC处理>,=,<都是八十年代玩的东西了。

5880527 发表于 2008-8-1 17:29 | 显示全部楼层

SUBB过后用JZ就可以了

lyjian 发表于 2008-8-1 18:12 | 显示全部楼层

用CJNE指令最好,其他逻辑或减指令会破坏A内容,还麻烦

        cjne A,#03h,not_equ
        jmp  changdec(或者不用跳,直接把changdec处程序放在这里就行了)
not_equ:

changdec:

xrl和subb会破坏A的内容,操作之前还得现保存A的内容,操作完后又得恢复。
用subb前还得清C标志,麻烦。


5880527 发表于 2008-8-1 18:40 | 显示全部楼层

LS说的比较有道理

您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

92

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部