- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机电-第3章8086指令系统
第三章 8086指令系统 本章主要内容: 1. 指令与指令系统 2. 8086指令系统的基本寻址方式 3. 8086/8088指令系统 指令是计算机执行某种操作的命令。 指令系统是该计算机所有指令的集合,它是综合反映计算机性能的重要因素,不仅直接影响机器的硬件结构,还影响机器的系统软件及机器的适用范围。 一般,计算机的CPU不同,其使用的指令系统就不同。 指令格式 第二节 8086的寻址方式 包括:操作数的寻址方式和指令的寻址方式。 指令通常顺序存放,因此,指令寻址只要通过对指令指针IP内容自动加1,便可形成下一条指令地址。 当遇到转移或调用指令时,按照转移目标修改IP或CS,因此,指令的寻址主要是转移指令和调用指令的转移目的地址的形成方式,这里先讨论操作数的寻址方式 8086的操作数寻址方式 1、隐含寻址 指令中不指明操作数,但隐含在操作码中。如:①乘法,其指令开工是单操作数指令(MUL src),只指示了源操作数src;另一操作数隐含为AL或AX。同样其乘积的存放地址也是隐含为AX或AX、DX。②进栈、出栈指令(PUSH src,POP dst),另一个操作数地址也是固定的即椎栈栈顶。隐含寻址的指令,不需要计算有效地址EA,执行速度快,而且大多为单字节指令,特别适合在微机中使用。 2、立即数寻址(Immediate Addressing) 这种寻址方式不需要根据地址寻找操作数,其执行速度快,但由于操作数是指令的一部分,不能修改,因此立即寻址方式只适用于提供常数,设定初始值。 使用立即寻址的指令主要用来给寄存器赋初值 MOV AL,5;指令执行后AL=05H,8位数据05H存入AL寄存器 MOV AX,3064H;指令执行后AX=3064H,16位数据3064H存入AX寄存器 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由指令直接给出,如果指令中没有段超越前缀指明操作数在哪个段,则默认为操作数在数据段。 物理地址: 注意: 1)直接寻址方式中,如果指令中的有效地址是一个16位数,为了不与立即数寻址相混淆,书写时,EA用方括号[EA]标识。如果有效地址是个符号地址,如MOV AX,DATA则不用[ ]。 2)如操作数不在数据段而在其他段(堆栈段或附加段),则用段超越前缀标识,如:MOV AX,ES:[2100H],该指令表明操作数在附加段,则PA=(ES×16)+2100H 6、寄存器相对寻址 间址寄存器仍可为BX、BP、SI和DI。与寄存器间接寻址类似。 例:设(SS)=3000H,(BP)=8000HMOV AX,0100H [BP]则src的PA=(SS)×16 +(BP)+D=(3000H)×16+8000H+0100H=38100H 7、基址变址寻址 src的EA由指令中指定的一个基址寄存器(BX或BP)的内容和一个变址寄存器(SI或DI)内容之和组成,即 根据基址寄存器是BX还是BP,确定操作数是在数据段(DS)还是在堆栈段(SS)。 如:MOV AX,[BX] [DI]或写成MOV AX,[BX+DI]设(DS)=2000H,(BX)=0256H,(DI)=6694H,则PA=(DS)×16+(BX)+(DI)=268EAH 指令执行后,将把268EAH和268EBH两单元的内容送到AX中,即(AH)=3BH,(AL)=20H 由于基址寄存器和变址寄存器的内容都是可以修改,因此,在处理二维数组和表格时用这种寻址方式较为方便。 第三节 8086/8088指令系统 一、数据传送类指令 8086/8088有14种数据传送类指令,可以实现CPU的内部寄存器之间、CPU与存储器之间、CPU和I/O端口之间的数据
文档评论(0)