一、8255是干什么的
8255是一块芯片,用于管理CPU与外设之间数据的输入和输出。
二、8255可以怎么管理输入输出
8255有三个端口:A口,B口和C口。它们的长度都是8位的。都可以用作数据的输入或输出。
8255有三种工作方式来管理输入输出:方式0、方式1和方式2.
1.方式0——基本输入/输出方式
一个输入/输出过程的最简单形式是这样的:以输入为例,首先设定8255端口的工作状态为输入,数据一来到端口,就被传送给CPU。
当然并不是所有的输入输出过程都这么简单。例如,有些时候只有当外设处于可以接受数据的就绪状态时,才可以把数据发送给外设。那么这时就需要把外设的状态输出端输入进8255芯片,判断这个端的状态从而决定是否发送数据给这个外设。——这称为查询工作方式。8255的C口就可以实现这个功能。后面我们可以看到具体的例子。
2.方式1——选通输入/输出方式
前面提到,有些时候只有当外设处于可以接受数据的就绪状态时,才可以把数据发送给外设。这样就产生了一个问题:CPU源源不断地向8255传数据,外设没工夫接。虽然外设可以通过C口告知8255,CPU再检测C口状态决定是否传送数据。但CPU业务繁忙,哪有功夫等你这个大爷一样的外设?所以更好的解决办法,就要用到中断的概念,也就是说:当外设可以接收/发送数据时,通过8255向CPU发送一个中断信号。CPU接收到中断信号后,中断当前正在执行的程序,进行输入输出操作,完成后再返回现场继续原先的程序。——这称为中断工作方式。这一系列控制信号还是通过C口来传送的。
❷ 用汇编语言编写七段数码管显示1~9,用8255A接口芯片,用中断方式控制。
在进行实验时,我们使用了汇编语言编写了一段程序,用于在七段数码管上显示1至9的数字。程序中,我们将数据段中的端口地址进行了调整,以匹配计算机中8255A接口芯片的端口地址。从键盘接收数字后,程序会将其转换为相应的段码,并在数码管上进行显示。
首先,程序定义了数据段,并将端口地址进行了相应的设置。ioport代表8255A芯片的端口地址,io8255a和io8255b分别代表A口和B口的地址。同时,还定义了一个包含10个段码的数组led,用于存储0至9的七段数码显示代码。数组mesg1则用于显示输入提示信息。
程序从键盘接收用户输入的数字,并将其与0和9进行比较,以确保输入值在有效范围内。然后,程序将输入的ASCII码减去30H,得到相应的十进制数值,并将其与段码数组进行索引匹配。最后,通过8255A的A口输出相应的段码,实现数码管的显示。
在程序中,我们使用了中断方式来控制数码管的显示过程。在输入数字后,程序会不断循环,直到用户再次输入数字。当输入无效数字时,程序会继续等待有效的输入。当用户输入有效数字后,程序会将其转换为相应的段码,并在数码管上进行显示。
此外,程序还通过设置8255A的A口为输出方式,确保数码管能够正确显示输入的数字。在输出段码时,程序通过8255A的A口将段码发送到数码管,实现数字的显示。
在程序的最后,通过设置AH为4CH并调用INT 21H,返回到DOS系统,结束程序的执行。
整个程序通过汇编语言实现,使用了中断方式来控制数码管的显示过程,同时对输入数字进行了有效性验证。通过这种方式,可以实现1至9数字的正确显示。