上海工程技术大学微机原理及接口技术yp 第3章 8086的指令系统_第1页
上海工程技术大学微机原理及接口技术yp 第3章 8086的指令系统_第2页
上海工程技术大学微机原理及接口技术yp 第3章 8086的指令系统_第3页
上海工程技术大学微机原理及接口技术yp 第3章 8086的指令系统_第4页
上海工程技术大学微机原理及接口技术yp 第3章 8086的指令系统_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

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

文档简介

1第3章8086的指令系统2几个概念8086的寻址方式8086指令集主要内容3CPU内部14个16位寄存器8086CPU内部寄存器问4一、几个概念指令:是指使计算机执行某种操作的命令。指令系统:是指处理器所能成的所有指令的集合------指令集,每种计算机都有组它的指令系统。机器指令:用二进制编码(代码各种组合)形式表示一条指令称为机器指令。通常指令以二进制编码的形式存放在存储器中,CPU可以直接识别机器指令。符号指令:用符号表示的指令称为符号指令。5指令的组成:任意一条指令都由操作码和操作数构成。操作码规定了计算机执行什么样操作。操作数它指明了操作的对象和操作对象的地址。6一条指令要解决的两个问题:要指出进行什么操作——操作码;要指出操作数和操作结果放在何处——寻址方式。因此:7组成操作数操作码CPU指令[标号:]指令助记符

[操作数[,操作数]][;注释]寻找操作数或操作数地址的方式指明了操作的对象和操作对象的地址规定了计算机执行什么样操作任意一条指令都由操作码和操作数构成格式寻址方式?8如数据传输指令,格式

:MOV目的操作数,源操作数(助记符)操作码部分操作数可见,指令中的操作数有源操作数和目的操作数之分如:MOVAX1234H9二、

8086的寻址方式

主要内容:8086的寻址方式说明寻址方式介绍立即数寻址;寄存器寻址;直接寻址;寄存器间接寻址;基址/变址寻址;基址+变址寻址;I/O端口寻址108086的寻址方式说明寻址方式:是寻找操作数或操作数地址的方式。存放位置:8086指令中的操作数有三种可能的存放位置。①操作数在指令中,即指令的操作数部分就是操作数本身,这种操作数叫立即操作数。

如:MOVAX,1234H

11②操作数包含在CPU的某个内部寄存器中,这种操作数叫寄存器操作数,这时指令的操作数部分是CPU内部寄存器的一个编码。

如:MOVAX,BX

12③操作数在内存的数据区中,这种操作数叫存储器操作数,这时指令的操作数部分包含此操作数所在的内存地址。

如:MOVAX,[1234H]

此外,操作数在端口中。

如:INAL,20

13

逻辑地址:8086CPU中,内存中任何存储单元的实际地址都由两部分组成:段基址和段内偏移地址,用段基址:段内偏移地址来表示。有效地址EA

:在存储器寻址时,指令的操作数部分给出的地址是段内偏移地址。段内偏移量由几个基本部分组合而成,所以也称为有效地址EA。

★★14

组成有效地址EA的基本部分包括:基址寄存器内容、变址寄存器内容、位移量等。其中,基址、变址寄存器中通常为某局部存储区的起点。有效地址EA的计算公式如下:

EA=[基址寄存器BX、BP]+[变址寄存器SI、DI]

+位移量

有效偏移地址15立即寻址操作数就在指令中提供——立即数寻址方式。即操作数直接包含在指令中,它紧跟在操作码的后面,与操作码一起放在代码段区域中。寻址方式介绍

立即数总是和操作码一起被取入CPU的指令队列,在指令执行时,不再需要访问存储器。16立即寻址MOVAX,34EAH

;将34EAH送AX,AH中为

34H,AL中为EAHMOV BL,20

;将十进制数20送入BL寄存器AX17

立即数可以是8位、16位操作数。若是16位,低位字节存放在相邻两个字节存储单元的低地址单元中。立即数可以用二进制数、八进制数、十进制数以及十六进制数来表示。如:

MOVAL,10;十进制数(D) MOVAL,00100101B;二进制数(B) MOVAL,0AH ;十六进制(H)

18寄存器寻址操作数在CPU内部寄存器中——寄存器寻址方式。如:

MOVBP,SP;其过程如图所示:

寄存器寻址图示SPBP19寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP(通用寄存器)。

寄存器可用来存放源操作数,也可用来存放目的操作数。寄存器寻址方式是CPU内部的操作,不需要使用访问总线周期,因此指令的执行速度比较快。MOVAX,1234H;AX的内容为1234HMOVAL,AH;AH的内容12H送AL如20直接寻址

操作数在内存单元中,指令中[]给出被访问单元的逻辑偏移地址,即有效地址(EA),再转换为物理地址,选中内存单元,读出操作数——直接寻址如: MOV AX,[3E4CH]

EA21MOV AX,[3E4CH];段基址(DS)×10H+3E4CH(偏移地址EA)源操作数物理地址:段基址(DS)×10H+1234H段基址(ES)×10H+1234HMOV [1234H],BL;MOV ES:[1234H],BL目的操作数物理地址:;目的操作数物理地址:在对内存进行寻址时,需计算物理地址。物理地址=段基址×10H+偏移地址有效地址(EA)

22

在默认方式下,操作数存放在数据段(DS)。如果要对除DS段之外的其他段(CS、ES、SS)中的数据寻址,应在指令中增加前缀,指出段寄存器名,这就是段跨越。23MOV AX,[1070H],假设(DS)=3000H,问存放源操作数的物理地址及其AX的内容。

物理地址=段基址(DS)×10H+(EA)

=30000H+1070H=31070H

指令的执行情况如图指令的执行结果是:(AX)=2520H,即内存31070H单元的内容传送到寄存器AX中.练习:24寄存器间接寻址

操作数在内存单元中,操作数的有效偏移地址(EA)不是直接给出的,EA在指定的寄存器中,即EA[寄存器]。如:MOV SI,61A8H

;被访问内存单元逻辑偏移地址61A8H,送SIMOV DX,[SI];SI寄存器给出被访问内存单元逻辑偏移地址图解252000H61A8H物理地址=(DS)×10H

+(SI)若(DS)

=2000H×10H

DHDLDSSI261A8H34H12H12H34H261A9H26BX、SI、DI以DS作为默认段寄存器,BP、SP以SS作为默认段寄存器BP、BX为基址寄存器SI、DI为变址寻址寄存器EA可放在寄存器BX、SI、DI、BP、SP中。默认下,可用段寄存器DS,SS。27逻辑地址的隐式用法:

DS:BX;SI;DISS:BP;SP。操作数的物理地址计算公式有以下几个:物理地址=(DS)×10H+(BX)

物理地址=(DS)×10H

+(DI)

物理地址=(DS)×10H

+(SI)

物理地址=(SS)×10H

+(BP)

物理地址=(SS)×10H

+(SP)若指令中指定了跨越前缀(段跨越),则可以从指定的段中获得操作数。28基址/变址寻址(相对寻址)

操作数在内存单元中,在寄存器间接寻址给出的偏移量(EA)基础上,加一个相对位移量,位移量是带符号的16位十六进制数。当使用BX或BP时--基址寻址当使用SI或DI时--变址寻址29

如:MOV CX,36H[BX]EA=36H+(BX)段基址(DS)×10H+36H+(BX)源操作数的物理地址:再如:MOV -20[BP]

,ALEA=-14H+(BP)目的操作数物理地址:段基址(SS)×10H-14H+(BP)30基址+变址寻址

操作数在内存单元中,EA由三部分组成:基址寄存器BX或BP的内容+变址寄存器的内容+位移量。如:MOV AX,8AH[BX][SI];EA=8AH+(BX)+(SI)物理地址为(DS)X10H+8AH+(BX)+(SI)。31

在基址加变址寻址方式中,基址寄存器、变址寄存器的使用规定以及段寄存器的默认规定与基址/变址寻址方式相同。

在寻址方式中,当基址寄存器和变址寄存器的默认段寄存器不同时,一般由基址寄存器来决定默认用哪一个段寄存器作为段基址。若在指令中规定了段跨越,则可以用其他寄存器作为段基址。32

物理地址=(DS)×10H+(BX)+(SI)+位移量或物理地址=(SS)×

10H+(BP)+(DI)+位移量

如:MOVAX,20HES:[BX][DI]则物理地址=(ES)×10H+(BX)+(DI)+20H逻辑地址的隐式用法:段跨越写法:33I/O端口寻址8086采用独立编址,因此,寻址通过I/O指令,见I/O指令。34三、

8086的指令集8086指令系统按功能分6类:数据传送类算术运算类位操作类(逻辑运算与移位指令)串操作类程序控制类处理机控制类常用的符号累加器ax,al寄存器r:ax,bx,cx,dx,si,di,sp,bp,….段寄存器seg:ds,es,ss,cs内存mem:[nn],[bx],[si],[di],[bp][bx/bp+count],[si/di+count][bx+si/di+count],[bp+si/di+count]立即数im368086指令集-数据传送指令通用数据传送指令累加器专用(I/O)传送指令目标地址传送指令标志寄存器传送指令数据传送指令37数据传送类指令

目标指令的共同特点是:1、除POP和SAHF指令外,这类指令的操作结果不会影响FR寄存器中的标志。2、指令中有两个操作数,目的操作数和源操作数,其执行过程为:目的操作数源操作数,当指令中仅列出一个操作数时,另一操作数为隐含。39传送指令(MOV)

指令格式:MOV目的操作数,源操作数8086指令集

-数据传送指令-通用传送指令40

MOV的数据传送方向示意图不包括IP41使用中需要注意的是:①MOV指令不能在两个存贮器单元之间进行数据直接传送。②MOV指令不能在两个段寄存器之间进行数据直接传送。③立即数不能直接传送给段寄存器。④目的操作数不能为立即数、CS。⑤源操作数和目的操作数数据类型相同。42(2)堆栈操作指令进栈指令PUSH

出栈指令POP指令格式:

PUSH源操作数

POP目的操作数源操作数可以是通用寄存器、段寄存器和存储器。目的操作数可以是通用寄存器、段寄存器(CS除外)或存储器。43

操作过程:

PUSH进栈指令使SP-2→SP,然后将16位的源操作数压入堆栈,先高位后低位。

POP出栈指令的执行过程与PUSH相反。它从当前栈顶弹出16位操作数到目的操作数,同时SP+2→SP,使SP指向新的栈顶。44说明:①堆栈操作总是以字为单位进行。②PUSH和POP指令不影响标志位。③允许PUSHCS,但不允许POPCS。④堆栈的“后进先出”。指令格式为:XCHG目的操作数,源操作数XCHGR,OPRDOPRD:R,MEM

操作数不能为立即数;

源和目的不能同时为存储单元;

段寄存器不能作为操作数。(3)XCHG交换指令

468086指令集

-数据传送指令-累加器专用传送指令(1)输入输出指令输入指令格式:

INAL,nINAX,nINAL,DXINAX,DX输出指令格式:

OUTn,ALOUTn,AXOUTDX,

ALOUTDX,

AXn表示8位端口地址(00H~FFH)47

在计算机中,输入/输出操作是由CPU利用输入、输出指令并通过累加器AL或AX进行的。输入指令完成由输入端口到CPU的信息传送,输出指令完成从CPU到输出端口的信息传送。指令功能:在AL或AX寄存器与I/O端口之间传送数据。

说明:48由指令直接提供端口号,如:IN AL,50H ;将50H端口的字节读入ALIN AX,70H ;分别将70H/71H端口的内容读入AL、AHOUT44H,AL ;将AL中的内容输出到44H端口OUT80H,AX ;将AL、AH中的内容分别输出到80H、81H两端口

例子49端口号由DX间接给出如:INAL,DX;从DX所指的端口中读取INAX,DX;从DX和DX+1所指出的两个端口中读取OUTDX,AL;将AL中的字节输出到DX所指的端口中OUTDX,AX;将AL中的字节输出到DX所指的端口中,将AH中的字节输出到DX+1所指端口中的例子50INAL,21H返回51OUT43H,AL返回 指令格式为:XLAT

功能[bx+al]->al

例:查表求n的平方。n:[0-9]1、将0-9的平方表建立在偏移地址为2000H的内存中,如图。2、查表

3)XLAT换码指令完成求5的平方指令序列为:MOVBX,2000H;指向平方表的首地址MOVAL,5;将5换码成5的平方值XLAT ;查表,平方值在AL中3、目标地址传送指令1)LEA有效地址传送到寄存器2)LDS装入一个新的物理地址3)LES装入一个新的物理地址4、标志寄存器传送指令1)LAHFAH送FR寄存器的低8位2)SAHFFR寄存器的低8位送AH3)PUSHFFR寄存器推入堆栈4)POPF从栈顶中弹出存入FR寄存器56数据传送类指令

目标指令中的数据类型无符号数

带符号数

ASCII码

BCD数(压缩BCD和非压缩BCD)

588086指令系统

-算术运算指令

算术运算指令主要涉及两种类型的数据无符号数8位无符号数的范围为0~25516位无符号数的范围为0~65535有符号数

8位有符号数的范围为-128~+12716位有符号数的范围为-32768~+32767所有算术运算指令均影响状态标志(PF,SF,ZF,CF,OF)59算术运算类指令表。

60

(1)算术加法指令ADD

指令格式:ADD目的操作数,源操作数

指令功能:将源操作数与目的操作数相加,结果存放于目的操作数。即目的操作数+源操作数→目的操作数。

8086指令系统

–算术运算指令-加法指令61不带进位的加法指令,如:

ADD AL,50H ;AL和50H相加,结果放在AL中

ADD DI,SI ;DI和SI的内容相加,结果在DI中 ADD[BX+DI],AX;BX+DI和BX+DI+12个单元和AX相加,结果在BX+DI和BX+DI+1所指单元ADDAX,[BX+2000H];BX+2000H和BX+2001H

所指单元内容和AX的内容相加,结果在AX中。62

(2)带进位算术加法指令ADC

指令格式:ADC目的操作数,源操作数指令功能:将源操作数与目的操作数以及进位标志位CF的值相加,并将结果存放于目的操作数,即:目的操作数+源操作数+CF→目的操作数。

8086指令系统

–算术运算指令-加法指令63如:ADCAX,SI;AX和SI中的内容以及

CF的值相加,结果在AXADCDX,[SI];SI和SI+1所指的单元的内容和DX的内容以及CF

的值相加,结果在DX64例:实现32位加法

MOVAX,0F271H;加数的低16位

ADDAX,5698H;与被加数的低16位相加,并影响CFMOVDX,5B68H;加数的高16位

ADCAX,0AC6DH;与被加数的高16位相和CF相加

65

(3)加1指令INC

指令格式:INC目的操作数

指令功能:将指定目的操作数内容加1INC指令不影响进位标志CF。

8086指令系统

–算术运算指令-加法指令66如:INCAX ;将AX中的内容加1INCBL ;将BL中的内容加1INCBYTEPTR[BX]

;将BX所指单元的内容加1具体指令形式:

INCmem;mem←mem+1INCreg;reg←reg+1操作数是内存寻址,需使用伪指令(4)DAA对压缩BCD数加法操作的结果进行校正指令功能:对AL寄存器的内容进行十进制调整(5)

AAA对非压缩BCD数加法操作的结果进行校正指令功能:对AL寄存器的内容进行十进制调整8086指令系统

–算术运算指令-加法指令68

减法指令有算术减法SUB

带借位算术减法指令SBB

减1指令DEC

比较CMP等指令求补NEG

8086指令系统

–算术运算指令-减法指令69MOVAL,86HSUBAL,54H;(AL)=32H(1)指令格式:SUB目的操作数,源操作数8086指令系统

–算术运算指令-算术减法指令70SUBBX,CX;将BX中的内容减去CX中的内容,结果在BX中SUB[BP+2],CL;将BP+2所指堆栈单元中的值减去CL中的值,结果放在BP+2所指的堆栈单元中SUBAL,20 ;AL中的数减去20,结果在AL中SUBSI,5010H;SI中的数减去5010H,结果在SI中71

如:DECAX ;将AX的内容减1,再送回AX中DECBL ;将BL的内容减1,结果送回BL中DECBYTEPTR

[DI+2]

;将DI+2所指单元的内容减1,结果送回此单元

(2)减1指令DEC

指令格式:DEC目的操作数

指令功能:将指定目的操作数内容减1。8086指令系统

–算术运算指令-算术减法指令72

(3)比较指令CMP。

指令格式:CMP目的操作数,源操作数指令功能:将目的操作数减去源操作数。与SUB不同的是,结果不予保存,仅影响标志位。CMPAX,2000H ;将AX的内容和

2000H相比较,结果影响标志位CMPAL,50H;将AL中的数和50H比较,结果影响标志位8086指令系统

–算术运算指令-算术减法指令73比较指令通常用于比较两个操作数的大小。由受影响的标志位状态来判断两个操作数比较的结果。不论是无符号数比较还是有符号数比较,若在比较指令后,ZF=1,则两者相等,否则不相等。若两者不相等,则可在比较两个数之后,利用其他标志位的状态来确定两者中哪个大。

74

如果是两个无符号数比较,则可根据进位标志

CF的状态来判断:若CF=1,则目的操作数<源操作数;若CF=0,则目的操作数>源操作数。如果是两个有符号数比较,则要根据SF和OF两个标志的关系来判断:若SF、OF为0,则目的操作数>=源操作数;若SF为1、OF为0,则目的操作数<源操作数。

在程序中,比较指令常用于条件转移之前,条件转移指令根据CMP操作之后的状态标志决定程序转移或不转移。

75

乘法指令包括无符号数乘法、带符号数乘法两种。无符号数乘法指令MUL。

指令格式:MUL源操作数

指令功能:完成两个无符号操作数的相乘。要求被乘数放在AL或AX累加器中,用于字节运算和字运算,另一乘数可通过指令中的源操作数(除立即数方式以外的寻址方式)获得。8086指令系统

–算术运算指令-算术乘法指令76

说明:

8位×8位=16位,16位×16位=32位;被乘数必须放AX或AL中,指令中隐含;

16位运算结果放AX中,32位运算结果放DX和

AX中;乘法指令的执行结果会使标志位发生变化。只有进位标志CF、溢出标志OF有意义,其它标志位无定义。77无符号数的乘法指令例MULBL;AL中无符号数与BL中无符号数相乘,结果在AX中MULBX;AX和BX中的无符号数相乘,结果在DX和AX中指令规定的DIV无符号数除法

指令功能:完成两个操作数相除

DIVOPRDAX/OPRDAL:商,AH:余数

DXAX/OPRDAX:商,DX:余数IDIV带符号数除法

指令功能:完成两个操作数相除

另外还有:CBW带符号数字节扩展CWD带符号数字扩展AAD非压缩BCD数除法校正

8086指令系统

–算术运算指令-算术除法指令79(1)逻辑运算指令AND目的操作数,源操作数;OR目的操作数,源操作数NOT目的操作数XOR目的操作数,源操作数TEST(测试)8086指令系统

–位操作指令逻辑运算指令逻辑移位指令

AND可以使指定位为0OR可以使指定位为1XOR可以使指定位为非81比如:ANDAL,11H;AL中内容和11H相与,结果在

AL;OR AX,00F0H;AX和00F0H相或,结果在

AXXORAX,AX;AX内容本身进行异或,结果AX清零

NOT AL ;AL中内容求反码,结果AL中对某位进行屏蔽(0)或保留(1)对某位进行置(1)或保留(0)对某位求反(1)或保留(0)828086指令系统

–位操作指令

测试指令TEST

指令格式:TEST目的操作数,源操作数

指令功能:将8位、16位寄存器或存储器中的内容和源操作数“与”

83说明目的操作数不能为立即数TEST指令和AND指令的运算规则相同,但它不产生运算结果,仅影响标志位,常用于对某位是“1”或“0”的检测。如:判断AX寄存器中D1位是否为“1”。

TESTAX,0002H

执行后,检测ZF标志,若为0,则D1位为1。2、逻辑移位指令

1)SHL逻辑左移 指令功能:将8位、16位寄存器或存储器内容左移,移空的位补0SHLOPRD,1ORSHLOPRD,CL

2)SAL算术左移

指令功能:将8位、16位寄存器或存储器内容左移,移空的位补0

举例:扩展BCD码BCD码2、逻辑移位指令3)SHR逻辑右移

指令功能:将8位、16位寄存器或存储器内容右移,移空的位补0

4)SAR算术右移

指令功能:将8位、16位寄存器或存储器内容右移,移空的位由最高位补充。举例:BCD码扩展BCD码5)ROL不带进位循环左移 指令功能:将8位、16位寄存器或存储器内容左移,移空的位由移出位补充。6)ROR不带进位循环右移 指令功能:将8位、16位寄存器或存储器内容右移,移空的位由移出位补充。7)RCL带进位循环左移 指令功能:将8位、16位寄存器或存储器内容左移,移空的位由CF位补充。

8)RCR带进位循环右移

指令功能:将8位、16位寄存器或存储器内容右移,移空的位由CF位补充。举例:倒序程序四、串处理指令源操作数指针DS:SI,目的操作数指针ES:DI每操作一次SI,DI修改一次,方向由DF控制重复操作的退出cx控制条件控制(ZF标志)四、串处理指令1、串传送指令

MOVSB/MOVSW2、串比较指令CMPSB/COMPSW3、串搜索指令

SCASB/SCASW4、串装入指令LODSB/LODSW5、串存储指令STOSB/STOSB6、指令前缀

REP、REPZ/REPE、REPNZ/REPNE

控制转移类指令控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的最常用指令

控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变918086指令系统

–控制转移指令控制转移指令中包括5类指令,即无条件转移和条件转移指令循环控制指令子程序调用和返回指令中断指令和中断返回指令处理器控制指令控制转移类指令用来控制程序执行的顺序,通过控制转移指令可实现各种结构化程序设计,如分支结构程序、循环结构程序等。一、无条件转移指令使程序转到指定的目标地址处,从目标地址处开始执行指令label:要转移到的目标地址(目的地址、转移地址)JMP指令分成4种类型:⑴段内转移、直接寻址⑵段内转移、间接寻址⑶段间转移、直接寻址⑷段间转移、间接寻址JMPlabel

;程序转向label标号指定的地址目标地址的寻址方式直接寻址方式转移地址直接在指令的机器代码中间接寻址方式转移地址在寄存器或主存单元中用标号表达用寄存器或存储器操作数表达目标地址的范围:段内段内转移——近转移(near)在当前代码段64KB范围内转移(±32KB范围)不需要更改CS段地址,只要改变IP偏移地址段内转移——短转移(short)转移范围可以用一个字节表达,在段内-128~+127范围的转移代码段代码段目标地址的范围:段间段间转移——远转移(far)从当前代码段跳转到另一个代码段,可以在1MB范围需要更改CS段地址和IP偏移地址目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址代码段代码段

实际编程时,汇编程序会根据目标地址的距离,自动处理成短转移、近转移或远转移

程序员可用操作符short、nearptr或farptr强制段内转移、直接寻址JMPlabel ;IP←IP+位移量位移量是紧接着JMP指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负

jmpagain

;转移到again处继续执行

……again:

deccx

;标号again的指令

……

jmpoutput

;转向output

……output:

movresult,al

;标号output的指令实际为相对寻址段内间接转移无条件转移指令的格式:

JMPREG16/MEM16;(IP)+DISP(16位)IP实例

JMPSIJMP[BX]JMPWORDPTR[BP][DI]段内转移、间接寻址JMPr16/m16 ;IP←r16/m16将一个16位寄存器或主存字单元内容送入IP寄存器,作为新的指令指针,但不修改CS寄存器的内容jmpax ;IP←AXjmpwordptr[2000h]

;IP←[2000h]

段间直接转移无条件转移指令的格式:

JMPFARPTRLABEl标号是一个远标号,该标号在另一个代码段内段间转移、直接寻址JMPfarptrlabel

;IP←label的偏移地址 ;CS←label的段地址将标号所在段的段地址作为新的CS值,标号在该段内的偏移地址作为新的IP值,程序跳转到新的代码段执行jmpfarptrotherseg

;远转移到代码段2的otherseg段间转移、间接寻址JMPfarptrmem

;IP←[mem],CS←[mem+2]用一个双字存储单元表示要跳转的目标地址。这个目标地址存放在主存中连续的两个字单元中的,低位字送IP寄存器,高位字送CS寄存器movwordptr[bx],0movwordptr[bx+2],1500hJMPfarptr[bx];转移到1500h:0实例CODESEGMENT……MOVAX,1MOVBX,2ADDBX,AX

JMPLOOP1ADDBX,4ADDBX,5……LOOP1:……CODEENDS程序中每条指令的寻址是由CS

和IP决定的。让程序转移到另一个位置需要修改IP(段内转移/NEAR)或

CS:IP(段间转移/FAR)如段内转移(-128-+127)则称为短转移,用SHORT来表示。实例MOVAX,0JMPNEXTMOVBX,0MOVCX,0NEXT:MOVAH,4CHINT21HMOVAX,0NEXT:MOVBX,0MOVCX,0JMPNEXTMOVAH,4CHINT21H说明:目标地址的计算以当前IP的值为中心,前移或者后移,称为相对转移。以新的值完全代替当前的IP值,称为绝对转移。

在86系列中,所有的段内直接转移都是相对转移,所有的段内间接转移和段间间接转移都是绝对转移。2、条件转移指令

1)

单条件转移指令 ①

JC ;CF标志为1,则转移 ②

JNC ;CF标志为0,则转移 ③

JE/JZ ;ZF标志为1,则转移 ④

JNE/JNZ;ZF标志为0,则转移 ⑤

JS ;SF标志为1,则转移 ⑥

JNS ;SF标志为0,则转移 ⑦

JO ;OF标志为1,则转移 ⑧

JNO ;OF标志为0,则转移 ⑨

JP/JPE;PF标志为1,则转移 ⑩

JNP/JPO;PF标志为0,则转移

105类别指令名称指令格式条件转移进位位为1转移JC目标标号进位位为0转移JNC目标标号等于/结果为0转移JE/JZ目标标号不等于/结果不为0转移JNE/JNZ目标标号大于/不小于也不等于转移JG/JNLE目标标号大于或等于/不小于转移JGE/JNL目标标号小于/不大于也不等于转移JL/JNGE目标标号106类别指令名称指令格式条件转移小于或等于/不大于转移JLE/JNG目标标号溢出转移JO目标标号不溢出转移JNO目标标号奇偶位为0/奇偶性为奇转移JNP/JPO目标标号奇偶位为1/奇偶性为偶转移JP/JPE目标标号符号标志位为0转移JNS目标标号符号标志位为1转移JS目标标号107类别指令名称指令格式循环控制循环LOOP目标标号等于/结果为0循环LOOPE/LOOPZ目标标号不等于/结果不为0循环LOOPNE/LOOPNZ目标标号CX内容为0转移JCXZ目标标号中断中断INT中断类型溢出时中断INTO中断返回IRET108

2)条件转移指令

条件转移指令以某些标志位的状态或有关标志位的逻辑运算结果作为依据,以此决定是否转移。这些标志位通常由条件转移指令的上一条指令所设置。条件转移指令将根据这些标志位的状态,判断是否满足对应的测试条件。若满足条件,则转移到指令指定的地方,否则继续执行条件转移指令之后的指令。执行条件转移指令不影响标志位。109

单条件转移指令(1)指令格式:JZ操作数或JE操作数指令功能:转移条件:ZF=1,

ZF标志位为1,则转移

(2)指令格式:JNZ/JNE操作数指令功能:ZF标志位为0,

温馨提示

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

评论

0/150

提交评论