如何使用汇编代码实现逻辑门?

时间:2019-05-22 12:36:40

标签: assembly logic microcontroller 8051

我正在准备进行数字系统考试,并且有一个如下的纸质问题:使用汇编代码实现AND和NAND门。该论文没有评分方案,所以我看不出该怎么做。如果有人可以解释这一点,将不胜感激。

enter image description here

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

a)ANL P1^0, P1^1

b)ANL P1^0, P1^1

CPL P1^0

我的想法是,也许应该使用MOV命令将端口引脚的值存储在该命令中使用的变量中,然后再用于在门的输出处输出到P1 ^ 2,但是我我对此不是100%的肯定,也无法解释SJMP命令的输入位置。

1 个答案:

答案 0 :(得分:1)

对于那些感兴趣的人,我现在找到了完整的解决方案。 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

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