assembly - 如何使用汇编代码实现逻辑门?
问题描述
我正在准备数字系统考试,我有一个过去的试题如下:使用汇编代码实现 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 命令的来源。
解决方案
对于那些感兴趣的人,我现在找到了完整的解决方案。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。
推荐阅读
- javascript - TouchableWithoutFeedback 禁用内部的按压组件
- sql - 如何根据 SQL Server 查询中的日期返回下一个后续记录?
- flutter - 如何在颤动中制作响应式容器
- javascript - 在代码中包含客户端 ID 和客户端密码是否存在安全风险?
- python - 关于python中的贪婪正则表达式
- python - Python/pandas - Merge rows of data with same column id
- javascript - 刷新没有 .load 的 div 内容
- javascript - 如何计算平均字符宽度
- python - Python:如何将 unicode 更改为字符串
- tensorflow - 无法使用 SparkNLP 预训练的 T5Transformer,执行器失败并出现错误“图中没有名为 [encoder_input_ids] 的操作”