【汇编语言第3版】第7章 实模式下的中断程序设计

合集下载

第7章 中断系统 微型计算机原理(第三版)(共10章)

第7章 中断系统 微型计算机原理(第三版)(共10章)
⑶开中断。目的:允许更高级中断请求能够及 时得到响应,实现中断嵌套。
⑷转入中断服务程序。目的:完成的最终目的。 ⑸ 退出中断。返回到主程序的执行。
第12页 2019年3月30日星期六
第7章
2.中断服务程序
中断系统
开中断
执行一条指令
取下一条指令
N
结束
N
转入中断服务程序 执行中断服务程序 关中断 恢复现场 开中断
第7页 2019年3月30日星期六
第7章
8.1.2 中断源类型
中断系统
⑴ 处理机内部中断:如零作除数,为调试程序设 置的断点等。 ⑵ I/O 设备中断:如键盘、打印机等输入输出设 备引起的中断。 ⑶ 数据通道中断:如磁盘、磁带等。 ⑷ 实时时钟中断:如外部时钟电路、内部定时电 路等引起的中断。 ⑸ 故障源:如电源掉电等。磁带等。
INTR 8259A 中断 … 控制器 … IR 7 IR0 IR1
8086中断系统的各中断源分类示意图
INT0除 数为0
INT 1 INT 3 INT 4 单步 断点 溢出
优先级别:除单步中断外,所有内部中断的优先级最 高,其次为不可屏蔽中断、可屏蔽中断,单步中断的 优先级最低。
第17页 2019年3月30日星期六
第3页 2019年3月30日星期六
第7章
中断系统
7.1 中断(Interrupt)的概念 中断过程
按照事件发生的顺序,中断过程包括 [4] : ①中断源发出中断请求; ②判断当前处理机是否允许中断和该中断源是否被屏蔽; ③优先权排队; ④处理机执行完当前指令或当前指令无法执行完,则立即停止 当前程序,保护断点地址和处理机当前状态,转入相应的中断 服务程序; ⑤执行中断服务程序; ⑥恢复被保护的状态,执行“中断返回”指令回到被中断的程 序或转入其他程序。 上述过程中前四项操作是由硬件完成的,后两项是由软件完成 的。

【汇编语言第3版】第7章 实模式下的中断程序设计解析

【汇编语言第3版】第7章  实模式下的中断程序设计解析
8.1.1 中断与中断源
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
中断:当一种特殊事件发生时,CPU停止正在运行的程序,而转去执
行该事件的处理程序,处理完该事件后,再返回原程序继续 正确地执行下去,这个过程就称为中断。 中断源:引起中断的事件
8086/8088的中断源
非屏蔽中断请求 8259A NMI INTR IR1 可编程 IR2 中断 IR3 控制器 (PIC) n 4 1 0 IR4 IR5 IR6
2018/10/9
8
第8章 实模式下的中断程序设计
2.软中断处理程序 主要步骤: (1)考虑切换堆栈。 (2)及时开中断。 (3)应该保护现场。 (4)完成中断处理。 (5)恢复现场。 (6)堆栈切换。 (7)一般利用IRET指令实现中断返回。
汇 编 语 言 程 序 设 计
2018/10/9
9
8.2.2 设置和获取中断向量
第8章 实模式下的中断程序设计
本章主要教学内容
1.中断的基本概念; 2.中断程序的设计方法; 3.BIOS/DOS中断调用。
汇 编 语 言 程 序 设 计
本章主要教学目的及要求
1.理解中断的基本概念; 2.掌握中断程序的基本设计方法; 3.能熟练使用BIOS/DOS中断调用。
2018/10/9
1
8.1 中断概述
处 理 CPU 某 些 错误类型有两种:除法错中断和溢出中断 错误的中断 调试程序设 置的中断 如单步中断、断点中断、失效、陷井和中止
2018/10/9
3
8.1.3 中断向量表
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
定义:各种中断处理程序的入口地址放在一起形成一个地址表

【汇编语言第3版】第7章 循环指令及循环结构程序设计

【汇编语言第3版】第7章  循环指令及循环结构程序设计

初始化部分
工作部分 修改部分 控制部分 结尾部分
6.2.2循环程序的结构
第6章 循环指令与循环结构程序设计
汇 编 语 言 程 序 设 计
(1)先执行后判断(非0次循环结构) (2)先判断后执行(0次循环结构)
初始化部分 工作部分 控制部分 修改部分 工作部分 控制部分 修改部分 结尾部分 结尾部分
取数 Y
结束
=0?
N 移位 CF=0? Y N 计数加1
第6章 循环指令与循环结构程序设计
3.用逻辑变量控制循环
含义:用转移指令来判断循环条件 应用场合:控制转入不同的循环支路 方法:把逻辑变量送入寄存器中,以逻辑变量各位的状态作为执行某段
汇 编 语 言 程 序 设 计
程序的标志
按逻辑变量控制循环程序设计举例
第6章 循环指令与循环结构程序设计
汇 编 语 言 程 序 设 计
【例6-9】在以BUF为起始地址的内存中放有若干单字节无符号数,假定逻辑变量 的长度为一个字节,它的D0 ~ D7 位对应着BUF ~ BUF+7单元内容的运算。某位为 0,则将相应单元内容的D7位复制到D6位,其他位不变;某位为1,则将相应单元 内容之高低四位互换。假定逻辑变量的值是10010101
汇 编 语 言 程 序 设 计
第6章 循环指令与循环结构程序设计
6.3 多重循环程序设计
含义:指循环体内还有循环,也就是循环嵌套 注意:(1) 不允许循环结构交叉 (2)转移指令只能从循环结构内转出或可在同层循环内转移
汇 编 语 言 程 序 设 计
多重循环程序设计应用举例
第6章 循环指令与循环结构程序设计
第6章 循环指令与循环结构程序设计
本章主要教学内容

汇编语言 微机的中断系统.ppt

汇编语言  微机的中断系统.ppt

第7章微机的中断系统版权所有, 2000 (c) 南京航空航天大学计算机科学与工程紊什么是中断•所谓中断,是指处理器在执行正常程序过程中,当出现某些异常情况或某个外部设备请求时,处理器暂时中止正在执行的程序,转而去执行其特定的服务程序,并在执行完服务程序后返回原来被中止的程序处继续执行的过程。

什么是异常?异常是指把因内部意外条件而改变程序执行流程以报告出错情况和非正常状态的过程称为异常中断(简称异常)。

中断和异常有什么区别?(1)中断处理异步发生的外部事件。

(2)异常处理同步发生的内部事件。

(3)硬件中断是作为外部事件的结果而发生的。

(4)中断是在当前指令执行完后才去执行服务程序的,在中断处理程序完成中断服务后,程序继续执行被中断指令之后的指令。

二、中断分类中断服务程序的入口地)组成及格式:节,段地址实方式下中断服务程序入口地址•中断类型号n与其对应的中断向量存放起始地址之间的关系是:起始地址=4×n;末地址=4×n+3即中断向量在4×n ~ 4×n+3指示的内存单元中•示例(例子)保护方式下中断服务程序入口地址•(1)通过中断类型号n从中断描述符表IDT中找出中断描述符。

–中断描述符首地址=中断类型号码n×8+IDT基地–从该地址开始取出8字节内容就是中断描述符。

•(2)通过中断描述符中的选择子从GDT或LDT中找出或求出段描述符。

•(3)据段描述符提供的段基地址与中断描述符提供的偏移地址合成物理地址。

•示例下,内存单元中有关单元存放的内容如右图所示,IDT的首地址为0028000000280000H H,GDT首地址为0050000000500000H H,求2020H H号中断服务程序入口地址。

解:保护方式与实方式中断主要区别•(1)表的大小不同–中断描述符表2KB;中断向量表1KB •(2)表的位置不同–保护方式下的中断描述符表可位于内存的任何位置,由中断描述符寄存器(IDTR)决定;实地址方式下的中断向量表只能固定在00000H~003FFH的最低内存1KB的区域。

汇编语言---第7章中断系统

汇编语言---第7章中断系统
在815EP芯片组的82801BA芯片中,集成 815EP芯片组的82801BA芯片中,集成 了两个中断控制器8259A,它除了提供与ISA 了两个中断控制器8259A,它除了提供与ISA 兼容的中断外,还可以利用将PCI中断映射到 兼容的中断外,还可以利用将PCI中断映射到 与ISA兼容的中断线而支持PCI中断。 ISA兼容的中断线而支持PCI中断。
在现代微机中,不仅有前文所述的常规 中断,还有PCI中断、串行中断等新技术。本 中断,还有PCI中断、串行中断等新技术。本 节我们将简单介绍现代微机中关于PCI中断的 节我们将简单介绍现代微机中关于PCI中断的 操作、响应周期和PCI中断共享的概念。 操作、响应周期和PCI中断共享的概念。
返回
7.5.1 现代微机中的PCI 现代微机中的PCI
返回
7.3 中断向量及其操作
7.3.1 中断类型号和中断向量表; 中断类型号和中断向量表; 7.3.2 中断向量的设置; 中断向量的设置; 7.3.3 中断向量的修改; 中断向量的修改; 7.3.4 中断类型号的获取
返回
7.4 Intel 8259A可编程中断控制器 8259A可编程中断控制器
7.4.1 8259A的框图和引脚 8259A的框图和引脚 1.功能及工作特点 2.结构框图 3.8259A的引脚 8259A的引脚 4.8259A的工作原理 8259A的工作原理 5.8259A寄存器及I/O端口的识别 8259A寄存器及I/O端口的识别
返回
7.6.3 停止帧 所有数据帧之后,82801BA会发出 所有数据帧之后,82801BA会发出 一个停止帧。 SERIRQ 信号被 82801BA 驱动为低电平,并维持2 驱动为低电平,并维持2或3 个 PCI 时钟 周期。

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

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

汇编语言实验报告Assembly Language Programming LabReports _________________________班级: __________ 姓名:____________ 学号:____________ 实验H期:_学院:计算机与通信工程学院—专业:________________ 计算机科学与技术实验顺序:—实—实验名称:____________________ 中断程序设计_________实验分数: ______ 考评日期: __________ 指导教师: ---------一-实验U的1 •掌握中断的类型,软件中断和硬件中断。

2•掌握中断处埋的过程,埋解中断类型值,中断向量。

3•掌握系统中断以及功能调用。

4 •可以自己设计中断程序二-实验环境操作系统:windows xp编译程序:masm 5. 0三.实验原理1.CPU响应中断的条件(1)当前的指令周期结束(2)采样到有效的中断请求型号(3)如果是可屏蔽的中断请求IXTR,检査中断允许标志IF是否为1(4)C PU正在执行的程序是不是中断服务程序,或者是中断优先级较低的中断服务程序2.中断响应过程(1)首先将标志寄存器FLAGS压入堆栈(2)将TF *J IF清零,IF=O即关中断(3)将正在运行程序的断点CS和IP压入堆栈(4)从中断向量表中取出中断向量高两个字节的内容送入CS,取出低两个字节的内容送入IP(5)转到相应中断源的中断服务程序入口,执行中断处理服务程序将原有9号中断的程序入口地址放在一个地方保存起来 編写中断处理程序:int9:调用原有的im9中断将新mt9中断服务程序送入内存0000:0200处; 将im9的入口地址0000:0200存储在中断向量农9号农项中。

源代码: code segment assume csxode start: mov ax.O mov es.ax mov ax,es:[9+4] mov es:[0200h].axmov ax,es: [9+4+2]mov es:[0202h].axclimov ax,offset int9mov es:[9+4]•合 Xmov ax,seg int9stimov dx.ofEet int9end-ofiset mt9startadd dx,16mov ahjlh mov al,0 uit21hmov aK4ch uit21hint9 proc nearuit9start:push axpush bx push ex push es mov ax.O mov es.axm 合l ・60hpushfcall dword ptr es:[0200h]四.实验步骤及结果分析 1.修改已有中断处理程序。

汇编语言程序设计教程PPT-第7章

汇编语言程序设计教程PPT-第7章
1
user32.dll 提供用户接口服务功能,包括创建窗口和传递消息等。
2
gdi32.dll 提供图形设备接口,实现文本及图形的显示操作。
3
第七章 Win32汇编语言程序设计
invoke 函数名 [,参数1] [,参数2]
invoke MessageBox, NULL, addr szgreet, addr sztilte, MB_OK
第七章 Win32汇编语言程序设计
第七章 Win32汇编语言程序设计
(3)窗口程序的主要代码分析(模块和句柄、注册窗口类、建立窗口、窗口过程)
(2)窗口程序的运行过程
Win32窗口程序实例: 消息传递机制 代码分析
7.4 汇编语言与VC++的混合编程
嵌入式汇编语言指令及编程方法
(1)嵌入式汇编指令
源程序结构、源程序的模式定义与段定义 在Win32环境下,应用程序可以寻址4GB空间。
API函数的使用(包含声明文件、调用API函数)
Win32汇编的编程环境(命令行编程环境、集成开发 环境)
7.1 Win32汇编语言程序设计基础
.386 ;指定可使用处理器指令集 .model flat, stdcall ;模式定义 option casemap:none ;指定汇编选项 <若干条include 语句> ;包含API函数和动态链接库头文件 .stack [堆栈段大小] ;定义堆栈段 .data ;数据段(定义初始化变量) <初始化变量定义> .data? ;数据段(定义未初始化变量) <未初始化的变量定义> .const ;定义常量段 <常量定义> .code ;定义代码段 <开始标号> <若干语句> end 开始标号 ;源程序结束

《汇编语言程序设计》第十三章:中断及中断处理程序

《汇编语言程序设计》第十三章:中断及中断处理程序
状态保存
将关键寄存器的值保存到堆栈或特定内存区域,以便 中断返回时恢复。
堆栈操作
使用堆栈保存和恢复寄存器值,确保中断处理的正确 性。
中断向量表与中断描述符表
中断向量表
存储中断处理程序入口地址的表格,每个中断 对应一个向量。
中断描述符表
在保护模式下使用的中断表,包含中断处理程 序的选择子和偏移量。
中断描述符
典型硬件中断实例解析
定时器中断
定时器到期时触发中断,用于实现定时控制、延时操作等功能。
键盘中断
用户按下键盘按键时触发中断,用于实现输入操作。
串行通信中断
串行通信接口接收到数据时触发中断,用于实现数据传输和控制等功能。这些实例展示了硬件中断在实际应 用中的重要作用,通过合理配置和使用硬件中断,可以提高系统的实时性、可靠性和效率。
描述中断处理程序中断优先级
不同中断具有不同的优先级,高优先级中断 可以打断低优先级中断。
嵌套处理
允许多个中断同时发生,按照优先级顺序依 次处理。
中断屏蔽
通过设置中断屏蔽位来禁止或允许特定中断 的发生。
03 硬件中断处理机制
硬件中断触发条件
01
外部事件
在ARM架构中,软件中断指令通常为`SVC`(Supervisor Call),用于触发操作系统提供的服务例程。
软件中断处理程序设计要点
中断处理程序(Interrupt Handler)需要快速响应并处理中断请求,以避 免影响系统的实时性。
中断处理程序需要保存现场信息,以便在中断处理完成后恢复程序的执行 状态。
内部事件
02
03
软件中断指令
如I/O操作完成、定时器到期等, 由外部设备向CPU发送中断请求 信号。

第三版汇编语言程序设计教程ppt课件

第三版汇编语言程序设计教程ppt课件
• 第四代:大规模集成电路计算机时代(70年代初开始)。
11.08.2021
精选课件ppt
8
计算机的特性
• 高速 • 高精度 • 通用 • 准确 • 智能化 • 体积小、重量轻
11.08.2021
精选课件ppt
9
计算机的分类
• 计算机按其用途来分可以分成专用机和通 用机两类。
• 专用机是专门用于某种用途的,它对于特 定用途而言最经济、最快速、最有效,但 适应性差,而通用机适应性强。
• 微体系结构层要实现执行指令所需要的所有功能 部件,如运算、控制、存储、输入/输出、接口和 总线部件等。
• 在指令系统层,需要定义机器的指令集,规定每 一条指令的格式和功能。
• 操作系统层主要承担计算机系统中的资源管理与 分配,也向使用者和程序设计人员提供简单、方 便、高效的服务。
11.08.2021
• 汇编语言:汇编语言是一种符号语言,它用助记 符表示操作码,比机器语言容易理解和掌握,助 记符一般是表明指令功能的英语单词或其缩写。
• 高级语言:高级语言比较接近于人类自然语言的 语法习惯及数学表达形式,它与具体的计算机硬 件无关,更容易被广大计算机工作者掌握和使用。
11.08.2021
精选课件ppt
11.08.2021
精选课件ppt
26
进位计数制间的相互转换
(1)二进制、八进制、十六进制转换为十进制数。(按权相加)
10101101.101B= 27+25+23+22+20+2-1+2-3 =128+32+8+4+1+0.5+0.125 =173.625D
(2)十进制数转换为二进制、八进制、十六进制。(按R取余)
A968
∴ 10101001.01101B =A9.68H

汇编语言第三版(王爽)实验七

汇编语言第三版(王爽)实验七
add si,2 add di,16 loop s2
;人均收入 mov cx,21
mov si,0 s3: mov dx,es:[si+7] mov ax,es:[si+5] mov bx,es:[si+10] div bx
mov es:[si+13],ax mov al,' ' mov es:[si+15],al
s1: mov ax,[si] mov es:[di],ax
mov ax,[si+2] mov es:[di+2],ax mov al,' ' mov es:[di+4],al
add si,4 add di,16 loop s1
;员工数 mov cx,21
mov si,168 mov di,10
s2: mov ax,[si] mov es:[di],ax mov al,' ' mov es:[di+2],al
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
登录后才能查看或发表评论立即登录或者逛逛博客园首页
实验内容
汇编语言第三版(王爽)实验七s:codesg,ds:data data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983'

汇编语言中断指令

汇编语言中断指令

汇编语言中断指令汇编语言是一种低级别的计算机编程语言,它使用指令的助记符和操作码来直接控制计算机硬件。

在汇编语言中,中断指令是一种重要的操作指令,它可以使程序在执行过程中暂停并切换到指定的中断服务程序。

本文将介绍汇编语言中断指令的基本概念、使用方法和相关应用场景。

一、概述中断是计算机系统中常见的一种机制,它可以使程序在特定条件下暂停当前执行的任务,并转而执行一个中断服务程序。

中断指令是汇编语言中用于触发中断的一种特殊指令,它可以将系统控制权转移给中断服务程序,并在服务程序执行完毕后再返回到原来的程序继续执行。

二、中断指令的使用方法在汇编语言中,中断指令的使用方法如下:1. 设置中断向量表中断向量表是一个存储中断服务程序入口地址的表格,在程序执行过程中,当中断发生时,CPU会根据中断号去中断向量表中查找对应的中断服务程序的入口地址并跳转至该地址开始执行。

程序员需要在编写程序时,事先设置好中断向量表。

2. 触发中断在程序中,通过使用中断指令来触发中断操作。

一般来说,中断指令会附带一个中断号作为参数,告诉系统要执行哪个中断服务程序。

触发中断指令后,CPU会保存当前的程序状态,并将控制权转移到指定的中断服务程序。

3. 中断服务程序的执行当中断发生并切换到中断服务程序时,程序员可以在中断服务程序中编写相应的处理代码,来处理特定的中断事件。

中断服务程序执行完毕后,CPU会将控制权再次转回到原来的程序继续执行。

三、中断指令的应用场景中断指令在实际的计算机应用中有广泛的应用场景,下面列举几个典型的应用场景:1. 硬件设备的驱动程序计算机系统中的硬件设备通常会产生各种中断事件,例如键盘输入、鼠标点击、网络数据接收等。

通过编写相应的中断服务程序,可以及时响应这些中断事件,从而实现对硬件设备的驱动和控制。

2. 异常处理在程序执行过程中,可能会出现各种异常情况,例如除零异常、越界访问异常等。

通过设置相应的中断服务程序,可以在发生异常时及时捕获并处理异常,防止程序崩溃或数据损坏。

汇编语言程序设计教程(第3版卜艳萍)参考答案

汇编语言程序设计教程(第3版卜艳萍)参考答案

汇编语⾔程序设计教程(第3版⼘艳萍)参考答案汇编语⾔程序设计教程(第3版)习题参考答案第1章汇编语⾔基础知识思考与练习1.计算机系统分哪⼏个层次?简述计算机系统的硬件结构。

1)数字逻辑层2) 微体系结构层3) 指令系统层4) 操作系统层5) 汇编语⾔层6) ⾼级语⾔层7) 应⽤层硬件系统是指构成计算机系统的物理实体或物理装置。

它由控制器、运算器、存储器、输⼊设备和输出设备等部件构成。

2.简述⽤汇编语⾔进⾏程序设计的必要性。

1)程序要具有较快的执⾏时间,或者只能占⽤较⼩的存储容量。

例如,操作系统的核⼼程序段,实时控制系统的软件,智能仪器仪表的控制程序等。

2)程序与计算机硬件密切相关,程序要直接、有效地控制硬件。

例如,I/O接⼝电路的初始化程序段,外部设备的低层驱动程序等。

3)⼤型软件需要提⾼性能、优化处理的部分。

例如计算机系统频繁调⽤的⼦程序、动态连接库等。

4)没有合适的⾼级语⾔或只能采⽤汇编语⾔的时候。

例如,开发最新的处理器程序时,暂时没有⽀持新指令的编译程序。

5)汇编语⾔还有许多实际应⽤,例如分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等。

3.汉字编码主要分哪⼏类?每类的功能如何?汉字编码主要分为四类:汉字输⼊码、汉字交换码、汉字机内码和汉字字形码。

1)为了能直接使⽤西⽂标准键盘进⾏输⼊,就必须为汉字设计相应的编码⽅法,即⽤西⽂标准键盘上的字母数字串表⽰汉字的编码。

⽬前,汉字输⼊编码⽅法主要有三种:数字编码、拼⾳编码和字形编码。

2)汉字交换码:在不同汉字信息处理系统间进⾏汉字交换时所使⽤的编码,就是国标码。

⽆论采⽤哪种⽅法输⼊汉字,⼀旦输⼊到计算机中,必须采⽤统⼀的国标码标识每个汉字。

3)汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字⽤的编码。

4)字形编码也称为字模码,是⽤点阵表⽰的汉字字形代码,它是汉字的输出形式。

汇编语言第7章 中断和DOS功能调用

汇编语言第7章 中断和DOS功能调用

例7.3:输入字符串
buffer db 81
;定义缓冲区 ;第1个字节填入可能输入的最大字符数 db 0 ;存放实际输入的字符 数 db 81 dup(0) ;存放输入的字符串 ... mov dx,seg buffer ;伪指令seg取得buffer的段地址 mov ds,dx ;设置数据段DS mov dx,offset buffer mov ah,0ah int 21h
⒉ 字符串的输出
从键盘输入数据
⒊ 字符的输入 ⒋ 字符串的输入
1. 字符输入的功能调用
DOS功能调用INT 21H 功能号:AH=01H 出口参数:AL=字符的ASCII码 功能:获得按键的ASCII代码值
调用此功能时,若无键按下,则会一直
等待,直到按键后才读取该键值
例7.1:
IRET
;中断返回指令:实现中断返回
7.3 系统功能调用
21H 号中断是 DOS 提供给用户的用于调
用系统功能的中断,它有近百个功能供用 户选择使用,主要包括设备管理、目录管 理和文件管理三个方面的功能 ROM-BIOS 也以中断服务程序的形式, 向程序员提供系统的基本输入输出程序 汇编语言程序设计需要采用系统的各种 功能程序 充分利用操作系统提供的资源是程序设 计的一个重要方面,需要掌握
实现中断返回73系统功能调用?21h号中断是dos提供给用户的用于调用系统功能的中断它有近百个功能供用户选择使用主要包括设备管理目录管理和文件管理三个方面的功能提供给用户的用于调用系统功能的中断它有近百个功能供用户选择使用主要包括设备管理目录管理和文件管理三个方面的功能?rombios也以中断服务程序的形式向程序员提供系统的也以中断服务程序的形式向程序员提供系统的基本输入输出程序?汇编语言程序设计需要采用系统的各种功能程序汇编语言程序设计需要采用系统的各种功能程序?充分利用操作系统提供的资源是程序设计的一个重要方面需要掌握充分利用操作系统提供的资源是程序设计的一个重要方面需要掌握功能调用的步骤通常按照如下4个步骤进行

汇编语言程序设计第7章 中断

汇编语言程序设计第7章  中断
(4×N+2)→ CS (7)转中断处理程序
CPU中断返回过程:
(8)IP、CS和FLAGS出栈 (9)返回断点,继续执行下一条指 令
1 中断传送方式
子程序调用
主程序 ……
CALL SLeabharlann BP……实现机制不同
子程序 …… …… RET
源程序 …… INT n ……
调用 DOS/BIOS
DOS/BIOS 例行程序
汇编语言程序设计
ASSEMBLY LANGUAGE PROGRAMMING
第七章 中断
目录
CONTENTS
01 中断传送方式 02 DOS中断
1 中断传送方式
中断源:引起中断的事件
外中断(硬中断): 外设的 I/O 请求 —— 可屏蔽中断 电源掉电 / 奇偶错 —— 非屏蔽中断
内中断(软中断): INT 指令 / CPU 错(除法错、溢出)/ 为调试程序设置的中断
1 中断传送方式
中断源:引起中断的事件
外中断(硬中断): 外设的 I/O 请求 —— 可屏蔽中断 电源掉电 / 奇偶错 —— 非屏蔽中断
内中断(软中断): INT 指令 / CPU 错(除法错、溢出)/ 为调试程序设置的中断
1 中断传送方式
80x86 中断源:
CPU
n INT n
非屏蔽中断请求
2 NMI
;DOS功能号:键盘输入 ;DOS调用 ;返回参数: (AL)
MOV DL, ’A’ MOV AH, 02 INT 21H
;调用参数: 输出字符 ; DOS功能号: 显示输出
; DOS调用
2 DOS中断
AH 功 能
调用参数
1 从键盘输入一个字符并回显在屏幕上

汇编语言中断编写

汇编语言中断编写

4 / 26
中断执行流程
..
. ..
. ..
.
. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..
. ..
. ..
. ..
. ..
.
李晓锋
中断服务程序示例
2014-05-12
5 / 26
8086 的中断分类
按中断源的不同,中断分为内中断和外中断。 内中断(软中断): 指 CPU 执行某些特殊操作或由 INT 指令引起的 中断
..
. ..
. ..
.
. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..
. ..
. ..
. ..
. ..
.
李晓锋
中断服务程序示例
2014-05-12
13 / 26
需要解决的一些技术问题 II
登记 do0 到中断向量表 我们将中断处理程序 do0 放到 0000:0200 后,若要使得除法溢出发 生的时候,CPU 转去执行 do0,则必须将 do0 的入口地址。即 0000:0200 登记在中断向量表的对应表项中。 因为除法溢出对应的中断类型码为 0,它的中断处理程序的入口地 址应该从 0×4 地址单元开始存放,段地址存放在 0×4+2 字单元中, 偏移地址存放在 0×4 字单元中。
1 2 3 4 5 6 7
. 取中断类型号 N . 当前 PSW 的内容入栈 . 清 IF、TF 标志为 0 . 当前 CS 的内容入栈 . 当前 IP 的内容入栈 . 取内存单元 ( 0 : N ×4 ) 字内容送 IP . 取内存单元 ( 0 : N ×4 + 2 ) 字内容送 CS

汇编语言与计算机原理第七章

汇编语言与计算机原理第七章

第七章中断调用和中断服务程序中断调用是指计算机暂时停止当前执行程序,转移到另一程序执行,执行结束后返回前面的程序继续执行。

中断调用类似于过程调用,和过程调用不同的是,中断调用可以通过硬件,或者指令INT 实现,前者称为硬中断调用,后者称为软中断调用。

中断所调用的过程称为中断服务程序。

在IBM-PC计算机系统中,中断服务程序一般是计算机系统所提供的一组程序,用于完成输入输出等操作。

程序员编写程序时,可在应用程序中直接调用中断服务程序,完成输入输出等操作,这给程序设计带来极大的方便。

中断服务程序可分为两部分:一部分驻留在ROM中,称为BIOS;另一部分由操作系统程序提供。

DOS操作系统提供的中断服务程序保存在磁盘文件中(IO.SYS和IBMDOS.SYS),在系统启动后装入内存。

对于同一功能操作,一般既能选择调用DOS中断服务程序,也能选择BIOS中断服务程序。

例如,通过键盘输入一个字符,可以调用DOS中断21H的01H子功能,也可以调用BIOS中断16H的01H子功能。

因为BIOS比DOS更靠近硬件,因此建议尽可能使用DOS功能,但是,在有些情况下必须使用BIOS功能,因为没有对应的等效的DOS功能。

BIOS和DOS的中断服务程序能处理大多数的输入输出操作,但是,有一些功能还没有提供,这就要考虑使用I/O指令在端口级上编程,这就需要详细了解端口的工作原理。

本章概要介绍BIOS和DOS这两部分中断服务程序,及其调用方法。

§7.1 中断向量和中断服务程序一、中断号和中断号分配IBM-PC 计算机系统给每个中断服务程序分配一个顺序编号,该编号称为中断号。

中断号分配如下:1.CPU内部控制的中断服务程序:0号:除0中断,当程序发生除0错误时系统自动执行该中断服务程序;1号:单步执行,当单步执行程序时,每执行一条指令后暂停程序执行;2号:不可屏蔽中断,分配给由CPU的不可屏蔽中断申请;3号:断点,程序执行到设置的断点时执行该中断服务程序;4号:溢出,产生溢出错误时执行;5号:打印屏幕,当按下PrintScreen键时执行;6号:保留;7号:保留。

汇编语言7-输入输出与中断

汇编语言7-输入输出与中断

第7章
当CPU执行输入指令时,指令译码使
IO/M 为高电平、读信号RD有效,同时 地址译码也有效,此时输入缓冲器被选 中,使外设数据进入数据总线,供CPU 读取。 如果此刻数据没有准备好,则操作就会 出错。
第7章
当CPU执行输出指令时,IO/M=1、WR
命令有效,同时地址译码也有效,此时 输出锁存器被选中,CPU送出的数据经 数据总线打入锁存器,供外设读取。
第7章

6.中断优先级和中断嵌套
中断优先级 :多个中断源同时请求中 断时,中断响应的先后次序。
中断嵌套 :中断服务程序执行过程中, 可以响应较高优先级中断请求,进 入较高级中断的中断服务程序,该 中断处理结束后,继续较低级别的 中断处理,称为中断嵌套 。
第7章
7.2.2 中断处理程序的设计

使用中断方式进行输入/输出时,用户需要编制两个程序模 块 :“主程序” 和“中断服务程序”
输入指令IN
将外设数据传送给CPU内的AL/AX
IN AL,i8 ;字节输入:AL←I/O端口(i8直接寻址)
IN AL,DX ;字节输入:AL←I/O端口(DX间接寻址)
IN AX,i8 ;字输入:AX←I/O端口(i8直接寻址) IN AX,DX ;字输入:AX←I/O端口(DX间接寻址)
第7章
CS IP
断点中断 非屏蔽中断 单步中断
IP
CS IP CS IP C S
专用的中断 (共5个)
类型2 类型1 类型0
除数为 0 中断
IP
第7章

5.中断处理过程 中断发生时,计算机中断机构自动完成如下操作 : (1)取中断类型号N (2)标志寄存器(FLAGS)内容入栈 (3)当前代码段寄存器(CS)内容入栈 (4)当前指令计数器(IP)内容入栈 (5)禁止外部中断和单步中断(TF=0,IF=0) (6)从中断向量表中取地址4×N的2字节内容 送IP,取地址4×N+2的2字节内容送CS (7)进入中断处理程序。

汇编语言7

汇编语言7

例7.14-2/3 ;汇编语言子程序:lt714f.asm .386p .model flat,c PUBLIC power2 .code power2 PROC ,num:dword,power:dword mov eax,num ;获取参数 mov ecx,power shl eax,cl ;计算 ret ;EAX存放返回值 power2 ENDP end
TCC -ms -Iinclude -Llib lt703.c lt703s.obj
; 汇编语言子程序:lt704s.asm 例7.4-1/3 L .model small,c large PUBLIC min .code min proc ;小型模式,为近过程 push bp mov bp,sp 6 mov ax,[bp+4] ;取第1个参数 8 cmp ax,[bp+6] ;与第2个参数比较 jle minexit 8 mov ax,[bp+6] ;保存返回值 minexit: pop bp ret 图示 min endp end
提高程序的开发效率;在某些部分, 利用汇编语言编写,以提高程序的运 行效率
第7章
混合编程方法
嵌入式汇编—— 在C/C++语言中直接使用汇编语言语句, 简洁直观、功能较弱
模块连接—— 两种语言分别编写独立的程序模块,分别 产生目标代码OBJ文件,然后进行连接, 形成一个完整的程序 使用灵活、功能强,要解决参数传递问题
例7.3-1/2 ; 汇编语言子程序:lt703s.asm .model small,c ;采用小型存储模式 .data msg db ’Hello, C and Assembly ! $’ .code PUBLIC display display proc ;过程名加有下划线 mov ah,9 ;小型模式不必设置DS mov dx,offset msg ;寄存器AX和DX无须保护 int 21h ret display endp end
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013-9-13
2
8.1.2 中断分类
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
外部中断
类 型
内部中断
非屏蔽中断NMI CPU不能禁止NMI线上的中断请求,主要用 于一些紧急的故障处理 可屏蔽中断INTR CPU是否做出响应由该外设的中断请求是 否被屏蔽和CPU是否允许响应中断决定 INT引起的中断 执行INT n指令产生中断,调用中断程序来 完成中断功能,操作数n将给出中断的类型
第8章 实模式下的中断程序设计
本章主要教学内容
1.中断的基本概念; 2.中断程序的设计方法; 3.BIOS/DOS中断调用。
汇 编 语 言 程 序 设 计
本章主要教学目的及要求
1.理解中断的基本概念; 2.掌握中断程序的基本设计方法; 3.能熟练使用BIOS/DOS中断调用。
2013-9-13
1
8.1 中断概述
STACK SEGMENT PARA STACK’STACK’ DB 256 DUP(?) STACK ENDS DATA SEGMENT PARA PUBLIC’DATA’ THIRTY DB 30 PARM DB 128 DUP(0) MSG0 DB’I LIKE IBM PC……’ MSG1 DB’8080 PROGRAMMING IS RUN……’ MSG2 DB’TIME TO BUY MANY DISKETTES…..’ MSG3 DB’THIS PROGRAM WORKS……’ MSG4 DB’TURN OFF THAT PRINTER!……’ MSG5 DB’I HAVE MANY ……’ MSG6 DB’THE PSP CAN BE USEFUL……’ MSG7 DB’BASIC WAS EASIER THEN THIS…’ MSG8 DB ’DOS IS INDISPESABLE…..’ MSG9 DB ’LAST MESSAGE OF THE DAY..’ ERRMSG DB’ERROR!INVALID PARAMETER!!!’ DATA ENDS CODE SEGMENT PARA PUBLIC ‘CODE’ ;代码段 START PROC FAR ASSUME CS:CODE
类型0中断处理 程序入口地址 类型1中断处理 程序入口地址 类型2中断处理 程序入口地址 ……… 类型FF中断处理 程序入口地址
段地址CS值
003FCH
中断向量地址=中断类型号*4
2013-9-13
4
8.1.4 中断过程
序 设 计
中断发生时,硬件自动完成的动作如下: (1)取中断类型号n; (2)标志寄存器(PSW)内容压栈; (3)当前代码段寄存器(CS)内容压栈; (4)当前指令指针(IP)内容压栈; (5)禁止外部中断和单步中断(置IF=0,TF=0); (6)从向量表中取4×n地址的内容送IP,取4×n+2地址中内容送CS; (7)转中断处理程序。 中断与子程序调用的差别: (1)在保护中断现场时,除了保护返回地址CS:IP之外,还保存 了标志寄存器PSW的内容。 (2)在中断发生时CPU自动清除了IF和TF
第8章 实模式下的中断程序设计
【例8-5】编写输出字符串‚example for int”的中断处理程序,设中断号为5
MOV BX,OFFSET HELLO MOV CX,15 L2:MOV AL,CS:[BX] CALL DISPCHAR INC BX LOOP L2 MOV AL,0DH CALL DISPCHAR MOV AL,0AH CALL DISPCHAR POP AX POP CX POP BX IRET NEWINT5 ENDP DISPCHAR RPOC NEAR PUSH BX MOV BX,0 MOV AH,14 INT 10H POP BX RET DISPCHAR ENDP CODE ENDS END MAIN
IR0
09
IR1 可编程 IR2 中断 IR3 控制器 (PIC) IR4 IR5 IR6
0A
0B
CPU
中断逻辑
0C 0D
系统定时器 键盘 彩色/图形接口 保留(通信) 串行通信接口 保留(ALT打印机) 软盘 保留(打印机)
0E 0F
n
4
1
0
INT n 指令
INT0 指令
除法 错误
单步 TF=1
IR7
基本步骤: ⑴置入口参数 ⑵使用中断语句INT n,其中n为中断号
例:MOV AH,0 ;功能号为0 INT 1AH ;1AH为BIOS中断号,功能为读时间计数器的值
2013-9-13
14
2.BIOS中断调用方法举例
第8章 实模式下的中断程序设计
【例8-6】从键盘读入0~9间任一数,根据不同数显示不同的字符串。要求用 BIOS中断来接收键盘输入
11
汇 编 语 言 程 序 设 计
2013-9-13
8.2.3 中断程序设计举例
CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR PUSH DS MOV AX,0 PUSH AX CLI MOV AX,SEG NEWINT5 MOV DS,AX MOV DX,OFFSET NEWINT5 MOV AL,5 MOV AH,25H INT 21H STI MOV CX,10 L1:INT 5H LOOP L1 RET MAIN ENDP HELLO DB ' example for int ' NEWINT5 PROC FAR PUSH BX PUSH CX PUSH AX
…… MOV AX,SEG INTHAND ;中断处理程序的段地址 MOV DS,AX MOV DX,OFFSET INTHAND ;中断处理程序的偏移地址 MOV AH,25H MOV AL,n INT 21H ……
2013-9-13
10
2.获取中断向量
第8章 实模式下的中断程序设计
方法1:直接读取法。利用MOV指令直接读取中断向量
【例8-3】利用直接读取法读取n号中断向量,并保存在 方法2:使用DOS功能调用法 35H号DOS功能调用取得指定的中断向量 双字变量OLDVECTOR中: 出入口参数: …… 预置:AL=中断类型号 XOR AX.AX 执行:INT 21H MOV ES,AX 功能:读取指定中断的中断向量,其中: MOV AX,ES:[n*4] ;取偏移地址 MOVES=中断处理程序的段地址 WORD PTR OLDVECTOR,AX ;保存 MOVBX=中断处理程序的偏移地址 ;取段地址 AX,ES:[n*4+2] MOV WORD PTR OLDVECTOR+2,AX ;保存 【例8-4】使用DOS功能调用取得n号中断的中断向量 …… …… MOV AH,35H MOV AL,n ;中断类型号为n INT 21H ;中断向量在ES:BX中 MOV WORD PTR OLDVECTOR,ES MOV WORD PTR OLDVECTOR,BX ……
汇 编 语 言 程 序 设 计
PUSH DS DISPLAY PROC NEAR MOV AX,0 MOV CX,30 PUSH AX DISP1:MOV AL,[BX] MOV AX,DATA CALL DISPCHAR MOV ES,AX INC BX ASSUME ES:DATA LOOP DISP1 MOV DS,AX MOV DL,0DH ASSUME DS:DATA CALL DISPCHAR MOV AH,0 MOV DL,0AH INT 16H CALL DISPCHAR SUB AL,’0’ RET JC ERROR DISPLAY ENDP CMP AL,9 DISPCHAR RPOC NEAR JA ERROR PUSH BX MOV BX,OFFSET MSG0 MOV BX,0 MUL THIRTY MOV AH,14 ADD BX,AX INT 10H CALL DISPLAY POP BX RET RET ERROR:MOV BX,OFFSET ERRMSG DISPCHAR ENDP CALL DISPLAY CODE ENDS RET END START
2013-9-13
7
8.2 中断处理程序设计
8.2.1 中断处理程序的编写
1.外中断处理程序
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
主要步骤: (1)保护现场。主要指各通用寄存器内容和除CS外代码段寄存器 的内容。保护方法一般是压栈。 (2)尽快完成中断处理,以免影响其他外设中断请求。 (3)恢复现场。 (4)中断返回。用IRET指令返回。
处 理 CPU 某 些 错误类型有两种:除法错中断和溢出中断 错误的中断 调试程序设 置的中断 如单步中断、断点中断、失效、陷井和中止
2013-9-13
3
8.1.3 中断向量表
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
定义:各种中断处理程序的入口地址放在一起形成一个地址表
偏移地址IP的值 00000H 00004H 共1K字节 存放256个中断 00008H
1.设置中断向量
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
方法1:直接写入法。用MOV指令将中断向量直接写入中断向量表
【例8-1】使用直接写入法设置中断向量。 方法2:使用DOS功能调用法。25H号DOS功能调用可以设置中断向量 … … 出入口参数: MOV AX,0 预置:AH=25H MOV DS,AX AL=中断类型号 MOV BX,n*4 ;设置n号中断向量 DS∶DX =中断向量 CLI ;关中断 执行:INT 21H MOV WORD PTR[BX],OFFSET INTHAND ;置偏移 功能:将指定的中断向量写入中断向量表。 MOV WORD PTR[BX+2],SEG INTHAND ;置段值 【例8-2】使用DOS功能调用设置中断向量。 STI ;开中断 INTHAND: … …
相关文档
最新文档