- 1、本文档共129页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微型原理与应用第4章
第4章 指令系统;本章重点:寻址方式和各功能指令。
难点:指令编码的格式;学会用功能指令编写的汇编程序怎样来阅读和理解。
学习方法:以前几章学习到的硬件知识为基础,理解指令系统中各种功能指令和寻址方式在机器中是怎样其作用的。
为学习汇编语言程序设计做基础。;本章结构;4.1 8086/8088指令编码;4.1.1 8086/8088指令的编码;1.操作码部分:位于指令编码的第一个字节,由三个部分组成:
①OP code:操作码字段,规定了指令的操作类型;
②d :指示操作数的传送方向。(第2字节的寻址特征部分可以指出两个操作数,一个由reg字段确定,另一个由mod和r/m字段确定。)
③w:指示操作数的类型。当w=1时,表示两个操作数均为字操作数;当w=0时,表示两个操作数均为字节操作数;;2.寻址特征部分:该部分指出了指令中的两个操作数所存放的位置以及存储器中操作数有效地址EA的计算方法,三个部分组成:
①mod:用来区分另一个操作数是在寄存器中还是在存储器中;;②reg:用来规定一个寄存器操作数,该操作数是原操作数还是目的操作数由操作特征部分中的d位规定;同时与 w字段配合可选择寄存器。;③r/m:该字段仅受 mod字段的控制。当mod=11时,为寄存器方式; mod≠11时,为存储器方式。另外, r/m字段还指出如何计算存储器操作数的地址。 r/m字段和mod字段组合的寻址方式如表:;3.位移量部分:此部分也构成了操作数有效地址的一部分。(指令中是否有这部分,取决于寻址特征中的mod和r/m字段)
4.立即数部分:若指令带有立即数,就有这部分;(它总在位于指令编码的最后1~2个字节);例:指令MOV AH,[BX+DI+50H]的代码格式为:;指令中的前缀字段(Prefix);例:MOV AX,ES:[BX]是由BX寄存器所指定的存储器的某个单元向通用寄存器AX的传送指令。(段基址由ES代替了DS)我们要在指令上用前缀字节来标记,该指令的各部分编码如下:;4.1.2 指令的执行时间 ;4.2 8086/8088寻址方式;4.2.1 操作数的种类;4.2.2 寻址方式; ……; 2)寄存器寻址:此方式的操作数放在寄存器内,由指令直接给出某个寄存器的名字,以寄存器的内容作为操作数。(通用寄存器和段寄存器均可)
例: MOV SI??DX ;(SI) (DX)
注:
1、寄存器寻址方式的指令操作在CPU内部执行,不需要执行总 线 周期,执行速度快。
2、寄存器寻址方式既适用于指令的源操作数,也适用于目的操作数,并且可同时用于源和目的操作数;例:MOV AX,BX;(1)直接寻址(存储器直接寻址)
操作数存放在存储器单元中,由指令直接给出该单元的有效地址EA(即16位段内偏移量)也称偏移地址,代表操作数所在存储单元距离段首地的字节数。
例:MOV AX, [1000H];DS段中1000H单元内容送AL…
MOV AX, ES:[2000H];ES段中2000H单元内容送AL…
注:
1、直接寻址方式的操作数所在存储单元的段地址一般在数据段寄存器DS中。
2、如果操作数在其他段,则需要在指令中用段超超越前缀指出相应的段寄存器名。
寻址过程示意;直接寻址过程示意图;(2)寄存器间接寻址:
此方式的操作数存放在存储器单元中,指令给出的16位寄存器值就是该操作数所在存储单元的EA。
例:(DS)=2100H,(SI)=2000H
指令:MOV AX,[SI] ;(AX) ((SI))
物理地址=16 x (DS)+(SI)=16 x2100H+2000H=230000H
指令执行结果是将23000H和23001H单元的内容送入寄存器AX中。
注:使用BX、SI、DI,操作数在DS段;BP时在SS段
寻址过程示意;寄存器间接寻址过程示意图;
操作数的有效地址EA等于一个基址寄存器(BX或BP)与一个变址寄存器(SI或DI)的内容之和;
例:MOV [BP][DI],AX
注:使用基址寄存器BX时,段寄存器为DS,使用基址寄存器BP时,段寄存器为SS。
错误指令举例:
MOV [BX+CX],AX ;CX不能做变址寄存器
MOV [BX+BP],AX ;BP不能作为变址寄存器
MOV [BX+DI],ARRAY;ARRAY为变量,则源和目的操作数都在内存中
寻址过程示意;基址变址寻址示意图;(4)寄存器间接相对寻址:
操作数存放在存储单元中,有效地址EA等于一个由指令规定的基址寄存器(BP、BX)或变址寄存器(SI、DI)的内容与由指令中给定的8位或16位的相对地址位移量disp之和;
例:MOV [SI+disp],AX
寻
文档评论(0)