第七次汇编语言实验报告 下载本文

内容发布更新时间 : 2024/5/3 18:39:24星期一 下面是文章的全部内容请认真阅读。

汇 编 语 言 实 验 报 告

Assembly Language Programming Lab Reports

______________________________________________________________________________ 班级: ____ 姓名:__ __ 学号:___实验日期:______ 学院: ______ _____ 专业:____ ______

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

______________________________________________________________________________

一.实验目的

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

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

______________________________________________________________________________

二.实验环境

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

______________________________________________________________________________

三.实验原理

1.CPU响应中断的条件:

(1)当前的指令周期结束;

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

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

开放;

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

务程序。 2.中断响应过程:

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

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

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

的内容送入IP;

(5)转到相应中断源的中断服务程序入口,执行中断处理服务程序。 3.编写软件中断处理子程序步骤: (1)保护现场;

(2)STI开中断指令;如允许中断嵌套,则断开中断; (3)处理中断;

(4)CLI关中断指令; (5)恢复现场;

(6)IRET指令,返回被中断的程序。

______________________________________________________________________________ 四.实验步骤及结果分析

1. 写出定制自己的中断处理程序的设计方法,源代码。调用自己写的中断处理

1

程序。

设计一个笑脸中断INT 60H。 设计思路:

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

(6)中断结束后,返回应用程序继续执行; (7)把中断子程序驻留在内存中。 源代码:

.model small .stack .code

mess1 db 0ah,0dh,'enter interrupt!',0ah,0dh,'$' mess2 db 'exit interrupt!$'

mess3 db 0ah,0dh,'Continue or Quit(c/q)?$' main proc far start:

mov ax,@code mov ds,ax

mov dx,offset smile_face mov ax,seg smile_face mov ds,ax

mov al,60h mov ah,25h int 21h conti:

mov dx,offset mess1 mov ah,9 int 21h

int 60h

mov dx,offset mess2 mov ah,9 int 21h

mov dx,offset mess3 mov ah,9 int 21h mov ah,1 int 21h cmp al,'c' je conti mov al,0

mov ah,31h

2

mov dx,smiend-smigin+16 int 21h

main endp smile_face proc far smigin:

sti mov cx,10

leng: mov dl,01h mov ah,2 int 21h loop leng

mov dl,0dh int 21h mov dl,0ah int 21h

cli iret smiend:nop

smile_face endp end start 调用截图:

2. 对已有中断处理程序进行修改。

原程序:将大写的字符串在屏幕上特定位置用小写字母显示出来。 改为:将小写的字符串在屏幕上特定位置用大写字母显示出来。 设计思路:

3