《微机原理与接口技术常用指令.doc

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《微机原理与接口技术常用指令

微原指令 一、立即寻址方式 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中,如图所示。 例如: MOV CX,2A50H 立即寻址方式的指令常用来给 寄存器赋初值。立即数不但可 以送到寄存器中,还可以送到 一个存储单元(8位)中或两个连 续的存储单元(16位)中去。 在所有的指令中,立即数只能 作源操作数,不能作目的操作 数。另外要注意,以A~F打头 的数字出理在指令中时,前面一定要加一个数字0,以免与其它符号相混淆。如将立即FF00H 送到AX的指令必须写成如下形式: MOV AX,0FF00H 二、寄存器寻址方式 在这种寻址方式下,操作数包含在寄存器中,由指令指定寄存器的名称。对位操作数,寄存器可以是AX、BX、CX、DX,SI、D1、SP和BP等。对于8位操作数,则用寄存器AH、AL、BH、BL、CH、CL、DH和DL。 例如:MOV DX,AX MOV CL,AH 注意:源操作数的长度必须与目的操作数一致,否则会出错。例如,不能将AH寄存器的内容传送到CX中去,尽管CX寄存器放得下AH的内容,但汇编程序不知道将它放到CH还是CL中。 这种寻址方式的优点是:寄存器数量一般在几个到几十个,比存储器单元少很多,因此它的地址码短,从而缩短了指令长度,节省了程序存储空间;另一方面,从寄存器里取数比从存储器里取数的速度快得多,从而提高了指令执行速度。 三、直接寻址方式 1.直接寻址方式 在IBM PC机中,把操作数的偏移地址称为有效地址EA。使用直接寻址方式的指令时,存储单元的有效地址直接由指令给出,在它们的机器码中,有效地址存放在代码段中指令的操作码之后。而该地址单元中的数据总是存放在存储器中,所以必须先求出操作数的物理地址,然后再访问存储器,才能取得操作数。当采用直接寻址指令时,如果指令中没有用前缀指明操作数存放在哪一段,则默认为使用的段寄存器为数据段寄存器DS,操作数的物理地址=16×DS+EA=10H×DS+EA。 指令中有效地址上必须加一个方括号,以便与立即数相区别。 例如:MOV AX,[2000H] MOV AL,[2000H] 2.段超越前缀 如果要对代码段、堆栈段或附加段寄存器所 指出的存储区进行直接寻址,应在指令中指定段 超越前缀。例如,数据若放在附加段中,则应在 有效地址前加“ES:”,这里的冒号“:”称为修改 属性运算符,计算物理地址时要用ES作基地址, 而不再是默认值DS。 例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+500H。 2.段超越前缀 如果要对代码段、堆栈段或附加段寄存器所指出的存储区进行直接寻址,应在指令中指定超越前缀。例如,数据若放在附加段中,则应在有效地址前加“ES:”,这里的冒号“:”称为修改属性运算符,计算物理地址时要用ES作基地址,而不再是默认值DS。 例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+500H。 符号地址 在汇编语言中还允许用符号地址代替数值地址,实际上就是给存储单元起一个名字,这样, 如果要与这些单元打交道,只要使用其名字即可,不必记住具体数值是多少。 例如: MOV AX,AREA1 光从指令的形式上看,AREAl不仅可代表符号地址,也可以表示它是一个16位的立即数,两者之间究竟如何来区别呢?程序中还必须事先安排说明语句也叫做伪指令来加以说明。 例如:AREA1 EQU 0867H MOV AX,AREA1 例如:AREA1 DW 0867H MOV AX,AREA1 (该指令也可写为 MOV AX,[AREA1]) 符号地址也允许段超越,下面两条指令是等价的,即: MOV AX,ES:AREA1 MOV AX,ES:[AREA1] 源操作数的物理地址=16×ES+AREA1 四、寄存器间接寻址 指令中给出的寄存器中的值不是操作数本身,而是操作数的有效地址,这种寻址方式称为寄存器间接寻址。寄存器名称外面必须加方括号,以与寄存器寻址方式相区别。这类指令中使用的寄存器有基址寄存器BX、BP及变址寄存器SI、DI。 如果指令中指定的寄存器是BX、SI或DI,则默认操作数存放在数据段中,这时要用数据段寄存器DS的内容作为段地址,操作数的物理地址由DS左移4位后与BX、SI或Dl相加形成。 例如:

文档评论(0)

yingxiaorong28 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档