存储器寻址方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储器寻址方式
存储器寻址方式的操作数存放在主存储器中,用其所在主存的位置表示操作数。在这种寻址方式下,指令中给出的是有关操作数的主存地址信息。8088的存储器空间是分段管理的。程序设计时采用逻辑地址;由于段地址在默认的或用段超越前缀指定的段寄存器,所以采用偏移地址,称之为有效地址(Effective Address, EA)
1.直接寻址
在这种寻址方式下,指令中直接包含了操作数的有效地址,跟在指令操作码之后。其默认的段地址在DS段寄存器中,可以采用段超越前缀。
例将数据段中偏移地址2000H处的内存数据送至AX寄存器。
MOV AX, [2000H]
该指令中给定了有效地址2000H, 默认与数据段寄存器DS一起构成操作数所在存储单元的物理地址。
如果DS=1429H,则操作数所在的物理地址为1429H*16+2000H=16920H. 该指令的执行结果是将16920H单元的内容传送至AX寄存器,其中,高字节内容送AH寄存器,低字节内容送AL寄存器。
MOV AX, [2000H];指令代码:A1 00 20
例: 将附加段中偏移地址2000H 处的内存数据送至AX 寄存器。 MOV AX, ES:[2000H]; 指令代码:26 A1 00 20
变量指示内存的一个数据,直接引用变量就是采用直接寻址方式。变量应该在数据段进行定义,常用的变量定义伪指令DB 和DW 分别表示字节变量和字变量,例如
WV AR DW 1234H; 定义字变量WV AR ,它的初值是1234H 这样,标示符WV AR 表示具有初值1234H 的字变量,并由汇编程序为它内存分配了两个连续的字节单元。假设它在数据段偏移地址是0010H 。
例:将数据段的变量WV AR (即该变量名指示的内存单元数据)送至AX 寄存器。
MOV AX, WV AR;
指令功能: 上述指令实质就是如下指令: AX WV AR
AX DS :[0010H]
MOV AX, [0010H]; 指令代码:代码:26 A1 00 20
AX=1234H
堆栈操作指令
堆栈是一个“先进后出”的主存区域,使用SS段寄存器记录段地址;堆栈只有一个出口,即当前站顶,用堆栈指针寄存器SP指定堆栈站顶的偏移地址。
堆栈操作的对象只能是字操作。进站时,SP向低地址移动两个字节单元以指向新的栈顶,然后数据的低字节于存放低地址,高字节存放于高地址。出栈时,字从栈顶弹出,低地址字节送低字节,高地址字节送高地址,SP相应向高地址移动两个字节单元。
MOV ax, 7812H
PUSH ax; 将AX内容推入堆栈(如图1)
POP AX;将当前堆栈内容弹给AX(如图2)
PUSH [2000H]
POP WV AR
堆栈段是程序不可或缺的一个内存区。堆栈可用来临时存放数据,以便随时恢复它们。堆栈常用于寄存器的保护以及子程序间的参数传递。