IT计算机课件微机原理_第1页
IT计算机课件微机原理_第2页
IT计算机课件微机原理_第3页
IT计算机课件微机原理_第4页
IT计算机课件微机原理_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三节8086/8088的指令系统(续)

内容:

五.控制传送指f令(Controltransfer

instructions)

包括四种:

转移指令,过程调用指令,循环控制指令,中断指令。

六、处理器控制指令包括两种:

标志处理指令,其他处理机控制指令

1

五.控制传送指令(Controltransferinstructions)

(一)、控制传送指令概述

控制传送指令包括四种:

转移指令,循环控制指令,过程调用指令,中断指令。

1、转移指令

转移指令包括两种:

⑴、JMP(Jump)无条件转移指令

(2)、Jcc条件转移指令

⑴、JMP(Jump)无条件转移指令

转移分成两类:段内或段间转移。

无条件转移指令有五种格式:

□段内直接短转移

□段内直接近转移

□段内间接转移

□段间直接远转移

□段间间接转移

JMP指令的操作:无条件地将控制转移到指令中规定的目的地

目标地址可以是:直接方式/间接方式给出。

JMP指令不影响标志位。

3

(2)、Jcc条件转移指令

汇编程序设计中常利用条件转移指令来实现分支。

“cc”-表示条件。

操作数必须是短标号。转移范围为:-128〜+127

具体条件转移指令分四种情况讨论:

•根据单个条件标志的设置情况转移

JZ(JE)/JNZ(JNE),JS/JNS,JO/JNO,JP(JPE)/JNP(JPO),

JB(JNAE、JC)/JNB(JAE、JNC),

•根据两个无符号数比较结果转移

JB(JNAE、JC)/JNB(JAE、JNC),JBE(JNA)/JNBE(JA)

•比较两个带符号数,并根据比较结果转移

JL(JNGE)/JNL(JGE),JLE(JNG)/JNLE(JG)

测试CX的值为零转移JCXZ4

2、过程调用指令

如果有一些程序段在不同地方反复出现,可以将这些程序

段设计成为过程(子程序)供调用。过程结束,返回调用处。

过程调用指令包括:过程调用指令和返回指令

(1)、CALL(Ca11aprocedure)调用

•CALL调用指令

段内直接调用段间直接调用

段内间接调用段间间接调用

⑵、RET(Returefromprocedure)返回

•RET返回指令

段内返回段间返回

段内带立即数返回段间带立即数返回

5

3、循环控制指令

循环控制指令用于使一些程序段反复执行形成

循环程序。

循环控制指令有三种:

⑴、LOOP(Loop)循环指令

(2)、L00PE/L00PZ(Loopifequal/Loopifzero)

当相等/为“0”循环

(3)、L00PNE/L00PNZ(Loopifnotequal/Loopif

notzero)

当不相等/不为“0”循环

6

4、中断指令

8086/8088CPU可以在程序中安排一条中断指令引起

中断过程,这种中断称为软中断。

8086/8088CPU共有三条中断指令:

(1)、INT(Interrupt)

(2)、INTO(Interruptifoverflow)

(3)、IRET(InterruptReturn)

7

归结控制转移指令分类

指令类型助记符

无条件转移JMP

条件转移JE/JZ,JNE/JNZ,JS,JNS,JP/JPE,JNP

/JPO,JO,JNO,JC,JNC,JB/JNAE,JAE/JNB,

JA/JNBE,JBE/JNA,JG/JNLE,JGE/JNL,

JL/JNGE,JLE/JNG,JCXZ

循环控制LOOP,LOOPE/LOOPZ,LOOPNE/LOOPNZ

过程调用CALL,RET

中断指令INT,INTO,IRET

8

(二).控制传送指令(Controltransfer

instructions)

1、转移指令

转移指令将程序控制从一处转换到另一处的最

直接方法。

在CPU内部,转移是通过将目标地址传送给IP来

实现的。

注意:CS—段地址转移地址

IP一偏移量调用地址寻址

□先介绍控制和非控制转移指令的概念

•非控制转移指令:指令本身对CS和IP均无操作,形成顺序执行结

构。

顺序执行结构:顺序存放,顺序执行

•控制转移指令:以CS和IP为主要操作对象,改变CS和IP寄存器

的值,就改变了程序执行的流程。

/程序是指令的集合

,指令在内存中顺序存放

10

在8086/8088中,指令的地址固定由CS和IP两个寄存器决定。

CS和IP两寄存器的内容决定了程序的流程,

改变CS和IP寄存器的值,就改变了程序执行的流程。

8086/8088中CS和IP的变化规则:

□reset复位后,(CS)=FFFFH,(IP)=0

故8088从内存FFFF:0000H处取第一条指令执行,

第一条指令在内存的ROM区。

□非控制转移指令

CPU取来一条指令后,自动将IP的值加上该指令的字节数,使IP顺序

指向下一条指令,CPU取来紧接着的指令执行。

(此时IP的变化由CPU内部的硬件自动完成)11

□控制转移指令以CS和IP为主要操作对象

控制转移指令改变CS和IP的值,使程序产生分支、

调用结构。

分支结构、调用结构:顺序存放,非顺序执行

例:比较(AX)、(BX)的大小,将大数存于(max)单元。

CMPAX,BX

JGEgreat

XCHGAX,BX

great:MOV[max],AX

12

(1)、JMP(Jump)无条件转移指令

JMP(jmp)跳转指令。

JMP指令必须指定转移的目标地址(或转向地址)。

转移分成两类:段内或段间转移。

段内转移:只要改变IP寄存器的内容

指在同一段的范围之内进行转移

即用新的转移目标地址代替原有的IP值。

段间转移:要修改IP、CS寄存器的内容

转到另一段去执行程序。

即转移目标地址=新的段地址和偏移地址两部分组成。

13

①段内直接短转移:

格式:川PSHORTOPR

OPR一在汇编语言中使用符号地址。

在机器语言中存放位移量Dg

位移量D8=符号地址的偏移地址-当前IP的值

执行操作:(IP)-(IP)当前+Dg

SHORT短属性标号

8位位移量Dg的范围在(-128-127)之间,占有一个字节。

而指令本身占有两个字节。

14

例如:代码段内有一条无条件转移指令在汇编语言中使用符号地址。

JMPSHORTNEXT指令执行过程:

NEXT—在汇编语言中使用符号地址

(IP)一(IP)当前+Dg

源程序:

条件转移指令:JMPSHORTnext(IP)当前D=50H=1050H-1000H

O

•••1

•・•3000:1000H

•・・

next:MOVAL,03H3000:1050HOP

03H

QP)=(IP)当前+D8

15

8位位移量Dg的范围在(-128-127)之间,否则出错。

源程序:

如:tager:

next:

JMPtager

-128

条件转移指令:JMPSHORTnext

JMPSHORTtager

+127

tager:

next:AL,03H

标号与控制转移指令在同一段中,后引用的标号可以不用SHORT,

16

前引用的标号必须使用SHORT

②段内直接近转移:

格式:JMPNEARPTROPR

OPR一在汇编语言中使用符号地址。

在机器语言中存放位移量D16

位移量D16=符号地址的偏移地址-当前IP的值

执行操作:(IP)一(IP)当前+D16

NEAR近属性标号

位移量为D16范围:-32768-+32767H,占有两个字节。

而指令本身占有三个字节。可以转移到段内的任一位置。

过程:如同SHORT,只是位移量为Di6范围-32768-+32767H,

占有两个字节。

17

③段内间接转移:(CS)不变,只改变(IP)

格式:川PWORDPTROPR

OPR一为16位寄存器、

或存储器(除立即数以外的任何一种寻址方式)

执行操作:(IP)—(EA)或(IP)—(regl6)

指令格式举例:

JMPAX

JMPSI

JMPTABLE[BX];操作数已定义为16位存储器

JMPALPHA.WORD;操作数已定义为16位存储器

JMPWORDPTR[BP][DI]

18

例:

(DS)=1000H,(BX)=1000H,(CX)=5000H,(CS)=3000H

(11000H)=1234H,(11002H)=5678H

JMPCX

(IP)=5000H

JMPWORDPTR[BX]

(CS)=3000H,(IP)=1234H

(PA)=(16dX(DS)+(BX))=(11000H)=l234H

④段间直接(远)转移:(CS)、(IP)都改变

格式:JMPFARPTROPR;

OPR一在汇编语言中使用符号地址。

符号地址与指令不在同一个段里。

在机器语言中则要指定转向地址的偏移地址和段地址

执行操作:(IP)-OPR所在的段内偏移地址。

(CS)-OPR所在的段的段址。

而指令本身占有5个字节:

用2个字分别存放符号地址的段值、偏移值,

用1个字节存放操作码。20

FAR远属性标号,标号与控制转移指令不在同一段中。

在汇编语言中,在机器语言中存放如下:

ClSEGMENT

fEAOP码

...50新(IP)二025QH

JMP指令102

1I,

JMPFARPTRnext-prog00新(CS)二2006H

20

ClENDS•

C2段20000H

C2SEGMINT**

nextprog:

•••20250H+

next_prog:...

*•

••

2000:0250H**

•••

C2ENDS

⑤段间间接转移:(CS)、(IP)都改变

格式:JMPDWORDPTROPR

OPR一可以使用存储器

(除立即数和寄存器以外的任何一种寻址方式)

执行操作:(IP)一(EA)(CS)-(EA+2)

例:已知(BX)=1000H,(SI)=2000H,(DS)=2000H

(23000H)=2211H,(23002H)=4433H

JMPDWORDPTR[BX][SI]

则:(BX)+(SI)=3000H

(IP)=(PA)

=(16dX(DS)+(BX)+(SI))=(23000H)=2211H

(CS)=(PA+2)=4433H22

(2)、Jcc条件转移指令

根据单个条件标志的设置情况转移(10种)

JZ(JE)/JNZ(JNE),JP(JPE)/JNP(JPO),

JS/JNS,JO/JNO,JB(JNAE、JC)/JNB(JAE、JNC),

根据两个无符号数比较结果转移(4种)

JB(JNAE、JC)/JNB(JAE、JNC),JBE(JNA)/JNBE(JA)

比较两个带符号数,并根据比较结果转移(4种)

JL(JNGE)/JNL(JGE),JLE(JNG)/JNLE(JG)

指令格式:JccOPR

操作:根据上一条指令所设置的条件码来判别测试条件转移O

每一种条件转移指令都有它的测试条件。

满足条件时:

(IP)-(IP)当前+符号扩展到16位后的位移量Dg,

使用相对寻址方式,范围-128-+127个字节

不满足条件时:

(IP)不变,顺序执行下一条指令

24

注意几点:

①所有条件转移指令都是相对转移形式,

范围(-128-+127)o

当需往一个较远地方进行条件转移时,

选用条件转移转到附近一个单元,

然后,再用无条件转移转到较远的目的地。

②条件转移指令中,相当一部分指令是在比较完二个数大小后,

根据结果而决定是否转移,

③条件转移指令不影响标志位25

按转移条件不同,条件转移指令可以分为四大类:

①以单个状态标志作为转移条件助记符转移条件

助记符转移条件助记符转移条件

JZ/JEZF=1JNZ/JNEZF=0

JSSF=1JNSSF=0

J0OF=1JNOOF=0

JP/JPEPF=1JNP/JPOPF=0

JCCF=1JNCCF=0

②以CX的值为0作为转移条件

助记符转移条件

JCXZ

cx=o26

③以两个无符号数比较的结果作为转移条件

转移条件

JA/JNBECFVZF=O高于/不低于等于

JAE/JNB/JNCCF=O高于或等于/不低于/无进位

JB/JNAE/JCCF=1低于/不高于等于/有进位

JBE/JNACFVZF=1低于或等于/不高于

④以两个带符号数比较的结果作为转移条件

助记符转移条件

JG/JNLE(SF©OF)VZF=0大于/不小于等于

JGE/JNLSF©OF=0大于或等于/不小于

JL/JNGESF©OF=1小于/不大于等于

JLE/JNG(SF©OF)VZF=1小于或等于/不大于

27

条件转移指令应用

例:比较二个数是否相等,如相等做动作1,否则做动作2

CMPAX,BX

JEaction-1

CMPAX,BX

Action-2:

JNZaction_2

action.l:

action-1:

action-2:

28

例:X,Y放在X,Y单元里,(带符号数判断)

先判X>50,YES-too.high,NO-做X-Y,溢出

overflow,否则求|X-Y|—result

MOVAX,X

CMPAX,50

JGtoo-high;大于转too_high

SUBAX,Y

JOoverflow;溢出转overflow

JNSnonneg;S=04fnonneg

NEGAX

nonneg:MOVresult,AX

too.high:

overflow:

29

例:在M中有一个首地址为array的N字数组,要求测试其中正数、0及负

数的个数.(带符号数判断),正数个数放在:(DI)中,0的个数放在:

(SI)中,负数的个数放在:N-(DI)-(SI)送(AX)

如果没有负数转skip,如果有负数转neg_val

程序:movex,N;N字数组

movbx,0

movdi,bx

movsi,bx

again:cmpwordptrarrary[bx],0

jleless

inc正数个数

di;movax,N

shortneat

jmpsubax,di

less:neat

jlsubax,si

incsi;0的个数

jzskip;没有负数

neat:addbx,2*J1

jmpnearptrneg_val

decex

jnzagainskip:

neg.va1:....

30

2、过程(子程序)调用指令

子程序—程序中具有独立功能的部分编写成独立程序模块。

子程序(过程)定义格式:

符号名PROC类型

符号名ENDP

子程序调用和返回指令:CALLRET(RETURN)

过程有两种类型:

按过程与调用语句间的位置,过程有两种类型。

NEAR类型:调用指令与过程在同一个段中

FAR类型:调用指令与过程不在同一个段中

CALL指令和RET指令都不影响条件码。31

(1)、CALL(Callaprocedure)调用

•CALL调用指令调用地址由指令给出

CALL调用指令有4种:

段内直接调用段间直接调用

段内间接调用段间间接调用

32

①段内直接调用

格式:CALLDST;(SP)-(SP)-2,((SP)+1,(SP))-(IP)

;(IP)-(IP)+D16

DST—给出转向地址(子程序的入口地址)。

D16—机器指令中的位移量(转向地址和返回地址之差)。

位移量为D16范围-32768-+32767H,占有两个字节。

33

工作过程如下:

例:NEAR类型过程

codeSEGMENT;code段

CALLsubp;调用指令YYY入栈,16=subp-yyy

XXX:YYY

subpPROCNEAR;过程定义

•••

RET;返回

subpENDP

codeENDS34

②段内间接调用:

格式:CALLDST;

tWORDPTROPR

OPR一为16位寄存器,或存储器(除立即数以外的任何

一种寻址方式)

执行操作:

(SP)—(SP)-2

((SP)+1,(SP))-(IP)

(IP)一(EA)

EA一由DST寻址方式所确定的有效地址。

35

③段间直接调用:

格式:CALLFARPTRDST;

执行操作:

(SP)-(SP)-2

((SP)+1,(SP))-(CS)

(SP)-(SP)-2

((SP)+1,(SP))-(IP)

(IP)-DST偏移地址(指令中第2,3字节)

(CS)-DST段地址(指令中第4,5字节)

36

例:

CSEG1SEGMENT

CALLFARPTRsubp;a处的CS:IP入栈转subp

a:•••

•••

CSEG1ENDS

CSEG2SEGMENT

•••

subpPROC

•••

•••

RET

subpENDP

•••

CSEG2ENDS37

④段间间接调用:

格式:CALLFARPTRDST

执行操作:

(SP)-(SP)-2

((SP)+1,(SP))-(CS)

(SP)-(SP)-2

((SP)+1,(SP))-(IP)

(IP)—(EA)

(CS)―(EA)+2转子程序入口

EA一由DST的寻址方式确定的有效地址。

38

(2)、RET(Returefromprocedure)返回

•RET返回指令

放在子程序的末尾

使子程序在功能完成后返回调用程序继续执行。

*为能准确返回,返回指令类型与调用指令类型相对应。

RET返回指令有4种:

段内返回段间返回

段内带立即数返回段间带立即数返回

在子程序调用时,返回地址入栈

返回时:将返回地址出栈(IP)(段内或段间)。

(CS)(段间)。

39

①段内返回:

格式:RET;

机器码:C3H或者C2H

执行操作:(IP)一((SP)+1,(SP))

(SP)-(SP)+2

②段间返回:

格式:RET;

机器码:CBH或CAH

执行操作:(IP)-((SP)+1,(SP))

(SP)-(SP)+2

(CS)<-((SP)+1,(SP))

(SP)-(SP)+2

③段内带立即数返回

格式:RETEXP;

执行操作:(IP)一((SP)+1,(SP))

(SP)―(SP)+2

(SP)-(SP)+D16

EXP—是一个表达式

计算出来的常数成为机器指令中位移量Dw修改堆栈

指针。

41

DELCHARPROC

例如:RETEXP堆栈使用情况:

RET4

CODEMENT

SEGDELCHARENDP

ASSUMECODE,DS:DATA

CS:CODEENDS

¥FAR

MAINPROCENDSTART

START:MOVAX,DATA

RETEXP堆栈使用情况:

MOVDS,AX

PUSHBXCALLDELCHAR--XXXXH--■

PUSHCX4——RET

PUSHCX—-(ex)--

CALLDELCHAR

CS:XXXXMOVAH,4CHPUSHBX—"(BX)—,1

INT21H(SP)>4——RET4

MAINENDP

④段间带立即数返回:

格式:RETEXP;

执行操作:

(IP)-((SP)+1,(SP))

(SP)-(SP)+2

(CS)一((SP)+1,(SP))

(SP)-(SP)+2

(SP)一(SP)+D16

CALL指令和RET指令都不影响条件码。43

例:学习使用段内、段间直接调用指令的使用及堆栈情况

主程序MAIN在一个代码段中

子程序PRO-APRO-BPRO-C在另一个代码段

程序调用关系:

44

堆栈情况:

SPSPSP

O1OOH|OORCH|OORAH|

TOS

25OOH

1*-1OOOH11OOOH

O5OOHO5OOH

<3>1

3<2)

SPSPSP

IOOF8bf||OORAH11

4OOOHTOS4OOOH

TOS25OOH25OOH

1OOOH1OOOH

O5OOHO5OOH

~\〈5)

SPSPSP

|OORAH|1|OORCH____1

4OOOH4OOOH

37OOH37OOH

TCS:TOS

1OOOHr1OOOH

O5OOHO5OOH

,.

(7)<8)

45

3、循环控制指令

格式:LOOPxx符号地址

执行操作:

①(CX)-(CX)-1此操作不影响标志

②检查转移条件xx,满足转向目标地址去执行;

不满足执行LOOPxx后一条指令

转移方式只允许段内直接短方式,跳转范围-128-127

助记符转移条件不转移条件

LOOPCX#0cx=o

LOOPZCXW0且ZF=1CX=O或ZF=O

LOOPNZCXwO且ZF=OCX=O或ZF=1

46

与条件转移指令不同的是:循环指令隐含(CX)减1操作

例:用循环指令将BL寄存器的内容按二进制形式显示出来

学习:LOOP指令

MOVCX,8

next:ROLBL,1

MOVDL,BL

ANDDL,00000001B

ADDDL,00110000B

MOVAH,2

INT21H

DECCX

JNZnextLOOPnext

47

循环指令说明:

•LOOP退出循环条件是(CX)=0

•LOOPZ和LOOPNZ提供了提前结束循环的可能,不一定要等到

(CX)=0才退出循环。

▲在串中查找字符,查到了,就可退出,

可用LOOPNZ,不相等时继续查找。

▲比较两串时,当有字符不等就可退出,说明两字符串不等。

可用LOOPZ,当相等时继续比较。

▲执行完LOOPNZ或LOOPZ后,根据ZF标志的值判断结果

对查找字符,ZF=1,说明找到;否则没有找到。

对串比较,ZF=1,说明两串相等;否则不等。

48

用循环指令:LOOPNZnext

MOVCX,N

MOVAX,SEGstring

MOVDS,AX

LEABX,string

MOVAL,2OHLOOPNZnext

JZfind

next:CMPAL,[BX]

PUSHFJMPexit

INCBX

find:......

POPF

exit:结束出口

50

思考:

①去掉指令JMPexit,程序执行结果会怎样?

②PUSHF、POPF可否去掉?若要去掉,程序如何修改?

③执行完LOOPNZ后,可否根据CX=O来判断查找结果?

有人认为CX=O,即说明没找到,对吗?

51

用LOOPZ和LOOPNZ指令提供提前结束循环的可能性。

有时需要字符串中查找一个字符,找到后可提前结束循环,用LOOPZ、

LOOPNZ来处理。

例:40个元素构成的数组,找出第一个非零元素。

MOVCX,28HDISPLAY1...

RET

MOVSI,OFFHDISPLAY2...

RET

NEXT1:INCSI

CMPBYTEPTR[SI],0

LOOPZNEXT1;当2=1、(CX)r0循环;

当Z=0,或(CX)=0结束循环。

JNZOKK;当找到非零元素转OKK。

CALLDISPLAYl;当找不到非零元素转DISPLAYl

OKK:CALLDISPLAY2

52

⑶、小结:

・指令格式:JMP操作数

操作数执行操作

符号地址(SHORT)(IP)—(IP)当前+8位位移量

符号地址(NEAR属性)(IP)一(IP)当前+16位位移量

reg(16位)或mem(DW类型)(IP)—(reg)或(IP)—(mem)

符号地址(FAR属性)(IP)一符号地址的偏值

(CS)一符号地址的段值

mem(DD类型)(IP)—(mem),(CS)—(mem+2)

/当前IP的值为控制转移指令下一条指令的偏移地址。

/位移量=符号地址的偏移量-当前IP的值。

/符号地址(目标地址)=当前IP的值+位移量

53

转移方式:由cs是否变化、以及操作数类型决定情况如下表

转移方式CS操作数跳转范围

段内直接短方式不变符号地址(SHORT)-128-127即0-FFH

段内直接近方式不变符号地址(NEAR属性)一个段内0-FFFFH

段内间接方式不变Regmem(DW类型)一个段内0-FFFFH

段间直接方式变符号地址(FAR属性)整个内存0-FFFFFH

段间间接方式变mem(DD类型)整个内存0-FFFFFH

54

♦各控制转移指令允许使用的转移方式

转移方式无条件转移条件转移循环转移子程调用

JMPJccLOOPxxCALL

段内直接短方式v7X

段内直接近方式XX

段内间接方式XX

段间直接方式XX

段间间接方式XX

55

例:JMPagain(M)

JMPBX(M)

JMPWORDPTR[BX](M)

JMPDWORDPTR(M)

JzAX(x)

LOOPBX(x)

Jnznext(x)

(若next的位移量超出-128-127)

指令JMP、CALL、Jcc、LOOPxx本身对标志无影响。

56

4、中断指令

□中断(Interrupt):

有时当系统运行或程序运行期间遇到某些特殊情况

需要计算机自动执行一组专门的例行程序来进行处理。

□中断例行程序(或中断子程序)(Interrupt

routine):所执行的这组程序就称为中断子程序。

□种类:

中断分为内部(软)中断和外部(硬)中断两种。

•内部中断一如除法运算中除数为0、中断指令引起的中

断。

>外部中断一处理I/O设备与CPU之间的通信。

57

□CPU响应一次中断自动完成三件事情:

•(FLAG)入栈一保护现场,

•(CS),(IP)保存入栈一保留断点,

・转中断例行程序去执行。

□中断返回时:

恢复(IP)、(CS)及(FLAG)

♦中断向量:中断例行程序入口地址。

IBM-PC中,存储器的最底地址00000H——003FFH为中断向

量区,存放256种类型中断例行程序入口地址,每个中断向

量占4个单元。

卷中断指定类型号Nx4——取得指定类型的中断向量地址。

内存0:0000H-0:03FFH区域中,构成中断向量表,存放中断处理程序人口地址。

每4个单元对应1个中断源。关系如下表:

中断处理程序入口地址的地址类型

00000H-00001H类型0(IP)

00002H-00003H类型0(CS)

00004H-00005H类型1(IP)

00006H-00007H类型1(CS)

00008H-00009H类型2(IP)

0000AH-0000BH类型2(CS)

0000CH-0000DH类型3(IP)

0000EH-0000FH类型3(CS)

00010H-00011H类型4(IP)

00012H-00013H类型4(CS)

••••••

003FCH-003FDH类型255(IP)

003FEH-003FFH类型255(CS)

例:中断类型9,9X4=36

00024H—00027H单元中放中断向量。

IBM-PC机中为每个类型规定了一种功能。

类型0除数为0中断例行程序

类型1单步

类型2非屏蔽中断,NMI

类型3设置断点

类型4溢出处理中断,INTO指令

类型10显示设备中断

类型20程序结束中断

类型21DOS系统功能调用功能程序

*除非特别注明,类型号是以16进制形式表示的。60

(1).介绍几条指令:INTn,IRET

格式:INTn;n一常数或表达式,n=0一255

或INTO

执行操作:

(SP)-(SP)-2,((SP)+1,(SP))-(FLAG)

(SP)-(SP)—2,((SP)+1,(SP))-(CS)

(SP)-(SP)-2,((SP)+1,(SP))-(IP)

(IP)-(Nx4)

(CS)-(Nx4+2)

清除IF、TF,避免进入中断以后不被外面其它中断所打断

及进入中断以后按单步执行。61

□类型0-3的中断称为内部中断。

♦类型0:指令系统没有INTO这条指令

③除数为0中断

除数为0:它既不是外部中断也不是软件中断。

是由CPU自身产生的,所以无对应中断指令。

・有符号数进行除法所得的商超出规定范围

有符号数进行除法运算,所得的商超出规定范围,

CPU自动产生类型为0的中断,转入响应的中断处理程

序。

62

♦类型1——单步中断

TF=1进入单步中断。

单步中断不是由外部硬件或程序中的中断产生,

而是CPU测试TF=1时产生的。

单步中断——每执行一条指令,进行一次单步中断处理,

显示出一系列内部寄存器的值,并告示一些附

带的信息。

一般用于调试程序中逐条执行用户程序。

对于有重复前缀串操作指令——单步操作下,每重复

一次将产生一个单步中断,而不是整个串操作结束后进入单

步操作。

63

♦类型2—NMI中断,非屏蔽中断

NMI中断是由NMI引腿引入,不受IF屏蔽,

只要NMI腿出现中断请求

中断处理子程序入口地址在0:0008H--------0:000BH中,

CPU予以响应,进入对应的中断处理。

一般用于处理系统的重大故障。

64

♦类型3——断点中断8088提供的一种调试手段。

设置断点过程(在DEBUG下):

用户程序指定断点:

♦用断点的中断指令INT3来代替原有指令,

把用户原有指令进栈保存,这样运行到断点处

执行INT3,转入中断处理程序,显示一系列寄存器值,并

给出一些重要信息,用户可判断正误。

♦断点中断还负责恢复进入中断前的被INT3替换掉

的那条指令。

65

⑵类型4—溢出中断,INTO指令

格式:INTO;该指令检测OF标志,

OF=1执行INTO,否则执行INTO下一条执行。

执行操作:

(SP)-(SP)-2((SP)+1,(SP))-(FLAG)

(SP)-(SP)-2((SP)+1,(SP))-(CS)

(SP)-(SP)-2((SP)+1,(SP))-(IP)

(IP)(10H)

(CS)-(12H)

IF=TF=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论