我正在研究 8051 汇编器,我想知道一个命令可以帮助我比较两个端口位并确定它们是否相等,所以我搜索了它并发现 CJNE 可能有用并尝试过将其放入如下程序中...我不确定我是否走在正确的道路上,也许 Xnor 命令更好,但我找不到它的命令,并且由于某种原因我无法测试它。
ORG 00H
MOV R0 ,#01H
MOV R1, #00H
CJNE R0,#00H,LOOP
LOOP: MOV C, P1.0
ANL C,P3.0
MOV P2.0,C
SJMP LOOP
END
如果我想知道一个端口位是否大于或小于其他端口位,我可以使用 ANL 命令吗?
最佳答案
不是 8051 的专家,但比较后,如果相等(分支 EQ 或 NE)则设置零标志,如果大于则设置进位标志(CS 或 CC 用于设置或清除)。在CJNE(比较,不相等则跳转)之后,您可以使用JC [进位集的目标 - 即>]检查进位标志。无需进行第二次比较 - 标志仍将从第一次比较开始设置。
CJNE R0,#00H,NOTEQUAL
; equal code goes here, then branch out
NOTEQUAL:
JC GREATER
; less than code goes here, then branch out
GREATER:
; greater code goes here
JNC 是未设置进位标志的指令 - 即它小于或等于,但您已经消除了等于,因此它将小于。
关于assembly - 如果两个端口位相等、大于或小于彼此,如何比较它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36906950/