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
广告