问题–将8255与8085微处理器接口,并编写汇编语言程序以在端口A中显示99,在端口B中显示1的补码,在端口C中显示2的补码99。如果端口地址分别为30H,32H和33H。
例子 –
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
算法 –
- 构造控制字寄存器。
- 累加器A的输入值。
- 在端口A中显示A的值。
- 现在,将计算A的1的补数,并且结果将显示在端口B中。
- 现在,通过将1的A的补数加1来计算A的2的补数。结果显示在端口C中。
程序 –
Mnemonics | Comments |
---|---|
MVI A, 80 | A<–80 |
OUT 33 | Control Register<–A |
MVI A, 99 | A<–99 |
OUT 30 | Port A<–A |
CMA | 1’s complement of A |
OUT 31 | Port B<–A |
INR A | A<–A+1 |
OUT 32 | Port C<–A |
RET | Return |
解释 –
- .MVI A,80:控制寄存器的值为80。
- OUT 33:将A的值放入端口控制寄存器的端口号33H中。
- .MVI A,99: A的值等于99。
- OUT 30:显示30H中的A值,它是端口A的端口号。
- CMA:计算A的1的补码。
- OUT 31:在31H中显示A的1的补码,这是端口B的端口号。
- INR A:A的1的补码递增1,即计算A的2的补码。
- OUT 32 :在32 H中显示A的2的补码,这是端口C的端口号。
- RET:回来。