汇编语言编程,进行数据比较。
变量 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
;完
仅用了两次比较、两次条件转移,即可满足要求。
;---------------------------------------------