汇编语言实验8-中断程序设计

;.

汇 编 语 言 实 验 报 告

Assembly Language Programming Lab Reports

______________________________________________________________________________ 班级: _________ 姓名:___________ 学号:___________ 实验日期:_____________ 学院: _____计算机与通信工程学院____ 专业:_______计算机科学与技术___________

实验顺序:___实验____ 实验名称:____________中断程序设计________________ 实验分数:_______ 考评日期:________ 指导教师:

______________________________________________________________________________

一.实验目的

1.掌握中断的类型,软件中断和硬件中断。

2.掌握中断处理的过程,理解中断类型值,中断向量。 3.掌握系统中断以及功能调用。 4.可以自己设计中断程序

______________________________________________________________________________

二.实验环境

操作系统:windows xp 编译程序:masm 5.0

______________________________________________________________________________

三.实验原理

1.CPU响应中断的条件 (1)当前的指令周期结束

(2)采样到有效的中断请求型号

(3)如果是可屏蔽的中断请求INTR,检查中断允许标志IF是否为1

(4)CPU正在执行的程序是不是中断服务程序,或者是中断优先级较低的中断

服务程序 2.中断响应过程

(1)首先将标志寄存器FLAGS压入堆栈 (2)将TF与IF清零,IF=0即关中断

(3)将正在运行程序的断点CS和IP压入堆栈

(4)从中断向量表中取出中断向量高两个字节的内容送入CS,取出低两个字节

的内容送入IP

(5)转到相应中断源的中断服务程序入口,执行中断处理服务程序

______________________________________________________________________________ 四.实验步骤及结果分析 1.修改已有中断处理程序。

修改已有的中断int 9h

(1)将原有9号中断的程序入口地址放在一个地方保存起来 (2)编写中断处理程序:int9;调用原有的int9中断 (3)将新int9中断服务程序送入内存0000:0200处;

(4)将int9的入口地址0000:0200存储在中断向量表9号表项中。

源代码:

code segment

;.'

;.

assume cs:code start:

mov ax,0 mov es,ax

mov ax,es:[9+4] mov es:[0200h],ax mov ax,es:[9+4+2] mov es:[0202h],ax cli

mov ax,offset int9 mov es:[9+4],ax mov ax,seg int9 sti

mov dx,offset int9end-offset int9start add dx,16 mov ah,31h mov al,0 int 21h

mov ah,4ch int 21h int9 proc near

int9start: push ax push bx push cx push es mov ax,0 mov es,ax in al,60h pushf

call dword ptr es:[0200h] cmp al,3Bh jne int9iret mov cx,2000 mov ax,0b800h mov es,ax mov bx,1 s:

inc byte ptr es:[bx] add bx,2 loop s int9iret:

;.'

;.

pop es pop cx pop bx pop ax iret int9end:nop int9 endp

code ends end start

运行结果:

2.写自己的中断例程

Int 60h用到了dos中断的int 21h功能

(1) 如果触发该中断,在屏幕上显示一串笑脸; (2) 选择60H号中断类型作为笑脸中断类型; (3) 编写中断子程序smile_face,显示一串笑脸; (4) 将该中断子程序的入口地址写入中断向量表中

设置中断向量

将在DS:DX中的中断向量写入中断向量表中。 格式:AH=25H

AL=中断类型号 DS:DX=中断向量 INT 21H

(5) 编写应用程序,触发60H号中断; (6) 中断结束后,返回应用程序继续执行; (7)把中断子程序驻留在内存中。

中断驻留是一种特殊的退出程序功能,它在退出前保留程序占用的内存,使这

;.'

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4