第4章8086-CPU指令系统.ppt
《第4章8086-CPU指令系统.ppt》由会员分享,可在线阅读,更多相关《第4章8086-CPU指令系统.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章8086 CPU指令系统指令系统4.1指令格式与寻址方式指令格式与寻址方式4.2 8086/8088 CPU指令系统指令系统 4.1指令格式与寻址方式指令格式与寻址方式4.1.1 指令格式指令格式 微型计算机中的控制信息就是使计算机进行某种操作的命令,微型计算机中的控制信息就是使计算机进行某种操作的命令,这些命令称为指令。计这些命令称为指令。计 算机通过执行指令序列来解决问题的,因而每算机通过执行指令序列来解决问题的,因而每种计算机都有一组指令集提供给用户使用,种计算机都有一组指令集提供给用户使用,这种指令集就称为计算机这种指令集就称为计算机的指令系统。指令系统是计算机硬件和软件之间
2、的桥梁,是汇编的指令系统。指令系统是计算机硬件和软件之间的桥梁,是汇编 语言语言程序设计的基础。程序设计的基础。指令格式是指令的编码格式,其体现了指令系统的概貌,说明指指令格式是指令的编码格式,其体现了指令系统的概貌,说明指令系统的机器目标代令系统的机器目标代 码是如何构成的。指令通常由操作码段和操作数码是如何构成的。指令通常由操作码段和操作数段两部分组成:段两部分组成:操作码段给出计算机要执行的具体操作(如传送、运算、移位、操作码段给出计算机要执行的具体操作(如传送、运算、移位、跳转等),是指令中必不可少的组成部分。跳转等),是指令中必不可少的组成部分。返回下一页4.1指令格式与寻址方式指令
3、格式与寻址方式 操作数段说明在指令执行过程中参与该操作的对象,它可以是操作数段说明在指令执行过程中参与该操作的对象,它可以是操作数本身,也可以是操作数地址或是地址的一部分,还可以是指向操作数本身,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址指针或其他有关操操作数地址指针或其他有关操 作数据的信息。单地址指令的操作只需作数据的信息。单地址指令的操作只需一个操作数,如加一个操作数,如加 1 指令:指令:INC AX。大多。大多 数运算指令都需要两个操数运算指令都需要两个操作数,如加法指令:作数,如加法指令:ADD AX,BX;运算的结果送到;运算的结果送到 AX 中,中,AX 称称为
4、目的操作数,为目的操作数,BX 称为源操作数。称为源操作数。操作数的种类又可分为数据操作数和转移地址操作数。操作数的种类又可分为数据操作数和转移地址操作数。数据操作数:指令中操作的对象是数据,包括立即数操作数、寄数据操作数:指令中操作的对象是数据,包括立即数操作数、寄存器操作数、存数。存器操作数、存数。转移地址操作数:这类操作数是与转移地址有关的操作数,即指转移地址操作数:这类操作数是与转移地址有关的操作数,即指令中操作的对象令中操作的对象 不是数据,而是要转移的目标地址。转移地址操作数不是数据,而是要转移的目标地址。转移地址操作数也可分为:立即数操作数、也可分为:立即数操作数、寄存器操作数和
5、存储器操作数,也就是说,寄存器操作数和存储器操作数,也就是说,要转移目标的地址包含在指令中,或要转移目标的地址包含在指令中,或 存放在寄存器中,或存放在存储存放在寄存器中,或存放在存储单元中。单元中。上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式4.1.2 寻址方式寻址方式数据的寻址方式数据的寻址方式1)立即数寻址)立即数寻址 立即数寻址方式所提供的操作数直接包含在指令中,其紧跟在操立即数寻址方式所提供的操作数直接包含在指令中,其紧跟在操作码的后面,与操作作码的后面,与操作 码一起被放在代码段区域中。因而,立即数总是码一起被放在代码段区域中。因而,立即数总是与操作码一起被取入与操作
6、码一起被取入 CPU 的指令队列,在的指令队列,在 指令执行时不需再访问存指令执行时不需再访问存储器。立即寻址方式仅用于源操作数,主要是用来给寄存器或存储器。立即寻址方式仅用于源操作数,主要是用来给寄存器或存 储器储器赋初值。赋初值。立即数可以是立即数可以是 8 位或位或 16 位数。若立即数是位数。若立即数是 16 位的,则其低位的,则其低 8 位位字节存放在相邻两个字节存放在相邻两个 存储单元的低地址单元中,高存储单元的低地址单元中,高 8 位字节则存放在位字节则存放在高地址单元中。高地址单元中。例如:例如:MOV AX,1234H;将立即数;将立即数1234H送入累加器送入累加器AX M
7、OV 2100H ,12H;将立即数;将立即数12H送入送入2100H的存储单元的存储单元上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式2)寄存器寻址)寄存器寻址 寄存器寻址即为寄存器直接寻址。在此寻址方式中,操作数存放寄存器寻址即为寄存器直接寻址。在此寻址方式中,操作数存放在指令规定的在指令规定的 CPU 内内 部寄存器中。对于部寄存器中。对于 16 位操作数,寄存器可以是位操作数,寄存器可以是 AX、BX、CX、DX、SI、DI、SP 或或 BP;对于对于 8 位操作数,寄存器位操作数,寄存器可以是可以是 AL、AH、BL、BH、CL、CH、DL 或或 DH。例如:例如:INC
8、 CX;CX内容加内容加1,结果送回,结果送回CX MOV CL,DL;DL 内容送至内容送至CL MOV DS,AX;AX内容送至内容送至DS上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式3)存储器寻址方式)存储器寻址方式(1)直接寻址直接寻址 直接寻址是存储器直接寻址的简称,是一种最简单的存储器寻址直接寻址是存储器直接寻址的简称,是一种最简单的存储器寻址方式。在这种寻址方方式。在这种寻址方 式下,指令中的操作数部分直接给出操作数的有式下,指令中的操作数部分直接给出操作数的有效地址效地址 EA(16 位的偏移地址),且该地址位的偏移地址),且该地址 与操作码一起被放在代码与操作码
9、一起被放在代码段中。通常,在直接寻址方式中,操作数放在存储器的数据段(段中。通常,在直接寻址方式中,操作数放在存储器的数据段(DS)中,这是一种默认的方式。中,这是一种默认的方式。上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(2)寄存器间接寻址寄存器间接寻址 在寄存器间接寻址方式中,操作数存在寄存器间接寻址方式中,操作数存 放在存储区中,其有效地放在存储区中,其有效地址址 EA 为一个由指令规为一个由指令规 定的基址寄存器(定的基址寄存器(BP、BX)或变址寄存器)或变址寄存器(SI、DI)的内容,即)的内容,即上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(3)寄存
10、器相对寻址寄存器相对寻址 在这种寻址方式中,操作数存放在存储单元中,其有效地址在这种寻址方式中,操作数存放在存储单元中,其有效地址 EA 等于一个由指令规定的等于一个由指令规定的 基址寄存器(基址寄存器(BP、BX)或变址寄存器()或变址寄存器(SI、DI)的内容与由指令中给定的)的内容与由指令中给定的 8 位或位或 16 位的位的 相对地址位移量之和,相对地址位移量之和,即即上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(4)I/O 端口寻址方式端口寻址方式 IN/OUT 指令对指令对 I/O 端口的寻址方式有两种:端口的寻址方式有两种:直接端口寻址。该寻址方式用于直接端口寻址。
11、该寻址方式用于 8 位位 I/O 端口的寻址,端口的寻址,8 位位 I/O 端端口地址(口地址(00H FFH)以立即数的形式在指令中直接给出。可寻址的以立即数的形式在指令中直接给出。可寻址的端口地址范围为端口地址范围为 0 255。间接端口寻址。该寻址方式是针对间接端口寻址。该寻址方式是针对 16 位位 I/O 端口的寻址,类似于端口的寻址,类似于寄存器间接寻址。寄存器间接寻址。在间接端口寻址时,应事先将在间接端口寻址时,应事先将 16 位位 I/O 端口地址端口地址(0000H 0FFFFH)存放在规定的存放在规定的 DX 寄存器中,即通过寄存器中,即通过 DX 对端口间对端口间接寻址。该
12、寻址方式可寻址的端口号的范围为接寻址。该寻址方式可寻址的端口号的范围为0 65535。上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式转移地址寻址方式转移地址寻址方式(1)段内直接寻址)段内直接寻址 采用这种寻址方式时,应在指令中指明一个采用这种寻址方式时,应在指令中指明一个 8 位或位或 16 位的相对位的相对地址偏移量地址偏移量 disp。由于。由于 转向的有效地址转向的有效地址 EA=IP+disp,则转移地址,则转移地址为代码段寄存器为代码段寄存器 CS 的内容加上转移的有效地的内容加上转移的有效地 址,即(址,即(CS)+EA 。例如:例如:JMP LT0;程序转移至标号;
13、程序转移至标号LT0处处 CALL GAME;先将当前断点地址送至堆栈保存,程序转移至;先将当前断点地址送至堆栈保存,程序转移至GAME处处上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(2)段内间接寻址)段内间接寻址 在这种寻址方式中,转向的有效地址(即目标地址的段内偏移量)在这种寻址方式中,转向的有效地址(即目标地址的段内偏移量)是一个是一个 16 位的寄存位的寄存 器的内容或存储器中两个连续单元的内容。存放器的内容或存储器中两个连续单元的内容。存放偏移地址的寄存器或存储器的地址将按指偏移地址的寄存器或存储器的地址将按指 令码规定的寻址操作数的方令码规定的寻址操作数的方式给出。
14、此时,寻址所得到转移地址,而不是操作数。式给出。此时,寻址所得到转移地址,而不是操作数。例如:例如:JMPBX;寄存器间接寻址,目标地址在当前代;寄存器间接寻址,目标地址在当前代码段(码段(CS),),;目标地址的偏移量存放在寄存器中;目标地址的偏移量存放在寄存器中 JMPWORD PTR BX;存储器寻址,目标地址在当前代码段;存储器寻址,目标地址在当前代码段内,内,;偏移地址在数据段内;偏移地址在数据段内上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(3)段间直接寻址)段间直接寻址 段间直接寻址须在指令码中直接给出目标地址的段基址和段间直接寻址须在指令码中直接给出目标地址的段基
15、址和 16 位位段内偏移地址。段内偏移地址。例如:例如:JMPFAR PTR P1;要转移至的标号或过程名必;要转移至的标号或过程名必须具备须具备 FAR 属性。属性。在执行这条段间直接寻址指令时,指令操作码后的第二个字数据在执行这条段间直接寻址指令时,指令操作码后的第二个字数据将赋于代码段寄存器将赋于代码段寄存器CS,第一个字数据赋于指令指针寄存器,第一个字数据赋于指令指针寄存器 IP。上一页返回下一页4.1指令格式与寻址方式指令格式与寻址方式(4)段间间接寻址)段间间接寻址 该寻址方式类似段内间接寻址,由于转移地址的确定需要该寻址方式类似段内间接寻址,由于转移地址的确定需要32 位位信息,
16、因此,其只适用于存储器寻址方式,即目标地址存放在信息,因此,其只适用于存储器寻址方式,即目标地址存放在4 个连个连续字节存储单元中,其中前两个单元存放续字节存储单元中,其中前两个单元存放16位的段内偏移地址,后两位的段内偏移地址,后两个单元存放个单元存放16 位的段地址。位的段地址。上一页返回4.2 8086/8088CPU 指令系统指令系统8086/8088CPU 的指令可分为六大类:的指令可分为六大类:(1)数据传送类指令()数据传送类指令(Data transfer instructions)(2)算术运算类指令()算术运算类指令(Arithmetic instructions)(3)位
17、操作类指令()位操作类指令(Bit manipulation instructions)(4)串操作类指令()串操作类指令(String instructions)(5)控制转移类指令()控制转移类指令(Program transfer instructions)(6)处理器控制类指令()处理器控制类指令(Processor control instructions)返回下一页4.2 8086/8088CPU 指令系统指令系统4.2.1 数据传送类指令数据传送类指令通用数据传送指令通用数据传送指令()传送指令()传送指令 MOV 指令格式:指令格式:功能:将源操作数的内容传送给目的操作数。功能
18、:将源操作数的内容传送给目的操作数。MOV 指令对标志指令对标志寄存器(寄存器(FR)的各位无影响。在)的各位无影响。在 MOV 指令中,两个操作数可以是字,指令中,两个操作数可以是字,也可以是字节,但两者必须等长。也可以是字节,但两者必须等长。在使用在使用 MOV 指令时,应注意以下几点:指令时,应注意以下几点:段寄存器段寄存器 CS 仅能作源操作数,不能作为目的操作数;仅能作源操作数,不能作为目的操作数;源操作数和目的操作数不能同时为存储单元操作数(串操作指令除外)源操作数和目的操作数不能同时为存储单元操作数(串操作指令除外);立即数不能直接传送给段寄存器,且不同的段寄存器之间不能进行直立
19、即数不能直接传送给段寄存器,且不同的段寄存器之间不能进行直接传送。接传送。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(2)交换指令)交换指令 XCHG 指令格式:指令格式:功能:源操作数和目的操作数的内容相互交换。该指令对标志寄功能:源操作数和目的操作数的内容相互交换。该指令对标志寄存器的各位均无存器的各位均无 影响。影响。(3)查表转换指令)查表转换指令 XLAT 指令格式:指令格式:功能:完成一个字节的查表转换。该指令又称代码转换指令,可功能:完成一个字节的查表转换。该指令又称代码转换指令,可以方便地实现不以方便地实现不 同数制或编码之间的转换。同数制或编码之间的转
20、换。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(4)堆栈操作指令)堆栈操作指令 PUSH/POP指令格式:指令格式:PUSH src;POP dest;功功 能:对堆栈的信息进行存取。堆栈操作不影响标志寄存器。能:对堆栈的信息进行存取。堆栈操作不影响标志寄存器。8086/8088 堆栈的使用规则如下:堆栈的使用规则如下:堆栈的使用要遵循后进先出(堆栈的使用要遵循后进先出(LIFO)的准则;)的准则;堆栈中操作数的类型必须是字操作数,不允许以字节为操作数;堆栈中操作数的类型必须是字操作数,不允许以字节为操作数;PUSH 指令可以使用指令可以使用 CS 寄存器,但寄存器,但
21、 POP 指令不允许使用指令不允许使用 CS 寄存器;寄存器;8086/8088CPU 堆栈操作可以使用除立即寻址以外的任何寻址方式。堆栈操作可以使用除立即寻址以外的任何寻址方式。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统地址传送指令地址传送指令 地址传送指令完成的操作是传送存储器操作数的地址(偏移量、地址传送指令完成的操作是传送存储器操作数的地址(偏移量、段基址),而不是传段基址),而不是传 送存储器操作数的内容。这组指令对标志寄存器送存储器操作数的内容。这组指令对标志寄存器各标志位均无影响,指令中的源操作数都各标志位均无影响,指令中的源操作数都 必须是存储器操作数,
22、而目必须是存储器操作数,而目的操作数可以是任何一个的操作数可以是任何一个 16 位的通用寄存器。位的通用寄存器。(1)装入有效地址)装入有效地址 LEA 指令格式:指令格式:LEA reg16,mem16;reg16 EAmem16 功能:将当前段内的源操作数的有效地址功能:将当前段内的源操作数的有效地址 EA(地址偏移量)传(地址偏移量)传送至目的操作数,即将一个送至目的操作数,即将一个 16 位的近地址指针写入到指定的位的近地址指针写入到指定的 16 位通位通用寄存器中。用寄存器中。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统(2)装入远地址指针)装入远地址指针 LD
23、S/LES 指令格式:指令格式:LDS reg 16,mem32;reg16 EAmem32 ,DS EAmem32+2 LES reg16,mem32;reg16 EAmem32 ,ES EAmem32+2 功能:将源操作数所对应的功能:将源操作数所对应的 4 字节内存单元中的第一个字送字节内存单元中的第一个字送入指定的通用寄存器,而第二个字则送入段寄存器入指定的通用寄存器,而第二个字则送入段寄存器 DS(或(或 ES),即),即将一个将一个 32 位的远地址指针的偏移地址写入到指定的通用寄存器中,位的远地址指针的偏移地址写入到指定的通用寄存器中,而该指针的段基址送至段寄存器而该指针的段基址
24、送至段寄存器 DS(或(或 ES)。)。上一页返回下一页4.2 8086/8088CPU 指令系统指令系统标志寄存器传送指令标志寄存器传送指令 CPU 中各标志寄存器中各标志寄存器 FLAG(FR),其中的每一个状态标志位),其中的每一个状态标志位代表代表 CPU 运行的状态。运行的状态。许多指令的执行结果会影响许多指令的执行结果会影响 FR 的某些状态的某些状态标志位;同时,有些指令的执行也受标志位;同时,有些指令的执行也受 FR 中某些中某些 位的控制。标志寄存位的控制。标志寄存器传送类指令共有器传送类指令共有 4 条,专门用于对标志位寄存器的保护或更新。条,专门用于对标志位寄存器的保护或
25、更新。标志寄存器读标志寄存器读/写指令写指令指令格式:指令格式:LAHF;AH(FR)的低的低 8 位位 SAHF;FR 的低的低 8 位位(AH)标志寄存器压栈标志寄存器压栈/弹栈指令弹栈指令指令格式:指令格式:PUSHF;SP (SP)2 ;(SP)+1:(SP)(FR)POPF;FR (SP)+1:(SP);SP (SP)+2上一页返回下一页4.2 8086/8088CPU 指令系统指令系统4输入输入/输出数据传输指令输出数据传输指令 IN/OUT 这组指令专门用于累加器(这组指令专门用于累加器(AL 或或 AX 寄存器)与寄存器)与 I/O 端口之端口之间的数据传输。其中,输入指令间的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 CPU 指令系统
限制150内