1、12023-9-124.中断指令中断指令INT和中断返回指令和中断返回指令IRET/IRETD中断分为中断分为外部(硬)中断外部(硬)中断和和内部(软)中断内部(软)中断两种。两种。外部中断外部中断处理处理I/O设备与设备与CPU之间的通信。之间的通信。内部中断内部中断如除法运算中除数为如除法运算中除数为0、中断指令引起的中断。、中断指令引起的中断。1)中断指令中断指令 INT n ;n为中断类型码,是一个为中断类型码,是一个8位的立即数位的立即数2)中断返回指令中断返回指令(位于中断服务子程序的最后位于中断服务子程序的最后)IRET IRETD中断(中断(Interrupt)是又一种改变程序
2、执行顺序的方法是又一种改变程序执行顺序的方法第第3章章 Pentium的指令系统的指令系统22023-9-12执行操作:执行操作:1.将标志寄存器值送入堆栈将标志寄存器值送入堆栈(保护现场保护现场)(E)SP)(E)SP)-2/-4 2.清除清除IF、TF,避免进入中断以后再被外面其它,避免进入中断以后再被外面其它 中断所打断及进入中断以后按单步执行。中断所打断及进入中断以后按单步执行。3.将返回的断点地址送入堆栈将返回的断点地址送入堆栈(保护断点保护断点)(E)SP)(E)SP)-4/-6 除法错中断:除法错中断:执行除法指令,结果溢出产生的执行除法指令,结果溢出产生的 0 号中断号中断 单
3、步中断:单步中断:TF1在每条指令执行后产生的在每条指令执行后产生的 1 号中断号中断 非屏蔽中断非屏蔽中断:2号中断号中断 断点中断:断点中断:用于断点调试(用于断点调试(INT 3)的)的 3 号中断号中断 溢出中断:溢出中断:执行溢出中断指令,执行溢出中断指令,OF1产生的产生的 4 号中断号中断 指令中断:指令中断:执行中断调用指令执行中断调用指令INT i8产生的产生的 i8 号中断号中断INT 0 INT 1 INTO第第3章章 Pentium的指令系统的指令系统32023-9-121)8086的中断类型号分配的中断类型号分配:00H-04H:专用的中断专用的中断 08H-1FH:
4、主板和扩展槽上基本外设的中断服务子程序主板和扩展槽上基本外设的中断服务子程序 BIOS中的中的I/O子程序调用指令子程序调用指令 20H-3FH:DOS系统功能子程序系统功能子程序 40H-7FH:用户保留用户保留2)DOS 系统功能调用系统功能调用:近百个近百个-软接口软接口 三个方面三个方面:A 磁盘的读写管理磁盘的读写管理 B 内存管理内存管理 C 基本基本I/O管理管理21H号中断号中断是是DOS提供给用户的用于调用系统功提供给用户的用于调用系统功能的中断,它有近百个功能供用户选择使用,能的中断,它有近百个功能供用户选择使用,所所有这些调用已经包含了整个系统的功能有这些调用已经包含了整
5、个系统的功能,因此称因此称INT 21H 为系统功能调用由此得名为系统功能调用由此得名.主要包括设主要包括设备管理、目录管理和文件管理三个方面的功能备管理、目录管理和文件管理三个方面的功能第第3章章 Pentium的指令系统的指令系统42023-9-123)BIOS 系统功能调用系统功能调用:基本输入基本输入/输出模块输出模块BIOS:实现对输入:实现对输入/输出设备的控制,输出设备的控制,内含内含00 1FH 等类型中断子程序,包括显示器、磁盘、键等类型中断子程序,包括显示器、磁盘、键盘、盘、打印机等标准外设的驱动程序。打印机等标准外设的驱动程序。(参看中断类型分配表参看中断类型分配表 )B
6、IOS功能调用指对功能调用指对BIOS模块中的中断子程的调用。模块中的中断子程的调用。为使用方便为使用方便,已将所有子程序放在其中断服务程序中按顺序编号已将所有子程序放在其中断服务程序中按顺序编号,这个编号即为这个编号即为子程序的功能号子程序的功能号.通常按照如下通常按照如下4 4个步骤进行:个步骤进行:第第3章章 Pentium的指令系统的指令系统52023-9-12 在在AH寄存器寄存器中设置系统功能调用号中设置系统功能调用号 在指定寄存器中设置在指定寄存器中设置入口参数入口参数 执行指令执行指令INT 21H(或(或ROM-BIOS的中断向量号)实现中断服务程序的中断向量号)实现中断服务
7、程序的功能调用的功能调用 根据根据出口参数出口参数分析功能调用执行情况分析功能调用执行情况设置入口参数设置入口参数在在AH设置功能号设置功能号m执行中断指令执行中断指令INT N分析、应用出口参数分析、应用出口参数第第3章章 Pentium的指令系统的指令系统62023-9-12常用的常用的DOS系统功能调用系统功能调用(21H类型中断调用类型中断调用)入口参数入口参数 无无 功能号功能号 AH=01H 类型号类型号 21H 出口参数出口参数 AL=键入字符的键入字符的ASCII码码 实现功能实现功能 等待从键盘输入一个字符等待从键盘输入一个字符,检测检测 Ctrl-Break键键(退退出),
8、否则将出),否则将 键值送入键值送入AL,并在屏幕上回显并在屏幕上回显。1.键盘输入并回显键盘输入并回显(01H功能功能)MOV AH,01HINT 21H第第3章章 Pentium的指令系统的指令系统72023-9-12 MOV AH,1 ;等待从键盘输入等待从键盘输入 INT 21H CMP AL,Y ;是是Y?JZ yes CMP AL,y ;是是y?JZ yes no:.JMP exit yes:.exit:.例例 利用键盘输入的字符产生分支:利用键盘输入的字符产生分支:第第3章章 Pentium的指令系统的指令系统82023-9-12入口参数入口参数 DL=要显示字符的要显示字符的A
9、SCII 码码 功能号功能号 AH=02H类型号类型号 INT 21H出口参数出口参数 无无实现功能实现功能 显示指定字符显示指定字符,光标随动,光标随动,Ctrl-Break(退退出)出)。例例 显示字符显示字符AMOV DL,AMOV AH,02HINT 21H2.显示输出单个字符显示输出单个字符(02H功能功能)例例 使光标回到下一行的行首。使光标回到下一行的行首。MOV DL,0DH ;显示回车符显示回车符MOV AH,02HINT 21HMOV DL,0AH ;显示换行符显示换行符MOV AH,02HINT 21H第第3章章 Pentium的指令系统的指令系统92023-9-12入口
10、参数入口参数 DL=要输出的字符(要输出的字符(ASCII)功能号功能号 AH=05 H类型号类型号 21H出口参数出口参数 无无实现功能实现功能 把入口时放入把入口时放入DL的字符输出到的字符输出到 标准打印输出设备(默认接入标准打印输出设备(默认接入 并行接口打印机)并行接口打印机)MOV DL,“A”MOV AH,05H INT 21H3.打印机输出打印机输出(05H功能功能)第第3章章 Pentium的指令系统的指令系统102023-9-12入口参数入口参数 无无功能号功能号 AH=07 H类型号类型号 21H出口参数出口参数 AL=键入的字符的键入的字符的ASCII码码实现功能实现功
11、能 1)等待等待从标准输入设备从标准输入设备(键盘键盘)输入输入字符字符,不在屏幕上回显,不在屏幕上回显,送入送入AL中中 2)不用检查不用检查CTRL-BREAK4.键盘输入无回显键盘输入无回显(07H功能功能)第第3章章 Pentium的指令系统的指令系统112023-9-12 input:MOV AH,07H ;等待从键盘输入等待从键盘输入 INT 21H MOV DI,AL ;存入缓冲区存入缓冲区 CMP AL,0DH ;是回车符?是回车符?JNZ input ;不是,继续输入不是,继续输入 check:、例例 用不带回显功能输入密码时:用不带回显功能输入密码时:第第3章章 Penti
12、um的指令系统的指令系统122023-9-12入口参数入口参数 DS:DX=内存中以内存中以$为结束的字符串为结束的字符串 定义要显示的字符串,定义要显示的字符串,字符串尾应为字符串尾应为$,作为结束显示的标志。作为结束显示的标志。DS:DX=字符串的首地址字符串的首地址 功能号功能号 AH=09 H类型号类型号 21H出口参数出口参数 无无实现功能实现功能 显示字符串,遇显示字符串,遇$停止显示,光标随动。停止显示,光标随动。5.显示字符串显示字符串(09H功能功能)第第3章章 Pentium的指令系统的指令系统132023-9-12例例 编程显示字符串编程显示字符串 Jilin Unive
13、rsitydata SEGMENT ;定义显示的子符串定义显示的子符串stri DB Jilin University,$data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,stri MOV AH,09H ;调显示功能调显示功能 INT 21H MOV AH,4CH ;返回返回DOS INT 21H code ENDS END start第第3章章 Pentium的指令系统的指令系统142023-9-12 入口参数入口参数 DS:DX=缓冲区的首地
14、址缓冲区的首地址 (DS:DX)=限制最多输入的字符数限制最多输入的字符数功能号功能号 AH=0AH类型号类型号 21H出口参数出口参数 (DS:DX+1)=实际键入的字符个数实际键入的字符个数(不含回车符不含回车符)从从(DS:DX+2)开始顺序存放键入的字符串,开始顺序存放键入的字符串,回车符回车符0DH为串尾最后一字符。为串尾最后一字符。实现功能实现功能 等待从键盘输入字符串,存入设定的缓冲区内,等待从键盘输入字符串,存入设定的缓冲区内,同时回显字符串,光标随着移动,同时回显字符串,光标随着移动,回车符使光标回到行首。回车符使光标回到行首。注意事项:注意事项:应按要求先定义缓冲区,再调用
15、。应按要求先定义缓冲区,再调用。定义格式定义格式:DATA SEGMENT BUF DB 50 ;定义缓冲区长度定义缓冲区长度,不能为不能为0 DB?;实际输入的字符个数实际输入的字符个数 DB 50 DUP(?);定义具有缓冲区长度的存储区定义具有缓冲区长度的存储区 .DATA ENDS6.键盘输入到内存缓冲区键盘输入到内存缓冲区(0AH功能功能)第第3章章 Pentium的指令系统的指令系统152023-9-12例例 应用应用0AH功能输入字符串。功能输入字符串。data SEGMENT ;定义缓冲区定义缓冲区max DB 11 ;定义限制最多输入个数定义限制最多输入个数lenth DB?
16、;用于存放实际输入个数用于存放实际输入个数stri DB 11 DUP(?);用于存放输入的字符串用于存放输入的字符串data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH INT 21H ;调调0A输入功能输入功能 MOX CH,0 MOV CL,lenth ;取字符串长度放取字符串长度放CX中中 LEA BX,stri ;取字符串首址于取字符串首址于BX中中 MOV AL,BX ;应用输入字符应用输入字符 、code
17、ENDS 第第3章章 Pentium的指令系统的指令系统162023-9-12data SEGMENT ;定义缓冲区定义缓冲区max DB 11 ;定义限制最多输入个数定义限制最多输入个数lenth DB?;用于存放实际输入个数用于存放实际输入个数stri DB 11 DUP(?);用于存放输入的字符串用于存放输入的字符串data ENDS从键盘输入从键盘输入ABCD,回车,内存的存放结果回车,内存的存放结果:0B04414243440D00max07000000000000000080a0b0f12345690c0d0elenthstri地址地址内容内容DS:DX第第3章章 Pentium的
18、指令系统的指令系统172023-9-120AH功能注意事项功能注意事项:1.1.输入的字符均带回显,且光标随字符移动。输入的字符均带回显,且光标随字符移动。当输入回车符结束时,也回显回车符。当输入回车符结束时,也回显回车符。表现为功能调用结束后,光标回到了行首。表现为功能调用结束后,光标回到了行首。2.2.回车符回车符0DH作为一个输入的字符存放在字符串尾,作为一个输入的字符存放在字符串尾,但计数输入个数时,不包括回车键。但计数输入个数时,不包括回车键。实际最多能输入的字符数实际最多能输入的字符数=限制的最多数限制的最多数-1 (回车符占一个)(回车符占一个)3.3.执行完执行完0AH功能后,
19、功能后,DS和和DX的值不变,的值不变,DS:DX仍指向缓冲区的首地址。仍指向缓冲区的首地址。4.4.整个缓冲区的大小应为整个缓冲区的大小应为:限制的最多数限制的最多数+2 max DB 11,?,11 dup(?)第第3章章 Pentium的指令系统的指令系统182023-9-127.设置中断向量设置中断向量(25H功能功能)入口参数入口参数 AL=要设置向量的中断类型号要设置向量的中断类型号N DS:DX=中断子程的入口地址中断子程的入口地址(中断向量中断向量)功能号功能号 AH=25H 类型号类型号 21H 出口参数出口参数 无无 实现功能实现功能 将类型将类型N的中断向量设置在向量表中
20、的中断向量设置在向量表中,即即 (0:N 4)=类型类型N中断子程入口地址的中断子程入口地址的偏移值偏移值 (0:N 4+2)=类型类型N中断子程入口地址的中断子程入口地址的段值段值第第3章章 Pentium的指令系统的指令系统192023-9-12例例1 1 设置中断子程序设置中断子程序Sound 的中断向量,类型号为的中断向量,类型号为60Hcode SEGMENT ASSUME CS:codestart:、MOV AX,SEG sound MOV DS,AX MOV DX,Offset sound MOV AL,60H MOV AH,25H INT 21H 、INT 60H ;调用调用6
21、0H中断子程中断子程 、MOV AH,4CH INT 21H ;中断子程序中断子程序 sound PROC 、IRET sound ENDP code ENDS END start第第3章章 Pentium的指令系统的指令系统202023-9-12 入口参数入口参数 无无 功能号功能号 AH=4CH 类型号类型号 21H 出口参数出口参数 AL=EXITCODE。实现功能实现功能 终止当前程序,顺利返回终止当前程序,顺利返回DOSMOV AH,4CHINT 21H8.程序结束,返回程序结束,返回 DOS(4CH功能功能).EXIT 0第第3章章 Pentium的指令系统的指令系统212023-
22、9-12源程序指令代码段框架结构举例:源程序指令代码段框架结构举例:;.CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:EDAT,SS:STACKMAIN:MOV AX,DATA ;初始化初始化DS MOV DS,AX MOV AX,EDAT ;初始化初始化ES MOV ES,AX MOV AX,STACK ;初始化初始化SS MOV SS,AX MOV SP,OFFSET TOP ;初始化初始化SP;.:程序正文程序正文;.MOV AH,4CH INT 21HCODE ENDS END MAIN第第3章章 Pentium的指令系统的指令系统222023-9-12
23、常用的常用的BIOS系统功能调用系统功能调用(显示器功能调用显示器功能调用 INT 10H)1.清屏、清窗口功能清屏、清窗口功能入口参数入口参数 AL=0 CH=窗口左上角行号窗口左上角行号 CL=窗口左上角列号窗口左上角列号 DH=窗口右下角行号窗口右下角行号 DL=窗口右下角列号窗口右下角列号 BH=窗口属性窗口属性功能号功能号 AH=06H 或或 AH=07H类型号类型号 10H出口参数出口参数 无无 实现功能实现功能 按给定属性清除指定的窗口内容按给定属性清除指定的窗口内容第第3章章 Pentium的指令系统的指令系统232023-9-122.置光标位置置光标位置 入口参数入口参数 D
24、H=行号行号 DL=列号列号 BH=页号页号 功能号功能号 AH=02H 类型号类型号 10H 出口参数出口参数 无无 实现功能实现功能 将光标设置在指定的位置将光标设置在指定的位置第第3章章 Pentium的指令系统的指令系统242023-9-12例例 将光标设置在将光标设置在2行行5列列的位置的位置MOV DH,2MOV DL,5MOV BH,0MOV AH,2INT 10H 0列列0 行行79列列24 行行5列列1列列1 行行2 行行第第3章章 Pentium的指令系统的指令系统252023-9-121.标志操作指令标志操作指令 CLC(Clear carry flag )清清CF标志标
25、志 STC(Set carry flag)置置CF标志标志 CMC(Complement carry flag )对对CF求反求反 CLD(Clear direction flag )清清DF标志标志 STD(Set direction flag )置置DF标志标志 CLI(Clear interrupt flag )清清IF标志标志 STI(Set interrupt enable flag )置置IF标志标志 3.2.6 标志操作和处理器控制指令标志操作和处理器控制指令 注意注意:*只影响本指令指定的只影响本指令指定的标志标志第第3章章 Pentium的指令系统的指令系统262023-9-
26、12指令格式指令格式执行操作执行操作CLCCF=0STC CF=1CLMCF CLDDF=0STDDF=1CLIIF=0STIIF=1CF第第3章章 Pentium的指令系统的指令系统272023-9-122.暂停指令暂停指令HLT和无操作指令和无操作指令NOP 格式格式:HLT 执行执行:使使CPU处于暂停状态,这时处于暂停状态,这时CPU不进行任何操作。不进行任何操作。当当CPU发生复位或有来自外部的中断时,发生复位或有来自外部的中断时,CPU才才 脱离暂停状态。常用于等待外部中断,当程序中脱离暂停状态。常用于等待外部中断,当程序中 必须等待中断时,可用必须等待中断时,可用HLT,而不必用
27、软件死循,而不必用软件死循 环。中断结束后,继续执行环。中断结束后,继续执行HLT后的下一条指令。后的下一条指令。只有以下几种情况才能脱离暂停状态:只有以下几种情况才能脱离暂停状态:l RESET线上有复位信号线上有复位信号l 在在NMI线上有请求线上有请求l 在中断允许情形下(在中断允许情形下(IF=1),在),在INTR线上有请求线上有请求第第3章章 Pentium的指令系统的指令系统282023-9-12 格式格式:NOP 指令不执行任何操作,指令不执行任何操作,但占有但占有3个时钟周期,继续执行下条指令。个时钟周期,继续执行下条指令。l 其机器码占一个字节单元,其机器码占一个字节单元,
28、在调试程序时,修改程序用。在调试程序时,修改程序用。-在需要预留指令空间时用在需要预留指令空间时用NOP填充填充 -代码空间多余时也可以用代码空间多余时也可以用NOP填充填充 -还可以用还可以用NOP实现软件短暂延时实现软件短暂延时l 事实上,事实上,NOP和和XCHG AX,AX的指令代码一样,都是的指令代码一样,都是 90H第第3章章 Pentium的指令系统的指令系统292023-9-123.交权指令交权指令ESC和等待指令和等待指令WAIT 格式:格式:ESC mem mem指出一个存储单元,指出一个存储单元,不能是寄存器和立即数寻找方式不能是寄存器和立即数寻找方式 执行:执行:808
29、8从存储器中读出操作数并放到总线上,协处理器由此从存储器中读出操作数并放到总线上,协处理器由此 知道要执行什么操作,得到操作数,从而代替知道要执行什么操作,得到操作数,从而代替8088操作。操作。调动协处理器工作的联络手段,能区分要调用哪个协处理调动协处理器工作的联络手段,能区分要调用哪个协处理 器进行什么操作;能指出放在存储器中的操作数。器进行什么操作;能指出放在存储器中的操作数。格式:格式:WAIT 执行:执行:处理器等待,处理器等待,CPU处于空操作处于空操作,等待外中断发生,中断结束等待外中断发生,中断结束 后,可继续执行下面程序。后,可继续执行下面程序。第第3章章 Pentium的指
30、令系统的指令系统302023-9-124.总线封锁指令总线封锁指令 LOCK LOCK 实际上是一个指令前缀,可以放在任何一条指令前面。实际上是一个指令前缀,可以放在任何一条指令前面。这个前缀使得在这个指令执行时间内,这个前缀使得在这个指令执行时间内,8086 处理器的封锁输出处理器的封锁输出 引脚有效,即把总线封锁,使别的控制器不能控制总线;直到引脚有效,即把总线封锁,使别的控制器不能控制总线;直到 该指令执行完后,总线封锁解除用来维持总线的锁存信号。该指令执行完后,总线封锁解除用来维持总线的锁存信号。CPU与其他协处理器协同工作时,可以避免破坏有用信息。与其他协处理器协同工作时,可以避免破坏有用信息。注意注意:*LOCK前缀不能用在重复串操作指令之前。前缀不能用在重复串操作指令之前。第第3章章 Pentium的指令系统的指令系统博学 审问 慎思 明辨 笃行
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。