首页 > 解决方案 > 如何使用汇编代码实现逻辑门?

问题描述

我正在准备数字系统考试,我有一个过去的试题如下:使用汇编代码实现 AND 和 NAND 门。论文没有标记方案,所以我无法查找如何做。如果有人能解释这一点,将不胜感激。

在此处输入图像描述

我研究了它说要使用的四个命令,我知道 ANL 执行 AND 操作,而 CPL 执行 NOT 操作。但是我不确定如何使用其他命令来实现这些,并且由于这个问题值得 10 分,每个门 5 分,我认为仅仅编写这样的单个命令就足够了:

一个)ANL P1^0, P1^1

b)ANL P1^0, P1^1

CPL P1^0

我的想法是,也许应该使用 MOV 命令将端口引脚的值存储在一个变量中以供命令使用,然后再次用于在门的输出处输出到 P1^2,但我不是100% 确定这一点,它也没有解释 SJMP 命令的来源。

标签: assemblylogicmicrocontroller8051

解决方案


对于那些感兴趣的人,我现在找到了完整的解决方案。C 用于保存临时值,可以在命令中使用引脚。

对于与门:

loop: MOV C, P1^0     ; Assign value on pin 1.0 to C
      ANL C, P1^1     ; Perform AND and store result in C
      MOV P1^2, C     ; Assign new value of C to output pin
      SJMP loop       ; Jump to top of statement and run again

对于 OR 门,使用 ORL 而不是 ANL。对于 NOR 或 NAND,在复制到输出引脚之前使用 CPL 命令反转 C。


推荐阅读