【汇编语言第3版】第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
第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] : ①中断源发出中断请求; ②判断当前处理机是否允许中断和该中断源是否被屏蔽; ③优先权排队; ④处理机执行完当前指令或当前指令无法执行完,则立即停止 当前程序,保护断点地址和处理机当前状态,转入相应的中断 服务程序; ⑤执行中断服务程序; ⑥恢复被保护的状态,执行“中断返回”指令回到被中断的程 序或转入其他程序。 上述过程中前四项操作是由硬件完成的,后两项是由软件完成 的。
汇编语言子程序及中断

计算机硬件实验室实验报告
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。
汇编语言程序设计第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 从键盘输入一个字符并回显在屏幕上
【汇编语言第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

第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的区域。
汇编语言之中断学习

汇编语⾔之中断学习计算机经常会遇到异常,会产⽣中断,发出中断请求。
中断分为内中断和外中断。
下⾯主要介绍的是内中断。
内中断,cpu什么时候会发出中断信号呢?⼀般有⼀下四种情况: ·除法指令 ·单步执⾏ ·int 0指令 ·int n指令 产⽣中断信号的情况⼜被称为中断源。
cpu接收到中断信号以后,要根据中断信号来确定中断情况。
所以,中断信息⾥⾯应该包括中断的来源以及中断的情况。
因此,CPU将定义⼀个变量来存储辨别中断信息,称为中断字节码(8位变量)可以⽤中断字节码表⽰256种情况。
每种中断情况都对应⼀种中断处理程序,但是CPU⼜如何确定相应中断处理程序在内存中的地址呢?如何确定相应中断处理程序的⼊⼝地址?so,中断向量应运⽽⽣。
中断向量就是中断处理程序的⼊⼝地址。
不同的中断情况对应不同的中断处理程序,⼜对应不同的中断向量,为了⾼效的处理中断,我们⼜定义了中断向量表,顾名思义,中断向量表⽤来存储中断向量,就是中断处理程序的⼊⼝地址。
⼀条中断向量有占⽤多少内存地址呢?中断向量⽤来存储中断处理程序的⼊⼝地址,包括段地址和偏移地址,所以占⽤两个字的存储单元,⾼地址字段⽤来存储段地址,低地址字段⽤来存储偏移地址。
CPU知道了相应中断处理程序的⼊⼝地址后,计算机处理中断,中断过程。
⽤中断字节码找到中断向量,来设置CS和IP,这个过程由计算机硬件来完成,这个过程叫做中断过程。
以8086CPU为例,在接收到中断信息后,要执⾏的操作: 1.(从中断信息中)找到中断字节码 2.标志寄存器的值⼊堆栈 3.设置标志寄存器的第8位TF和第9位IF值为0 4.CS 值⼊栈 5.IP值⼊栈 6.从内存地址为终端类型码4 和中断类型码4+2的两个字单元读取中断处理程序的⼊⼝地址,设置CS IP 中断处理程序 由于cpu随时都有可能检测到中断信息,也就是说cpu随时都要执⾏中断处理程序,所以,中断处理程序必须⼀致存储在内存某段空间中。
汇编语言---第7章中断系统

在现代微机中,不仅有前文所述的常规 中断,还有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 时钟 周期。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
定义:各种中断处理程序的入口地址放在一起形成一个地址表
偏移地址IP的值 00000H 00004H 共1K字节 存放256个中断 00008H
外部中断
类 型
内部中断
非屏蔽中断NMI CPU不能禁止NMI线上的中断请求,主要用 于一些紧急的故障处理 可屏蔽中断INTR CPU 是否做出响应由该外设的中断请求是 否被屏蔽和CPU是否允许响应中断决定 INT引起的中断 执行 INT n 指令产生中断,调用中断程序来 完成中断功能,操作数n将给出中断的类型
2018/10/9
7
8.2 中断处理程序设计
8.2.1 中断处理程序的编写
1.外中断处理程序
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
主要步骤: (1)保护现场。主要指各通用寄存器内容和除CS外代码段寄存器 的内容。保护方法一般是压栈。 (2)尽快完成中断处理,以免影响其他外设中断请求。 (3)恢复现场。 (4)中断返回。用IRET指令返回。
0C 0D
IR0
08 09 0A
0B
CPU
中断逻辑
系统定时器 键盘 彩色/图形接口 保留(通信) 串行通信接口 保留(ALT打印机) 软盘 保留(打印机)
0E 0F
INT n 指令
INT0 指令
除法 错误
单步 TF=1
IR7
2018/10/9
2
8.1.2 中断分类
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
含义:正在运行的中断处理程序,又被其他中断源中断 注意:实际使用时,多层中断嵌套要受到堆栈容量的限制
2018/10/9
6
8.1.6 中断指令
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
外中断是由外设发出中断信号引起的,没有中断指令 软中断指令 格式: INT n 功能:转到相应中断处理程序执行 中断返回指令 格式: IRET 功能:从中断服务程序返回主程序
2018/10/9
5
8.1.5 中断优先级
1.中断优先级
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
含义:当多个中断源同时申请中断时,CPU按优先级从高到低的次序 依次处理各中断源的请求 优先级从高到低的次序为: 优先级高
优先级低 2.中断嵌套
非屏蔽中断(NLeabharlann I) 内部中断 可屏蔽中断(INTR) 单步中断
…… MOV AX,SEG INTHAND ;中断处理程序的段地址 MOV DS,AX MOV DX,OFFSET INTHAND ;中断处理程序的偏移地址 MOV AH,25H MOV AL,n INT 21H ……
2018/10/9
10
2.获取中断向量
第8章 实模式下的中断程序设计
方法1:直接读取法。利用MOV指令直接读取中断向量
类型0中断处理 程序入口地址 类型1中断处理 程序入口地址 类型2中断处理 程序入口地址 ……… 类型FF中断处理 程序入口地址
段地址CS值
003FCH
中断向量地址=中断类型号*4
2018/10/9
4
8.1.4 中断过程
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
中断发生时,硬件自动完成的动作如下: (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
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: … …