《汇编语言(第四版)》 . 王爽著 . 清华大学出版社 . 2019
¶实验 12 编写 0 号中断的处理程序
¶内中断
搞清楚几个概念
中断 - 中断源 - 中断类型码 - 中断向量表 - 中断过程 - 中断处理程序
对于 8086PC 机,中断向量表指定放在内存地址 0 处,从内存 0000:0000
到 0000:03FF
的 1024 个单元中存放着中断向量表
8086CPU 在收到中断信息后,引发中断过程
1)(从中断信息中)取得中断类型码 N
2)中断过程中需要改变标志寄存器的值,于是先将标志寄存器的值入栈(pushf)
3)设置标志寄存器的第 8 位 TF 和第 9 位 IF 的值为 0(TF=0, IF=0)
4)CS 的内容入栈(push CS)
5)IP 的内容入栈(push IP)
6)从内存地址为 N*4 和 N*4+2 的两个字单元中读取中断处理程序的入口地址设置 IP 和 CS(IP=N*4, CS=N*4+2)
中断处理程序的编写方法
1)保存用到的寄存器
2)处理中断
3)恢复用到的寄存器
4)用 iret 指令返回
1 | iret ;pop IP |
¶检测点 12.1
(1)三号中断源对应的中断处理程序的入口地址为:0070:018B
(2)存储 N 号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:4N
(一个表项占两个字,四个字节)
存储 N 号中断源对应的中断处理程序入口的段地址的内存单元的地址为:4N+2
¶实验任务
要做以下几件事情
(1)编写可以显示 “divide error!” 的中断处理程序:do0;
(2)将 do0 送入内存 0000:0200 处;
(3)将 do0 的入口地址 0000:0200 存储在中断向量表 0 号表项中。
1 | cs:code |
测试程序
1 | cs:code |
¶汇编语言实验合集
实验 1 查看 CPU 和内存,用机器指令和汇编指令编程
实验 2 用机器指令和汇编指令编程
实验 3 编程、编译、连接、跟踪
实验 4 [bx] 和 loop 的使用
实验 5 编写、调试具有多个段的程序
实验 6 实践课程中的程序
实验 7 寻址方式在结构化数据访问中的应用
实验 8 分析一个奇怪的程序
实验 9 根据材料编程
实验 10 编写子程序
课程设计 1
实验 11 编写子程序
实验 12 编写 0 号中断的处理程序
实验 13 编写、应用中断例程
实验 14 访问 CMOS RAM
实验 15 安装新的 int9 中断例程
实验 16 编写包含多个功能子程序的中断例程
实验 17 编写包含多个功能子程序的中断例程
课程设计 2