进行数据比较 -单片机编程

汇编语言编程,进行数据比较。

变量 Y、Z 分别存放在片内数据存储器的 50H 和 51H 单元。
当 Y > 200时,给变量 Z 赋值 10;
当 Y <= 100时,给 Z 赋值 40;
当 100 < Y <= 200 之间时,给 Z 赋值 80。

求代码,谢谢!!
悬赏分:5 - 解决时间:2009-10-31 18:50
;---------------------------------------------
最佳答案:

利用减法,然后判断标志。

程序如下:

    MOV  A,  50H
    CLR  C
    SUBB A, #100
    JC   X_D_100       ;不够减转移
    JZ   X_D_100       ;相等也转移
;----------------------------------
    MOV  A,  50H
    CLR  C
    SUBB A,  #200
    JZ   Z_100_200     ;等于200转移
    JNC  D_D_200       ;大于转移
;----------------------------------
Z_100_200:             ;小于等于200
    MOV  51H, #80
    RET
;----------------------------------
X_D_100:               ;小于等于100
    MOV  51H, #40
    RET
;----------------------------------
D_D_200:               ;大于200
    MOV  51H, #10
    RET

;完
;---------------------------------------------
回答者:  做而论道 - 八级   2009-10-18 16:15
原文网址:http://zhidao.baidu.com/question/121935706.html
;---------------------------------------------
后记:

比较大小时,还可以使用 CJNE 指令,比使用 SUBB 指令要节省一条 CLR  C 指令。
并且还要少读出原始的数据。

上述程序可以改写为:

    MOV  A,  50H
    CJNE A, #101, $ + 3
    JC   X_D_100       ;不够减转移
;----------------------------------
    CJNE A, #201, $ + 3
    JNC  D_D_200       ;大于200转移
;----------------------------------
Z_100_200:             ;小于等于200
    MOV  51H, #80
    RET
;----------------------------------
X_D_100:               ;小于等于100
    MOV  51H, #40
    RET
;----------------------------------
D_D_200:               ;大于200
    MOV  51H, #10
    RET

;完
仅用了两次比较、两次条件转移,即可满足要求。
;---------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值