8086/8088 七种寻址方式 (一)8086/8088 寄存器组 (二)8086/8088 寻址方式 (1)立即寻址方式 操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段
这种操作数称为立即数,立即数可以是8 位的也可以是16 位的,如果立即数是16 位的按“高高低低”的原则
例如指令: MOV AX,1234H 的存储和执行情况如下图: 图中指令存放在代码段中,OP 表示该指令的操作码部分 再例如:MOV AL,5 则指令执行行,(AL)=05H MOV BX,3064H 则指令执行后,(BX)=3064H (2)寄存器寻址方式 操作数在CPU 内部的寄存器中,指令指定寄存器号
对于 16 位操作数,寄存器可以是: AX,BX,CX,DX,SI,DI,SP,和 BP 等: 对于 8 位数,寄存器可以是: AL,AH,BL,BH,CL,CH,DL,DH
这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度
例如:MOV AX,BX 如指令执行前(AX)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H,(BX)保持不变 例如:MOV SI,AX MOV AL,DH (3)直接寻址方式 操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)
操作数一般存放在数据段 所以操作数的地址由 DS 加上指令中直接给出的16 位偏移得到
如果采用段超越前缀,则操作数也可含在数据段外的其他段中
如下图所示: 在汇编语言指令中,可以用符叼地址代替数值地址
如:MOV AX,VALUE 此时 VALUE 为存放操作数单元的符号地址
如写成:MOV AX,[VALUE] 也是可以的,两者是相等的
如 VALUE 在附加段中,则应指定段超越前缀如下: MOV AX,ES:VALUE 或 M