![07698a9f3cc9c680b2ef8d903417df96.png](https://i-blog.csdnimg.cn/blog_migrate/2d0972a293b2e1e29ca1fcabd786bff0.jpeg)
1、8255A有哪几种工作方式?有何差别?
- 方式0:基本输入输出方式,适用于无条件传送和查询方式,端口A、B、C均可使用;
- 方式1:选通输入输出方式,适用于查询和中断方式,端口A、B可以使用;
- 方式2:双向选通传送方式,适用于与双向传送数据的外设,适用于查询和中断方式,只有端口A可以使用。
2、8255A有哪些编程命令字?其命令格式及每位的含义是什么?请举例说明。
(1)工作方式选择控制字:可使8255A的3个数据端口工作在不同的方式。
![201d96d5ebfac2ae16cd505439f3807e.png](https://i-blog.csdnimg.cn/blog_migrate/d70645c769fe4909392fbce153395451.jpeg)
![d688fb4800c2f447a5711200cf672ce4.png](https://i-blog.csdnimg.cn/blog_migrate/f09d47b6bddfe7d21c12f04766628cc6.jpeg)
(2)C端口按位置1/置0控制字:可使C端口中的任何一位进行置位或复位。
![1d378647035fc6d44178716dbe9c597b.png](https://i-blog.csdnimg.cn/blog_migrate/73bee6919583d3ad6922e6cc62cd015c.png)
![dd8c3b29b18fbef198eefaf5ee81c413.png](https://i-blog.csdnimg.cn/blog_migrate/8c14e6b40bc0301b0fe388dea64ffa8f.jpeg)
3、假定8255A的端口地址分别为208H~20FH,编写下列情况的初始化程序:
(1)将A口、B口设置成方式0,端口A和C口作为输入口,B口作为输出口。
因为端口地址为208 H~20F H,对于8086系统,CPU在进行数据传送时,总是将低8位数据送往偶地址端口,将高8位数据送往奇地址端口,所以8255A的A0端口应该连地址总线的A1,8255A的A1端口应该连地址总线的A2,而地址总线的A0永远是0来保证偶地址。
所以208 H = 0000 0010 0000 1000 B,20F H = 0000 0010 0000 1111 B,所以根据下表推测,写控制字的地址应该是 0000 0010 0000 1110 B = 20E H。
![4402cf86ed5abf31b16e9fc7a184931b.png](https://i-blog.csdnimg.cn/blog_migrate/83eb41cbd662a7625024d3dc83058742.png)
MOV DX, 20EH
MOV AL, 99H ; 1001 1001 B
OUT DX, AL
(2)将A口设置成方式1输入口,PC6、PC7作为输出端;B口设置成方式1,输入口。
MOV DX, 20EH
MOV AL, 0B6H ; 1011 011X B
OUT DX, AL
4、8255A能实现双向传输功能的工作方式为 方式2。
5、在Intel 8255A中可以进行按位置位/复位的端口是 端口C。
6、8255A内部包括两组控制电路,其中A组控制 端口A和端口C的高4位(PC7~PC4),B组控制 端口B和端口C的低4位(PC3~PC0)。
7、若8255A的端口A定义为方式0、输入,端口B定义为方式1、输出,端口C的上半部分定义为方式0、输出,试编写初始化程序(端口地址为200H~203H)。
MOV DX, 203H
MOV AL, 94H ; 1001 010X B
OUT DX, AL
8、端口A工作于方式2、输出,要求发两个中断允许,即PC4和PC6均需置位,端口B工作于方式1、输入,要求使PC2置位来开放中断,试编写初始化程序(端口地址为200H~203H)。
MOV DX, 203H ; 8255A控制口
MOV AL, 0C6H ; 11X0 0110 B
OUT DX, AL
MOV AL, 09H ; 0000 1001 B,PC4置位
OUT DX, AL
MOV AL, 0DH ; 0000 1101 B,PC6置位
OUT DX, AL
MOV AL, 05H ; 0000 0101 B,PC2置位
OUT DX, AL