汇编寻址方式介绍

汇编寻址方式介绍

ID:18676480

大小:290.00 KB

页数:9页

时间:2018-09-20

汇编寻址方式介绍_第1页
汇编寻址方式介绍_第2页
汇编寻址方式介绍_第3页
汇编寻址方式介绍_第4页
汇编寻址方式介绍_第5页
资源描述:

《汇编寻址方式介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第3章操作数的寻址方式操作数是指令或程序的主要处理对象。如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,大量的指令在执行过程中都会涉及到操作数。所以,在指令中如何表达操作数或操作数所在位置就是正确运用汇编指令的一个重要因素。在指令中,指定操作数或操作数存放位置的方法称为寻址方式。操作数的各种寻址方式是用汇编语言进行程序设计的基础,也是本课程学习的重点之一。微机系统有七种基本的寻址方式:立即寻址方式、寄存器寻址方式、直接

2、寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址加变址寻址方式、相对基址加变址寻址方式等。其中,后五种寻址方式是确定内存单元有效地址的五种不同的计算方法,用它们可方便地实现对数组元素的访问。另外,在32位微机系统中,为了扩大对存储单元的寻址能力,增加了一种新的寻址方式——32位地址的寻址方式。为了表达方便,我们用符号“(X)”表示X的值,如:(AX)表示寄存器AX的值。3.1立即寻址方式操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。立即数可以是8位、16位或32位,该数值

3、紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:MOVAH,80H   ADDAX,1234H   MOVECX,123456HMOVB1,12H   MOVW1,3456H  ADDD1,32123456H其中:B1、W1和D1分别是字节、字和双字单元。以上指令中的第二操作数都是立即数,在汇编语言中,规定:立即数不能作为指令中的第二操作数。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。立即数寻址方式通常用于对通用寄存器或内存单元赋初值。图3.1是指令“MOVAX,457

4、6H”存储形式和执行示意图。3.2寄存器寻址方式指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。指令中可以引用的寄存器及其符号名称如下:、8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;、16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;、32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。1、源操

5、作数是寄存器寻址方式如:ADDVARD,EAX  ADDVARW,AX   MOVVARB,BH等。其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。在第4章将会学到如何定义它们。2、目的操作数是寄存器寻址方式如:ADDBH,78h    ADDAX,1234h   MOVEBX,12345678H等。3、源和目的操作数都是寄存器寻址方式如:MOVEAX,EBX   MOVAX,BX    MOVDH,BL等。由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器

6、单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,我们提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。3.3直接寻址方式指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。例3.1假设有指令:MOVBX,[1234H],在执行时,(DS)=2000H,内存单元21234H的值为5213

7、H。问该指令执行后,BX的值是什么?解:根据直接寻址方式的寻址规则,把该指令的具体执行过程用图3.2来表示。从图3.2中,可看出执行该指令要分三部分:图3.2直接寻址方式的存储和执行示意图、由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;、访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;、取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。所以,在执行该指令后,BX的值就为5213H。由于数据段的段寄存器默认为DS,如果要指定

8、访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。下面指令的目标操作数就是带有段前缀的直接寻址方式。MOV ES:[1000H],AX直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。注意:立即寻址方

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。