根据提供的文档内容,本次实验涉及的是大连理工大学计算机原理课程中的两个关键实验——8255实验(一)和中断实验(一)。实验旨在使学生掌握并应用8255可编程并行接口芯片以及中断机制的基本原理和技术。下面将详细阐述这两个实验的知识点。
### 8255实验(一)
#### 实验目的
1. **理解8255工作原理**:掌握8255芯片方式0的工作原理及初始化编程方法。
2. **编程实践**:利用8255A实现输入/输出操作。
#### 实验要求
- 使用8255的PA口作为输入,读取8个开关(K7~K0)的电平信号,并通过PB口将这些电平信号在8个LED(L7~L0)上显示出来。
#### 编程算法与说明
1. **初始化8255**:设定8255A工作于方式0,PA口作为输出。
2. **硬件连接**:选择8255A的片选地址为200H,PA口与LED7~LED0连接用于显示。
3. **程序流程**:关中断后,输出8255控制字,设置PA口为输出模式,随后读取开关状态并通过PB口显示。
### 中断实验(一)
#### 实验目的
1. **学习中断技术**:了解386EX系统的CPU芯片的中断结构和编程原理。
2. **编程实践**:学习编写中断的初始化编程和对应的中断服务程序编程。
#### 实验要求
- 使用单脉冲与386EX模块CPU内部IRQ5端口连接,设计一个计数器,每按三次单脉冲计数器加一,并通过8255A的PA口以二进制形式输出。
#### 编程算法与说明
1. **初始化中断**:关闭中断后,设置386EX主8259中断屏蔽字,开放IRQ5中断。
2. **设置中断向量表**:计算中断向量表地址,向ISR地址装入向量单元。
3. **中断处理**:定义中断服务子程序,初始定义计数器变量count为0,每按两次单脉冲count加一。另外定义一个中间计数变量count1,每次单脉冲触发时,count1加一,当count1达到两次时,count加1,并通过8255A与LED以二进制形式显示结果。
### 程序代码解析
#### 数据段
```assembly
data segment
count db 00h ; 计数器初始化为0
count1 db 00h ; 中间计数器初始化为0
i8255_a equ 200h ; 8255A的地址
i8255_k equ 203h ; 控制寄存器地址
data ends
```
#### 代码段
```assembly
code segment
start:cli ; 关闭中断
mov ax, data
mov ds, ax
mov es, ax
mov dx, i8255_k
mov al, 80h ; 输出8255控制字,设置PA为输出
out dx, al ; 设置8255为方式0
```
以上代码实现了8255A的初始化配置,包括关闭中断、设置PA口为输出等。
#### 中断设置
```assembly
;-------------设置386EX主8259中断屏蔽字--------
inal, 21h
andal, 11011111b ; 开放IRQ5中断
out 21h, al
;---------------设置中断向量表-----------------
push DS
mov ax, 0
mov ds, ax
lea ax, CS:INT_PROC ; AX指向中断程序入口地址
mov si, 35H ; 类型码=35H
add si, si
add si, si
mov ds:[si], ax ; 中断向量表的IP值
push cs
pop ax
mov ds:[si + 2], ax ; 中断向量表的CS值
pop ds
sti ; 开启中断
```
这里完成了中断的初始化设置,包括设置386EX主8259中断屏蔽字、设置中断向量表,并最终开启中断。
#### 中断服务程序
```assembly
INT_PROC PROCfar
push ax
push cx
QUERY:inc count1
cmp count1, 02h
jnz ab
inc count
mov count1, 0
ab: mov al, count
mov dx, i8255_a
out dx, al
mov al, 20H ; 发送中断结束命令
out 20h, AL
pop ax
pop cx
sti
iret
INT_PROC ENDP
```
这部分代码是中断服务程序的核心,主要包括计数器的增加逻辑、通过8255A更新LED显示,以及发送中断结束命令等。
### 实验结果
根据实验记录,实验箱手动输入单脉冲,每输入两次脉冲,LED所表示的二进制数加一,表明电路及程序能够实现每按两次单脉冲对计数器进行一次加一的功能,结果通过LED以二进制形式正确显示。
通过此次实验,学生不仅深入理解了8255可编程并行接口芯片的使用方法,还掌握了中断机制的基础知识及其在实际编程中的应用,这对于深入学习计算机硬件原理具有重要意义。