第3章 886 8088指令系统.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 8086/8088指令系统 指令是计算机能够识别和执行的指挥计算机操作的命令。 指令系统是该计算机所有指令的集合,它是综合反映计算机性能的重要因素,不仅直接影响机器的硬件结构,还影响机器的系统软件及机器的适用范围。 一般,计算机的CPU不同,其使用的指令系统就不同。 3.1 指令格式与寻址方式 3.1.1 指令格式 操作码:指示计算机执行具体的操作,如加、减、移位、比较等。 操作数:用来指出操作码所需操作数的来源和操作结果的动向,即给出操作数和操作数地址。 一条指令可包括一个或两个操作数。 保持原值不变的称为源操作数src(source),不保留原值而将处理结果存入其中的则称为目的操作数dst(destination)。 3.1.2 寻址方式 包括:操作数的寻址方式和指令的寻址方式。 指令通常顺序存放,因此,指令寻址只要通过对指令指针IP内容自动加1,便可形成下一条指令地址。 当遇到转移或调用指令时,按照转移目标修改IP或CS,因此,指令的寻址主要是转移指令和调用指令的转移目的地址的形成方式,这里先讨论操作数的寻址方式 8086/8088的操作数寻址方式 1、隐含寻址 指令中不指明操作数,但隐含在操作码中。如: ①乘法,其指令开工是单操作数指令(MUL src),只指示了源操作数src;另一操作数隐含为AL或AX。同样其乘积的存放地址也是隐含为AX或AX、DX。 ②进栈、出栈指令(PUSH src,POP dst),另一个操作数地址也是固定的即椎栈栈顶。隐含寻址的指令,不需要计算有效地址EA,执行速度快,而且大多为单字节指令,特别适合在微机中使用。 2、立即数寻址(Immediate Addressing) 操作数直接包含在指令中,随着取指令地起放入指令队列,执行时直接从指令队列中取出,不必执行总线周期访问存储器,故称为立即数。立即数可以是8位或16位数,如果是16数,则其低字节存放在低地址单元,高字节存放在高地址单元。 这种寻址方式不需要根据地址寻找操作数,其执行速度快,但由于操作数是指令的一部分,不能修改,因此立即寻址方式只适用于提供常数,设定初始值。 立即数据总是紧跟在指令操作码之后并和操作码一起存放在代码段中,因而立即数据总是和操作码一起被放入BIU中的指令队列里,在指令执行时不需再存取存储器。 使用立即寻址的指令主要用来给寄存器赋初值 3、寄存器(直接)寻址(Register Addressing) 操作数包含在CPU内的某个寄存器中,指令中直接给出该寄存器名。 操作数对应的寄存器: 16位:AX、BX、CX、DX、SI、DI、SP和BP;8位:AL、BL、CL、DL、AH、BH、CH、DH。 若操作数在存储器中,这时指令中给出的是操作数所在单元的有效地址EA(偏移地址)或产生EA的计算方式。 由EU计算EA→BIU再根据:PA=(操作数在所段的段首址×16)+EA,计算出物理地址→再执行总线周期,按物理地址访问存储器取出操作数送给EU→由EU执行指令。 由于存储器组织是分段方式,对存储器的操作数寻址,只能在一段内的64KB内寻址。 操作数在什么段中,规定当前段寄存器为默认段寄存器。 如果指令中某些操作数在其他段中,就应在该操作数地址前使用段超越前缀指出段寄存器名。 8086/8088中默认段寄存器 允许超越的段寄存器如下表示: 4、直接寻址(Direct Addressing) 操作数放在存储器中,16位EA由指令直接给出,如果指令中没有段超越前缀指明操作数在哪个段,则默认为操作数在数据段。 PA=(DS×16)+EA 例: MOV AX,[1400H] 该指令EA=1400H,若DS=2000H,则PA=21400H。 该指令将PA所指地址的内容存放到AX。 注意: 1)直接寻址方式中,如果指令中的有效地址是一个16位数,为了不与立即数寻址相混淆,书写时,EA用方括号[EA]标识。如果有效地址是个符号地址,如MOV AX,DATA则不用[]。 2)如操作数不在数据段而在其他段(堆栈段或附加段),则用段超越前缀标识,如:MOV AX,ES:[2100H],该指令表明操作数在附加段,则PA=(ES×16)+2100H 6、寄存器相对寻址 操作数EA=指令指示的寄存器中的内容加上指令中指定的8/16位的位移量D,D是一个带符号数,用补码表示。 间址寄存器仍可为BX、BP、SI和DI。与寄存器间接寻址类似。 例:设(SS)=3000H,(BP)=8000H MOV AX,0100H [BP]则src的PA=(SS)×16 +(BP)+D=(3000H)×16+8000H+0100H=38100H 7、基址变址寻址 Src的EA由指令中指定的一个基址寄存器(BX或BP)的内容和一个变址寄存器(SI或DI)内容之和组

文档评论(0)

书是爱的奉献 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档