第3章 8088指令系统1(寻址方式)_第1页
第3章 8088指令系统1(寻址方式)_第2页
第3章 8088指令系统1(寻址方式)_第3页
第3章 8088指令系统1(寻址方式)_第4页
第3章 8088指令系统1(寻址方式)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1,第3章8086/8088指令系统,2,主要内容:,了解指令系统的一般概念熟悉对操作数的寻址方式理解六大类指令的操作原理操作码的含义指令对操作数的要求指令执行的结果,3,3.1概述,指令控制计算机完成指定操作的命令机器指令指令的二进制代码形式。例如:CD21H汇编指令助记符形式的指令。例如:INT21H指令系统CPU所有指令及其使用规则的集合,8088/8086指令系统特点:(1)指令向后兼容(x86系列)(2)应用广泛,资料易于寻找,4,8088指令按功能分为六大类(92种),(1)数据传送类;(2)算术运算类;(3)逻辑运算和移位;(4)串操作;(5)控制转移类;(6)处理器控制。,参见表3-18086/8088CPU常用指令一览表P92,5,部分8088/8086常用指令,6,3.1.1指令的基本构成,操作码,操作数,,操作数,说明要执行的是什么操作,操作对象,可以有0个、1个或2个,目的,源,1.指令的一般格式,7,指令举例:,ADDAX,SI+6,MOVAX,BX,操作码操作数,INCBX,HLT,暂停指令,8,2.8088/8086的操作数分为4类,1、立即数(常数)源操作数就是参加操作的数据本身,它们可以是8位或16位。取值范围如下表:,立即数只能用作源操作数,如,MOVAX,0FA00H;正确MOV8000H,DX;错误,操作数,数据(立即数),地址:寄存器(名称)、存储器单元(地址)I/O接口的端口(地址),因为立即数据是常数据,没有表示地址的含义,9,2、寄存器操作数,放在8个通用寄存器或4个段寄存器中的操作数,表示参加运算的数存放在指令给出的寄存器中,可以是16位或8位。,10,只能存放字操作数,段寄存器存放当前操作数的段基地址,可作为源或目的操作数(但CS不作为目的操作数),不允许将立即数传送到段寄存器,可通过某个通用寄存器传递改变,SI,DI,BP,SP,CS,DS,ES,SS,11,3、存储器操作数,存储器操作数,字节字双字,124,类型,存储单元个数,一般不允许两个操作数同时为存储器操作数,Flags标志寄存器:仅有个别指令可用它作为操作数IP不能用指令指针寄存器:它作为操作数,顺序执行时它自动加1,跳转执行时自动会跳转,表示当前参加运算的数存放在存储器的某1/2/4个单元中,12,存储单元的物理地址=段基地址16+偏移地址,若指令中没有指明所涉及的段寄存器,CPU就采用默认的段寄存器来确定操作数所在的段。,表2.3段寄存器使用的一些基本约定,8086规定了访问存储器段的规则:此规则定义了段地址寄存器和偏移地址寄存器的组合方式,其默认规则如下表:,13,存储器操作数的偏移地址(也称有效地址EA)要用“EA”方括号括起来,它可以通过不同的寻址方式由指令给出;存储器操作数的段基地址(也称段头地址)一般省去,按隐含规则确定它们,也可直接给出进行段超越。例如若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,则以下指令的结果是一样的:MOVAL,2A00H;隐含段头为DS,直接寻址MOVAL,BX+0A00H;隐含段头为DS,寄存器相对寻址MOVAL,BXSI;隐含段头为DS,基址-变址寻址MOVAL,DI;隐含段头为DS,寄存器间接寻址但MOVAL,ES:2A00H;段超越,段头为ES,与前4条不同,存储单元的物理地址=段基地址16+偏移地址,注意:存储器数据表示形式:,地址值或寄存器,14,一条指令的执行时间=,3.1.2指令的执行时间,取指令取操作数执行指令传送结果,单位用时钟周期数T表示,结论:1)尽量使用寄存器作为操作数2)若有可能,用移位代替乘除法3)尽量使用简单的寻址方式,执行,15,3.1.3CISC和RISC指令系统,1.CISC指令(复杂指令系统)2.RISC指令(精简指令系统)3.VLIW:超长指令字,16,CISC系统的特点,1.使用微代码,指令集可以直接在微代码记忆体(比主记忆体的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程式2.庞大的指令集。3.能够有效缩短新指令的微代码设计时间,允许实现CISC体系机器的向上相容。4.指令集以及晶片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率,17,RISC系统的特点,选取使用频率最高的简单指令及很有用又不复杂的指令指令长度固定,格式少,寻址方式少只有存取数指令访问存储器,其余指令的操作都在寄存器之间进行CPU中通用寄存器数量很多大部分指令在一个机器周期内完成,18,寻址方式寻找操作数的方法寻找操作数的地址(一般指源操作数)寻找要执行的下一条指令的地址在8086指令系统中,操作数所在地址的寻址方式可分为8种:立即寻址寄存器相对寻址直接寻址基址-变址寻址寄存器寻址相对的基址-变址寻址寄存器间接寻址隐含寻址,3.28086的寻址方式,19,操作数(为一常数)直接由指令给出(此操作数称为立即数)立即寻址只能用于源操作数例:MOVAX,1C8FH错误例:MOV2A00H,AX;错误!,3.1.2立即寻址,20,立即数,操作码,低8位,高8位,存储器,MOV操作码,02H,31H,AH,AL,代码段,代码段,立即寻址指令在存储器中的存放形式,AX,指令操作例:MOVAX,3102H;AX3102H执行后,(AH)=31H,(AL)=02H,用途:给寄存器或存储单元赋初值。,21,3.2.2直接寻址,表示参加运算的数据存放在内存中,指令中直接给出存储器操作数的16位偏移地址存储器偏移地址也称为有效地址(EA,EffectiveAddress)存储器默认的段寄存器为DS,但也可以显式地指定其他段寄存器称为段超越前缀存储器偏移地址也可用符号地址来表示,如ADDR、VAR例:MOVAX,2A00H;段头隐含为DSMOVDX,ES:2A00H;段超越,22,例:MOVAX,3102H;AL(3102H),AH(3103H),如果(DS)=2000H,(23102H)=CDH,(23103H)=ABH则操作数的物理地址为:20000H+3102H=23102H指令执行后:(AX)=ABCDH,MOV操作码,02H,31H,AH,AL,23102H,CDH,ABH,存储器,代码段,数据段,.,23103H,用途:用于操作数存放在存储器单元中,23,3.2.3寄存器寻址,操作数放在某个寄存器中源操作数与目的操作数字长要相同寄存器寻址与段地址无关例:MOVAX,BXMOV3F00H,AXMOVCL,AL错误例:MOVAX,BL;字长不同MOVES:AX,DX;寄存器与段无关,24,AX,SI,2233H,2233H,指令操作例:MOVSI,AX;SI(AX)指令执行前:(AX)=2233H指令执行后:(AX)=2233H,(SI)=2233H,用途:操作数存放在寄存器中,根据寄存器名称寻找寄存器里面的数据。,25,3.2.4寄存器间接寻址,操作数的偏移地址(有效地址EA)放在寄存器中只有SI、DI、BX和BP可作间址寄存器例MOVAX,BXMOVCL,DS:DIINAL,DX;括号省去OUTDX,AL;括号省去错误例:MOVAX,DXMOVCL,AX,EA=,(BX)(BP)(SI)(DI),26,指令操作例:MOVAX,SI若(DS)=6000H,(SI)=1200H,(61200H)=44H,(61201H)=33H则指令执行后,(AX)=3344H。,用途:操作数存放在存储器地址为16位的的寻址,27,3.2.5寄存器相对寻址,EA=间址寄存器的内容+8/16位的位移量,寄存器相对寻址常用于存取表格或一维数组中的元素把表格的起始地址作为位移量,元素的下标值放在间址寄存器中(或反之),EA=,(BX)(BP)(SI)(DI),+,8位16位,位移量,28,例:MOVAX,BX+8MOVCX,TABLESIMOVAX,BP+1000H;默认段寄存器为SS指令操作例:MOVAX,DATABX若(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H则物理地址=60000H+1000H+2A00H=63A00H指令执行后:(AX)=5566H(见下页图示),29,操作码,00偏移量低,2A偏移量高,DS60000,BX1000,+DATA2A00,63A00,63A00H,AH,AL,AX,代码段,数据段,.,.,.,66H,55H,MOVAX,DATABX,用途:操作数存放在存储器地址指定的单元中,30,3.2.6基址-变址寻址,若操作数的偏移地址:由基址寄存器(BX或BP)给出基址寻址方式由变址寄存器(SI或DI)给出变址寻址方式,由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址-变址寻址。,EA=,(BX)(BP),+,(SI)(DI),同一组内的寄存器不能同时出现。,基址寄存器,变址寄存器,31,例:MOVAX,BXSIMOVAX,BX+SIMOVAX,DS:BPDI错误例:MOVAX,BXBPMOVAX,DISI,用途:操作数存放在存储器地址指定的单元中,32,83000,操作码,DS80000,BX2000,+SI1000,83000H,AH,AL,AX,代码段,数据段,.,.,.,YY,XX,指令操作例:MOVAX,BXSI假定:(DS)=8000H,(BX)=2000H,SI=1000H则物理地址=80000H+2000H+1000H=83000H指令执行后:(AL)=83000H(AH)=83001H,33,3.2.7相对的基址-变址寻址,在基址-变址寻址的基础上再加上一个相对位移量注意事项同基址-变址寻址,EA=,(BX)(BP),+,(SI)(DI),+,8位16位,位移量,例:,MOVAX,BASESIBXMOVAX,BX+BASESIMOVAX,BX+SI+BASEMOVAX,BXBASESIMOVAX,BX+SIBASE,基址,变址,用途:操作数存放在存储器地址指定的单元中,34,指令操作例:MOVAX,DATADIBX若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H则指令执行后(AH)=83201H,(AL)=83200H,83200,83200H,AH,AL,AX,+DATA0200,操作码,代码段,数据段,.,.,.,YY,XX,DS80000,BX2000,DI1000,35,使用相对的基址-变址寻址方式可以很方便地访问二维数组。,基址寄存器,数组首地址,变址寄存器,数组元素行址,位移量,数组元素列址,(偏移地址),二维数组例:内存图示(按行存储),(行位移地址),(行内元素下标),36,3.2.8隐含寻址,指令操作数是隐含的,在指令中未显式地指明。例:MULBL指令隐含了被乘数AL及乘积AX类似的指令还有:XLAT、DIV、CBW、MOVS等,(AL)(BL)AX,用途:操作数存放在寄存器或存储器地址指定的单元中,37,如何寻找指令的地址呢?,(1)程序中将要执行的指令的地址由CS:IP指向;(2)程序的第一条指令的地址(首地址)由操作系统OS分配产生;(3)一般程序是一条接着一条的顺序执行的,所以CS:IP自动加1即可实现。(4)当程序跳转执行时,CS:IP采用直接方式或间接方式改为跳转到的指令地址。,38,小结,指令由()和()构成,如何取得

温馨提示

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

评论

0/150

提交评论