操作数是指令或程序的主要处理对象。如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。在CPU的指令系统中,除NOP(空指令)、HLT(停机指令)等少数指令之外,大量的指令在执行过程中都会涉及到操作数。所以,在指令中如何表达操作数或操作数所在位置就是正确运用汇编指令的一个重要因素。
1,立即寻址方式
MOV AH, 80H ADD AX, 1234H MOV ECX, 123456H
MOV B1, 12H MOV W1, 3456H ADD D1, 32123456H
立即数寻址方式通常用于对通用寄存器或内存单元赋初值
2,寄存器寻址方式
寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。
1、源操作数是寄存器寻址方式
如:ADD VARD, EAX ADD VARW, AX MOV VARB, BH等。
其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。
2、目的操作数是寄存器寻址方式
如:ADD BH, 78h ADD AX, 1234h MOV EBX, 12345678H等。
3、源和目的操作数都是寄存器寻址方式
如:MOV EAX, EBX MOV AX, BX MOV DH, BL等。
3,直接寻址方式
指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。
MOV BX, [1234H]
假设,(DS)=2000H,内存单元21234H的值为5213H。指令执行后,BX的值是5213H
下面指令的目标操作数就是带有段前缀的直接寻址方式
MOV ES:[1000H], AX
直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。
注意:立即寻址方式和直接寻址方式的书写格式的不同,直接寻址的地址要写在括号“[”,“]”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。
试比较下列指令中源操作数的寻址方式(VARW是内存字变量):
|
MOV AX, 1234H |
MOV AX, [1234H] |
;前者是立即寻址,后者是直接寻址 |
MOV AX, VARW |
MOV AX, [VARW] |
;两者是等效的,均为直接寻址 |
4,寄存器间接寻址方式
操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。
若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。
假设有指令:MOV BX,[DI],在执行时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。执行指令后,BX的值是4354H
解:根据寄存器间接寻址方式的规则,在执行本例指令时,寄存器DI的值不是操作数,而是操作数的地址。该操作数的物理地址应由DS和DI的值形成
即: PA=(DS)*16+DI=1000H*16+2345H=12345H。
所以,该指令的执行效果是:把从物理地址为12345H开始的一个字的值传送给BX。
|
5,寄存器相对寻址方式
若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS
若有效地址用BP来指定,则其缺省的段寄存器为SS。
假设指令:MOV BX, [SI+100H],在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,该指令执行后,BX的值是2715H
源操作数的有效地址EA为:
|
|
EA=(SI)+100H=2345H+100H=2445H
|
该操作数的物理地址应由DS和EA的值形成,即:
|
PA=(DS)*16+EA=1000H*16+2445H=12445H。
|
6,基址加变址寻址方式
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。
规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS。
假设指令:MOV BX, [BX+SI],在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问该指令执行后,BX的值是什么?
解:根据基址加变址寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
EA=(BX)+(SI)=2100H+0011H=2111H
该操作数的物理地址应由DS和EA的值形成,
即:PA=(DS)*16+EA=1000H*16+2111H=12111H
所以,该指令的执行效果是:把从物理地址为12111H开始的一个字的值传送给BX。
|
7,相对基址加变址寻址方式
规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS。
指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。
假设指令:MOV AX, [BX+SI+200H],在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,内存单元12310H的内容为1234H。指令执行后,AX的值是什么?
解:根据相对基址加变址寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H
该操作数的物理地址应由DS和EA的值形成
即:PA=(DS)*16+EA=1000H*16+2310H=12310H
|
用D1[i]来访问一维数组D1的第i个元素,它的寻址有一个自由度,用D2[i][j]来访问二维数组D2的第i行、第j列的元素,其寻址有二个自由度。多一个可变的量,其寻址方式的灵活度也就相应提高了。
相对基址加变址寻址方式有多种等价的书写方式,下面的书写格式都是正确的,并且其寻址含义也是一致的。
MOV AX, [BX+SI+1000H] MOV AX, 1000H[BX+SI]
MOV AX, 1000H[BX][SI] MOV AX, 1000H[SI][BX]
8,32位地址的寻址方式
32位基址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP;
32位变址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI和EBP(除ESP之外)。
1、地址中寄存器的书写顺序决定该寄存器是基址寄存器,还是变址寄存器;
如:[EBX+EBP]中的EBX是基址寄存器,EBP是变址寄存器,而[EBP+EBX]中的EBP是基址寄存器,EBX是变址寄存器;
2、默认段寄存器的选用取决于基址寄存器;
3、基址寄存器是EBP或ESP时,默认的段寄存器是SS,否则,默认的段寄存器是DS;
4、在指令中,如果使用段前缀的方式,那么,显式段寄存器优先。
MOV AX, [123456H] |
;默认段寄存器DS |
MOV EAX, [EBX+EBP] |
;默认段寄存器DS |
MOV EBX, [EBP+EBX] |
;默认段寄存器SS |
MOV EBX, [EAX+100H] |
;默认段寄存器DS |
MOV EDX, ES:[EAX*4+200H] |
;显式段寄存器ES |
MOV [ESP+EDX*2], AX |
;默认段寄存器SS |
MOV EBX, GS:[EAX+EDX*2+300H] |
;显式段寄存器GS |
MOV AX, [ESP] |
;默认段寄存器SS |
分享到:
相关推荐
在计算机体系结构中,操作数寻址方式是CPU访问数据的重要机制,它决定了CPU如何找到存储指令或数据的地址。本资源"操作数寻址方式Flash演示"通过一系列的动画展示了七种基本的寻址方式,帮助理解这些复杂的概念。...
操作数寻址方式决定了如何找到指令中涉及的数据。以下列举了一些常见的寻址方式: 1. **隐含寻址**:操作数的地址并不直接在指令中给出,而是由指令格式隐含指定,例如累加器AC作为一个默认的操作数。 2. **立即寻址...
计算机硬件寻址方式是计算机系统中的一种重要概念,它涉及到指令系统、指令格式、操作数寻址方式等方面。本文将对计算机硬件寻址方式的相关知识点进行详细的解释和总结。 一、指令系统 计算机系统中的指令系统是指...
实验前的预习至关重要,需全面复习操作数寻址方式以及数据传送、算术和逻辑运算等基本指令。 #### 实验预习要求 - **熟悉上机步骤**:阅读教材第一章,掌握汇编语言程序设计的具体步骤。 - **调试工具使用**:深入...
研制一台性能如下的实验计算机。 (1)具有键盘和打印机两种外部设备。...(4)操作数寻址方式有: 直接地址寻址 立即数寻址 寄存器直接寻址 寄存器间接寻址 (5)指令系统至少含有以下指令(详见文本)
- **数据处理指令操作数寻址方式**:用于数据处理指令中操作数的寻址。 - **内存访问指令寻址方式**:用于Load/Store指令对内存的访问。 #### 数据处理指令寻址方式 数据处理指令的寻址方式包括以下11种: 1. **...
操作系统寻址方式总结 操作系统中寻址方式是指 CPU 访问存储器时所使用的方式,它是操作系统中一个非常重要的概念。根据操作系统中存储器的组织形式,可以将寻址方式分为以下几种。 1. 立即寻址 立即寻址是指将...
2. **理解寻址方式**:实验要求掌握七种不同的操作数寻址方式,这包括直接寻址、间接寻址、基址变址寻址等,通过编写和调试程序来实际应用这些寻址模式。 3. **算术与位串处理**:涉及多数位的算术运算、移位操作和...
2. **操作数寻址方式** - **立即寻址**:操作数直接包含在指令中,如立即数,仅作为源操作数。 - **寄存器寻址**:操作数位于CPU的寄存器中,例如`MOV AX, BX`。 - **存储器寻址**:操作数在内存中,指令提供内存...
本实验旨在让你熟练掌握7种不同的操作数寻址方式,包括直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、相对寻址、基址变址寻址以及段超越寻址。通过实际操作,你会更好地理解这些寻址方式的使用场景和方法。 ...
计算机组成原理第四章课后题参考答案中涉及到指令格式结构、寻址方式特点和操作数寻址方式等知识点,本节将对这些知识点进行详细解析。 一、指令格式结构 在计算机组成原理中,指令格式结构是指令的基本结构,它...
这种方式只能用作源操作数寻址,而不能用作目标操作数寻址。其优点是速度快,因为不需要访问内存。例如,指令`MOVAL, 80H`就是将立即数80H送入AL寄存器。 2. **寄存器寻址**:指令中给出寄存器编号,操作数位于...
立即寻址是一种将操作数直接包含在指令中的寻址方式。立即数可以是短立即数(3、5、8 或 9 位)或 16 位的长立即数。短立即数指令编码为一个字长,16 位立即数的指令编码为两个字长。在指令中,立即数前面加一个“#...
”这涉及到单片机,乃至所有计算机系统中寻址方式的重要性,它决定了操作数如何被有效地定位和处理。 在单片机和计算机系统中,寻址方式是指CPU根据指令提供的信息来找到操作数的一种方法。不同的寻址方式对应不同...
立即寻址方式是一种最简单且直观的寻址方式,在这种寻址模式下,操作数直接包含在指令中,作为指令的一部分出现。例如: - `MOVAL,5` - `MOVAX,3064H` - `MOVAL,‘A’` 这里的`5`、`3064H`以及`‘A’`都是立即数,...
* 8086/8088 提供了 8 种操作数寻址方式: 1. 立即寻址 2. 寄存器寻址 3. 直接寻址 4. 寄存器间接寻址 5. 寄存器相对寻址方式 6. 基址变址寻址方式 7. 相对基址变址寻址方式 8. 隐含寻址 立即寻址: * ...
在计算机体系结构中,寻址方式是确定指令操作数的有效地址的方法。不同的寻址方式能够提高程序执行效率,并且支持多种编程需求。IBM-PC 汇编语言中,寻址方式是通过不同的指令集来实现的,下面将对立即数寻址、...
8086/8088提供了多种操作数寻址方式,包括立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址和隐含寻址。这些寻址方式各有特点,适用于不同的操作数来源,包括指令...