4 比特 ALU 模拟


此外,我们使用基于逻辑控制器的接口,仅用 8085 汇编语言编写汇编程序,从而模拟 4 比特 ALU。算术逻辑单元始终执行加法、减法、AND 运算或 OR 运算,具体取决于要执行所需运算的 4 比特输入。

对于算术逻辑单元的模拟,所有的终端输入和输出均由 8255 的端口提供,如下图所示。

  • 端口 B 中范围从 7 到 4 的引脚用作 X3-0 的输入;
  • 端口 B 中范围从 3 到 0 的引脚用作 Y3-0 的输入;
  • 端口 C 中的引脚 7 和 6 用作 S1 和 S0 输入;
  • 端口 A 引脚中的 3-0 用作输出 Z3-0;
  • 端口 A 的引脚 4 用作加法和减法运算中的 Cy 输出。
  • S1 和 S0 输入确定 ALU 执行的运算,如下表所示。
S1
S0
Z
0
0
X + Y
0
1
X – Y
1
0
X AND Y
1
1
X OR Y

此处 S1 和 S0 是输入,Z 是输出。



示例程序代码

; FILE NAME ALU_PROG1.ASM
ORG C000H
PA EQU D8H
PB EQU D9H
PC EQU DAH
CTRL EQU DBH

MVI A, 10001010B
OUT CTRL ; Configure 8255 ports
LOOP: IN PB ; Input X and Y values through Port B
MOV B, A

ANI 0FH
MOV C, A ; C will now have Y input

MOV A, B
ANI F0H
RRC
RRC
RRC
RRC
MOV B, A ; B will now have X input

IN PC ; Read S1 and S0 values from Port
ANI 11000000B

RLC
RLC ; LS 2 bits of A will now have S1 and S0

CPI 00H
JZ ADD ; If S1 = 0 and S0 = 0 do Add operation

CPI 01H
JZ SUB ; If S1 = 0 and S0 = 1 do Subtract operation

CPI 02H
JZ AND ; If S1 = 1 and S0 = 0 do AND operation
OR: MOV A, B
ORA C
JMP DISP

ADD: MOV A, B
ADD C
JMP DISP

SUB: MOV A, B
SUB C
JMP DISP

AND: MOV A, B
ANA C
DISP: OUT PA
JMP LOOP


更新于:2019 年 7 月 30 日

1K+ 查看次数

开启你的职业生涯

完成该课程,获得认证

开始学习
广告