8086指令系统:LES双字指针与ES寄存器

需积分: 50 2 下载量 169 浏览量 更新于2024-07-13 收藏 963KB PPT 举报
"这篇内容主要讨论的是8086/8088微处理器的寻址方式和LES指令的使用。LES指令用于将双字指针从内存加载到指定寄存器和ES寄存器中,是8086汇编语言编程中的一个重要概念。" 在8086/8088的指令系统中,寻址方式是决定如何访问存储器中操作数的关键部分。以下是一些常见的寻址方式: 1. **立即寻址**:操作数直接包含在指令中,例如`MOV AX, im`,其中`im`可以是8位或16位的数值。 2. **寄存器寻址**:操作数位于CPU寄存器中,如`MOV DS, AX`,这里DS被赋值为AX寄存器的值。 3. **直接寻址**:操作数的地址直接在指令中给出,例如`MOV AX, [2000H]`,或者通过符号地址如`AREA1`来访问。 4. **寄存器间接寻址**:操作数的地址在某个寄存器中,如`MOV AX, [BX]`,其中BX寄存器包含了操作数的内存地址。 5. **变址寻址**:结合寄存器和一个偏移量来访问内存,例如`MOV AX, [BX+DI]`。 6. **基址加变址寻址**:使用基址寄存器和变址寄存器的组合,如`MOV AX, [BX+SI]`。 LES(Load Effective Address)指令是8086汇编语言中的一个特定指令,它的格式为`LES r, src`,其中`r`是目标寄存器,通常为DI,`src`是源操作数,通常是一个内存地址。LES指令会将内存中指定地址的双字(32位)加载到目标寄存器`r`(16位)和ES寄存器(16位)中。例如,如果DS=0100H,BX=0020H,(01020H)=0300H,(01022H)=0500H,ES=3000H,执行`LES DI, [BX]`后,DI会被设置为0300H,而ES则变为0500H。 这种指令在处理大块数据或需要改变段寄存器的场合非常有用,因为它同时更新了数据段寄存器和一个通用寄存器。理解这些寻址方式和LES指令对于编写有效的8086汇编程序至关重要,因为它们直接影响程序的效率和正确性。在微机原理和应用的学习中,深入掌握这些基础知识对于理解和设计微处理器系统的程序至关重要。