8255与8085微处理器接口实现加法
在这个程序中,我们将学习如何使用端口接收数据并将结果发送到端口来执行加法。
问题陈述
编写8085汇编语言程序,实现8085和8255之间的接口。端口A和端口B分别保存两个值,从端口A和B获取数字,将它们相加,并将结果发送到端口C。
讨论
任务很简单。首先,我们需要设置8255芯片的控制字寄存器。之后,我们将从端口A和B获取输入,将内容相加,并将其发送到端口C。
控制字寄存器如下所示。它保存92H。
位位置 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
值 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
控制寄存器的位含义如下:
我们将92H加载到A中。D7为1,因此它工作在IO模式;(D6和D5)为00,表示端口A处于模式1;D4=1,因此端口A接收输入;(D3和D0)为0和0,因此端口C不工作;D2=0,因为B也处于模式0;D1=1,因为它充当输入端口。
在指令中,我们将看到**OUT 83**。这里83是控制寄存器端口的端口号。类似地,**IN 80**表示从端口地址为80的端口A获取输入。**IN 81**表示也从端口B获取输入。**OUT 82**表示我们将结果发送到端口C。
输入
端口 | 数据 |
---|---|
A | 23 |
B | 5C |
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 3E, 92 | | MVI A,92 | 将控制字加载到A中 |
F002 | D3, 83 | | OUT 83 | 将输出发送到控制寄存器 |
F004 | DB, 80 | | IN 80 | 从端口A获取第一个输入 |
F006 | 47 | | MOV B,A | 将A存储到B |
F007 | DB, 81 | | IN 81 | 从B获取第二个输入 |
F009 | 80 | | ADD B | 将B与A相加 |
F00A | D3, 82 | | OUT 82 | 将输出发送到C |
F00C | C9 | | RET | 返回 |
输出
端口 | 数据 |
---|---|
C | 7F |
广告