8259是一种中断控制器,常用于微机系统中管理中断请求。在8086系统中,2片8259芯片可以通过级联方式扩展中断线,以处理更多的中断源。以下是根据题目内容详细解释的知识点:
1. **硬件电路设计**:
在这个例子中,主片8259的端口地址为20H和21H,从片为A0H和A1H。主片连接到CPU的中断请求线,从片的IR2连接到主片的IR3。级联连接意味着从片的中断请求会通过主片传递给CPU。
2. **8259初始化程序**:
初始化8259时,需要发送初始化命令字(ICW)来配置控制器。主片初始化程序包括:
- ICW1:设置ICW1(00010001B)以指定4个ICW将被发送。
- ICW2:设置ICW2(08H)为主片分配中断类型码起始地址。
- ICW3:设置ICW3(00000100B)指明从片地址。
- ICW4:设置ICW4(00011101B)配置特殊全嵌套模式。
从片的初始化类似,但ICW2设置为70H,ICW3设置为00000010B。
3. **中断屏蔽字(OCW1)**:
写入中断屏蔽字用于开启或关闭特定中断。例如,为主片开放IR3中断,需要读取21H端口的当前屏蔽字,然后AND操作11110111B,清除IR3位,再写回21H端口。
4. **中断向量设置**:
中断向量包含中断服务程序的段地址和偏移地址。使用`CLI`关闭中断,然后使用`INT 21H`服务调用来设置中断向量。这里,将`MY_INT3`服务程序的段地址和偏移地址写入中断向量表,然后使用`STI`重新打开中断。
5. **中断处理程序**:
中断处理程序通常包含以下步骤:
- `STI`:开启中断,允许嵌套中断。
- 保存现场:如`PUSH AX`和`PUSH BX`,保存可能被中断处理程序修改的寄存器。
- 中断处理:这部分代码因具体应用而异,这里省略。
- 恢复现场:使用`POP BX`和`POP AX`恢复寄存器值。
- 发送EOI命令:`MOV AL, 20H; OUT 20H, AL`,通知8259中断处理完成。
- 中断返回:`IRET`指令返回到中断前的指令地址。
补充作业部分,与上述过程类似,只是涉及的端口地址、中断类型码和中断处理程序的细节有所变化。例如,从片的初始化需要设置不同的ICW2和ICW3,以及不同地址的中断屏蔽字和中断向量。中断处理程序也会根据新的中断源进行相应调整。
总结,8259的应用在于管理和控制中断,通过初始化、设置中断屏蔽字、设置中断向量以及编写中断处理程序,可以有效协调CPU对多个中断源的响应。在实际系统中,这些步骤对于确保系统正确处理中断请求至关重要。