第03章_8086的指令系统 924.ppt_第1页
第03章_8086的指令系统 924.ppt_第2页
第03章_8086的指令系统 924.ppt_第3页
第03章_8086的指令系统 924.ppt_第4页
第03章_8086的指令系统 924.ppt_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 8086的指令系统,8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集,3.1 8086指令特点,18086具有灵活的指令格式 28086有较强的运算指令 38086指令有极强的寻址能力 48086指令有处理多种数据能力,8086每条指令包括两部分:操作码和操作数,操作码表明指令的操作性质,一般有1-2字节,操作数部分又称为地址码,说明操作数所在位置。,32 8086的寻址方式 寻址方式就是指令中用于说明操作数所在地址的方法。 操作数是指令执行的参与者,即各种操作的对象 MOV AX, 1234H;B8 34 12 MOV AX, 1234H;A1 3

2、4 12,操作数分为源操作数和目的操作数,目的操作数不容许为立即数(即常数)。,32 8086的寻址方式,指令中的操作数: 可以是一个具体的数值 可以是存放数据的寄存器 或指明数据在主存位置的存储器地址,3.2.1 8086的寻址方式说明,1有效地址EA(Effective Address) 当操作数在内存中时,指令的地址码(操作码)给出所访问的内存单元的逻辑地址。在寻址方式中,逻辑地址的形成是由多个分量组合而成,该组合地址又叫有效地址。,总结内存地址形成,传送指令 MOV,数据传送指令是最基本的一种指令,主要用来实现存储器与寄存器、寄存器与存储器以及立即数到寄存器或存储器的字节或字的传送。一

3、般包括目标操作数和源操作数。,2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 目的操作数和源操作数均可采用不同的寻址方式, 两个操作数的类型必需一致。,8086指令的格式,指令,操作码(描述指令的操作功能),操作数(指明指令的操作对象),立即数,寄存器操作数,存储器操作数,例如:MOV AX, BX,二、寻址方式介绍,1立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后面,作为指令一部分存放在内存的代码段中,这种操作数称为立即数。 例: MOV AX , 34EAH B8 EA 34 MOV BL , 20HB3 20,立即数寻址指令,MO

4、V AL,05H;AL05H MOV AX,0102H;AX0102H,执行过程,2、寄存器寻址 (Register addressing) 操作数在寄存器中,指令中源操作数和目的操作数都可用这种寻址方式。 例: MOV AL , BL 88 D8 MOV AX , 1234HB8 34 12 MOV AL , AH88 E0,寄存器寻址指令,MOV AX,1234H;AX1234H MOV BX,AX;BXAX,执行过程,3、直接寻址(Direct addressing) 当指令中的源操作数或目的操作数,采用直接给出被访问内存单元的逻辑地址时,这种寻址方式称直接寻址。 例: MOV AX ,

5、 3E4CHA1 4C 3E MOV 1234H , ALA2 34 12,4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器间接给出。 例: MOV SI , 61A8H MOV DX , SI,5、基址/变址寻址(Based/Indexed addressing) 这种寻址方式中提出位移量的概念,即在寄存器间接寻址给出的偏移地址上,加一相对位移量。位移量是一带符号的16位16进制数。当使用BX或BP寄存器时,称基址寻址;使用SI或DI寄存器时,称变址寻址。 例: MOV CX , 36HBX MOV 20BP , AL,基址变址

6、寻址指令,MOV AX,BX+SI ;AXDS:BX+SI MOV AX,BP+DI ;AXSS:BP+DI MOV AX,DS:BP+DI ;AXDS:BP+DI,执行过程,6、基址加变址寻址(Based Indexed addressing) 它的EA是由三部分组成的,基址寄存器 BX或BP的内容加上变址寄存器的内容再加 位移量。物理地址由基址寄存器按规则选 择段寄存器,也可以使用段超越。 例: MOV AX , 8AHBXSI 该例中EA8AHBXSI 物理地址DS10H8AHBXSI,7、其他 A、隐含寻址 在指令中没有明显的标出,而指定寄存器参加操作,称之为“隐含寻址”。 DAA M

7、UL BL,B、串寻址(String addressing) 串寻址方式仅在8086的串指令中使用。规定源操作数的逻辑地址为DS:SI;目的操作数的逻辑地址为ES:DI。当执行串指令的重复操作时,根据设定的方向标志DF,SI和DI会自动调整。,总结段约定,c、I/O(输入/输出)端口寻址 (I/O port addressing) 当操作数在外部设备时,使用I/O指令。此时有两种不同的寻址方式访问I/O端口。 (1) 直接端口寻址方式。 (2) 采用DX寄存器间接寻址方式 (3) 输入指令中目的操作数可为AL或 AX;输出指令中源操作数可为AL或AX。 例: IN AL , 25HE5 25H

8、 MOV DX , 3E4H OUT DX , ALEE,AL AX,n DX,IN AL/AX, DX/n,OUT DX/n, AL/AX,33 8086的指令格式及数据类型,指令由操作码和操作数(地址码)组成。8086的指令长度是可变的,一条指令一般由16个字节组成。,8086指令的格式,8086/8088的指令长度可在16B之间变化 ,格式如下:,3.3.1 8086操作码,在多操作数码中,使用某些位表示有关信息: W(字位):W=1表示字,W=0表示字节 D(方向位):D=0:REG为目的操作数;D=0源操作数寄存器 指令的二进制一般形式如下:操作码占6位,D 指示操作方向。D=1,R

9、EG为目的操作数;D=0, R/M为目的操作数,其中R代表寄存器,M代表存储器。 W指示操作数宽度。W=1,操作数是16位;W=0,操作数是8位。 MOD用来区分是寄存器寻址,还是存储器寻址。MOD=00,则说明指令为存储器寻址方式,无偏移量;MOD=01,为存储器寻址方式,8位偏移量;MOD=10,为存储器寻址方式,16位偏移量;MOD=11,为寄存器寻址方式。 REG指示参加操作的寄存器编码,R/M受模式字段的控制,指出如何计算指令的有效地址EA。,8086/8088指令的格式,2 编码形式,编码方式有三种: 1 段寄存器编码 2 通用寄存器编码 3 内存寻找编码 操作码 MOD r/m

10、MOD 为11时,表示对寄存器操作;,8086/8088指令的格式,一、指令中的操作数,1、单操作数指令 指令助记符 指令的16进制代码 INC AX 40H INC BX 43H,2、双操作数指令 指令助记符 指令的16进制代码 MOV AL , 04 B004H MOV AX , 04 B80400,3、三个操作数指令 8086指令系统中,大多数指令中只有12个操作数,但也有少数指令中有3个操作数,不过有一操作数隐含在操作码中。 例: ADC AX , BX 该指令完成操作数AX、BX和CF位相加。,二、指令中的数据类型,无符号数 带符号数 ASCII码 BCD数(压缩BCD和非压缩BCD

11、),34 8086的指令集,8086指令系统按功能可分为6大类型: 1、 数据传输类 2、 算术运算类 3、 逻辑运算类 4、 串操作类 5、 程序控制类 6、 处理机控制类,一、数据传送指令,数据传送指令又可以分成4种: l 通用数据传送 l输入/输出数据传送 l目的地址传送 l 标志寄存器转送,指令的共同特点是:,1、除POP和SAHF指令外,这类指令的操作结果不会影响FR寄存器中的标志。 2、指令中有两个操作数,目的操作数和源操作数,其执行过程为: 目的操作数 源操作数, 当指令中仅列出一个操作数时,另一操作数为隐含。,常用的符号,累加器 a ax,al 寄存器 r: ax,bx,cx,

12、dx,si,di,sp,bp, al,ah,cl,ch,bl,bhdl,dh 段寄存器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 立即数 im,1、通用数据传送指令,1)、MOV 传送指令 指令格式为: MOV 目的 ,源 功能:目的 源,mov r,oprd Oprd: r, mem,seg, im mov mem, oprd Oprd: r, seg, im mov seg, oprd Oped: r, mem 注意:1、mem不能到mem

13、2、seg做目的操作数时, 不包括cs。 3、类型匹配,2)PUSH 进栈指令 指令格式为:PUSH oprd Oprd: r, mem, seg 其操作过程是: a、SP2,指示堆栈中可以存放数据的位置 b、存源操作数,完成进栈操作。,3)POP 出栈指令 指令格式为:POP oped Oped: r, mem, seg(不包括 CS!) 其操作过程是: a、将SS:SP所指示的栈顶处的两个字 节的数据,弹到目的操作数中; b、SP2,指示当前栈顶位置,完成出栈操作。,4)XCHG 交换指令 指令格式为: XCHG 目的操作数 ,源操作数 XCHG R, OPRD OPRD: R, MEM

14、操作数不能为立即数; 源和目的不能同时为存储单元; 段寄存器不能作为操作数。,举例: 把2000H单元的字和3000H单元互换,2、累加器专用传送指令,1) IN 输入指令 指令格式为:IN AL , n IN AX , n IN AL , DX IN AX , DX 2)OUT 输出指令 指令格式为:OUT n , AL OUT n , AX OUT DX , AL OUT DX , AX,3) XLAT 换码指令 指令格式为:XLAT 功能bxalal 例:查表求n的平方。n:0-9 1、将09的平方表建立在偏移地址为2000H的内存中,如图。 2、查表,完成求5的平方指令序列为: MOV

15、 BX , 2000H ;指向平方表的首地址 MOV AL , 5 ;将5换码成5的平方值 XLAT ;查表,平方值在AL中,3、目标地址传送指令 这类指令有: 1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址,4、标志寄存器传送指令 1)LAHF FR寄存器的低8位送AH 2)SAHF AH 送 FR寄存器的低8位 3)PUSHF FR寄存器推入堆栈 4)POPF 从栈顶中弹出存入FR寄存器,举例:1、把FR各位清零 2、把TF置1,其他位不变,二、算术运算指令,1、算术加法指令 1)ADD 算术加法 指令功能:目的地目的操作数源操作数 格

16、式 ADD R,OPRD OPRD: R,MEM,IM ADD MEM, OPRD OPRD:R,im 算术指令影响标志位,二、算术运算指令,1、算术加法指令 2)ADC 带进位算术加法 指令功能:目的地目的操作数源操作数CF 3)INC 加1指令 指令功能:目的地目的操作数1,2算术运算类,(一)加法指令 1 不带进位的加法指令 ADD OP目,OP源 功能:将源操作数和目的操作数相加,结果保留在目的操作数 例:MOV AX, FIRST ADD AX, SECOND 2 带进位的加法指令 ADC OP目,OP源 功能:将源操作数和目的操作数及CF的值相加,结果保留在目的操作数 中。 3 加

17、1指令 INC OP,2、算术减法指令 1)SUB 算术减法 指令功能:目的地目的操作数源操作数 2)SBB 带进位算术减法 指令功能:目的地目的操作数源操作数CF 3) DEC 减1指令 指令功能:目的地目的操作数1 4) DAS 对压缩BCD数减法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整 5) AAS 对非压缩BCD数减法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整 6) CMP 比较指令 指令功能:两个操作数相减,不产生运算结果仅影响标志 7) NEG 取补指令 指令功能:0目的操作数,DEC OP : 减1指令 NEG OP : 取补指令,将操作

18、数取补后送原操作数。 CMP OP目 OP源 : 比较指令,将目标操作数与原操作数相减,不送回结果,只影响标志位。 判断两个带符号操作数的大小,分为: (1) 若两操作数符号相同,可根据SF标志位来判断, SF=1,A=B (2) 若两操作数符号不同,可根据SF及OF标志位来判断.,3、算术乘法指令 1)MUL 无符号数乘法 指令功能:完成两个操作数相乘 MUL OPRD; AL*OPRD-AX AX*OPRD-DX AX OPRD: R, MEM 2)IMUL 带符号数乘法 指令功能:完成两个操作数相乘,另一操作数被乘数隐含在AL/AX中,AL,8位操作数,AX,16位操作数,乘法运算示意图

19、,AX,DX,AL,AH,(三)乘法指令 MUL OP IMUL OP,4、算术除法指令 DIV 无符号数除法 指令功能:完成两个操作数相除 DIV OPRD AX/OPRDAL:商,AH:余数 DXAX/OPRD AX:商,DX:余数 IDIV 带符号数除法 指令功能:完成两个操作数相除 另外还有: CBW 带符号数字节扩展、 CWD 带符号数字扩展、,(四)除法指令 1 DIV OP 被除数隐含在AX(字节除)或DX,AX(字除法),商在AL或AX,余数在AH或DX。 例:DIV:AX中的数除以CL,AL存商, AH存余数 IV WORD PTRDI:DX和AX中的数除以DI,DI+1单元

20、中的16位数据,AX存商,DX存余数。 2 IDIV OP 3 符号扩展指令 a CBW: 字节扩展指令,将AL中的单字节数扩展到AH中,若AL=80,FF赋给AH B CWD:字扩展指令,将AX中的数的符号扩展到DX中,若AX=8000H,0FFFFH赋给DX;,例1:若DP1为字型变量,DP2为双字型变量,对有符号的运算: MOV AX, DP1 CWD ;扩展AX的符号到DX ADD AX, WORD PTR DP2 例2:MOV AX, 0F252H MOV BX, 20H MOV DX,0 ;被除数高16位置0,不可缺少 DIV BX 该例中,不能选用字节相除方式,从表面上看,被除数

21、只有16位,而除数可以容纳在一个字节内,但由于商(255)无法容纳在一个字节中,所以只能用字相除方式,否则会溢出。又DIV为无符号除指令,除数、被除数均为无符号数,在被除数转换为双精度数时,不能用符号扩展而只能将高16位送0,例3 实现“4000H4”运算 MOV AX, 4001H CWD MOV CX, 4 ;立即操作数不能做除数 IDIV CX 执行以上程序后,商在AX中,余数在DX中,运算的结果为: (AX)=1000H, (DX)=1 将被除数改为4001H, MOV AX, -4001H CWD MOV CX, 4 IDIV CX 运算的结果为: (AX)=0F000H, (DX)

22、=0FFFFH,十进制运算调整指令,用一个字节表示一位十进制数,称为非组合(或非压缩)式BCD码;用一个字节表示两位十进制数,称为组合(或压缩)式BCD码; 如: 0000 0011B + 0000 1001B=0000 1100B (NON BCD) 0000 1001B + 0000 0111B=0001 0000B (Modify) 0000 1100B+0000 0110B=0001 0010B 0001 0000B+0000 0110B=0001 0110B BCD数向高位的进位是逢10进1,而4位二进制数向高位进位是逢16进一,若加上6,则可以得到正确的BCD数。,非组合及组合BC

23、D码的加法调制指令 AAA: 对AL中两个非组合BCD码相加所得的结果进行调整,结果存于AX中。方法:若(AL AX=0904H,DAA:对AL中两个组合BCD码相加所得的结果进行调整,结果存于AL中。 MOV AX,3456H ADD AL,AH ;AL=8AH DAA ;AL=90H,非组合及组合BCD码的减法调制指令 AAS:对AL中两个非组合BCD码相减所得的结果进行调整,结果存于AX中。 DAS:对AL中两个组合BCD码相加所得的结果进行调整,结果存于AL中。 非组合BCD码的乘法调制指令 AAM 非组合BCD码的除法调制指令 AAD,三、位操作指令 指令的共同点是: (1)可以按二

24、进制位进行操作; (2)逻辑运算指令按逻辑门电路的运算规则, (3)逻辑移位指令有左移和右移,移出的位都 进入CF标志 (4)因移空位的补充方式不同有多种指令形 式 (5)逻辑移位指令中,移动超过1次则用CL寄 存器做计数器 (6)执行逻辑操作指令,CF均被清0,1、 逻辑运算指令,1) NOT 逻辑求反 eg. not ax 指令功能:将8位、16位寄存器或存储器内容求反 2) AND 逻辑与操作 例:AND ax, 00001100 指令功能:将8位、16位寄存器或存储器内容和源操作数“与” 3) OR 逻辑或操作 OR 目的操作数,源操作数例:OR ax, 00001111 指令功能:将

25、8位、16位寄存器或存储器内容和源操作数“或” 4)XOR 逻辑异或操作 格式: XOR OR 目的操作数,源操作数 指令功能:将8位、16位寄存器或存储器内容和源操作数“异或” 5)TEST 测试指令 例:TEST AX,0002H 指令功能:将8位、16位寄存器或存储器内容和源操作数“与” ,不产生运算结果,仅影响状态标志,特别地:,AND 可以使指定位为0 OR 可以使指定位为1 XOR 可以使指定位为非(取反) 例如:将AX寄存器的D1,D3求反,其余位保留,则该指令: XOR AX,00001010,2、逻辑移位指令,1)SHL 逻辑左移 指令功能:将8位、16位寄存器或存储器内容左

26、移,移空的位补0 SHL OPRD, 1 OR SHL OPRD,CL 2)SAL 算术左移 指令功能:将8位、16位寄存器或存储器内容左移,移空的位补0 算术左移指令移动1位,则原数据乘以2 例:mov bx, 6E8CH mov cl,2 sal bx, cl,2、逻辑移位指令,3)SHR 逻辑右移 指令功能:将8位、16位寄存器或存储器内容右移,移空的位补0 Eg. mov si,2B4CH mov cl,3 shr si,cl 4)SAR 算术右移 指令功能:将8位、16位寄存器或存储器内容右移,移空的位由最高位补充。,5)ROL 不带进位循环左移 指令功能:将8位、16位寄存器或存储

27、器内容左移,移空的位由移出位补充。 Eg mov bx,6E8CH mov cl,2 rol bx,cl 6)ROR 不带进位循环右移 指令功能:将8位、16位寄存器或存储器内容右移,移空的位由移出位补充。,7)RCL 带进位循环左移 指令功能:将8位、16位寄存器或存储器内容左移,移空的位由CF位补充。 Eg XOR ax,ax mov ax, 8c36H mov cl,2 rcl ax, cl 8)RCR 带进位循环右移 指令功能:将8位、16位寄存器或存储器内容右移,移空的位由CF位补充。,四、串处理指令,源操作数指针 DS:SI, 目的操作数指针 ES:DI 每操作一次SI,DI修改一

28、次,方向由DF控制 重复操作的退出 cx控制 条件控制(ZF标志),四、串处理指令,1、串传送指令 MOVSB / MOVSW 2、串比较指令 CMPSB/COMPSW 3、串搜索指令 SCASB/SCASW 4、串装入指令 LODSB/LODSW 5、串存储指令 STOSB/STOSB 6、指令前缀 REP、REPZ/REPE、REPNZ/REPNE,五、程序控制转移指令,1、无条件转移指令 JMP 目标地址 1)、段内直接转移 JMP LABEL IP+位移量IP 位移量LABEL指令地址JMP地址3 2)、短转移指令 JMP LABEL IP+CBW(位移量)IP 位移量(8bit)LA

29、BEL指令地址JMP地址2,3)、段内间接转移 JMP OPRD; OPRD IP OPRD:r,MEM JMP AX,3)、段间直接转移 JMP far LABEL offest LABEL IP seg LABEL cs 4)、段间间接转移 JMP OPRD; OPRD:MEM offest OPRD IP seg OPRD cs JMP DWORD PTR SI,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,则转移 J

温馨提示

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

评论

0/150

提交评论