汇编语言的七种寻址方式
(1)操作数存储位置
操作数据存储在指令、寄存器、存储器三个位置
1.1 立即数——存放在指令中
操作数据直接表示在指令的操作数字段和操作码之后。 eg. MOV AL,10H
1.寄存器操作数-存储在寄存器中
数据存放在CPU的寄存器中 eg. INC CX
1.存储器操作数-存储在存储器中
存储器表示内存和I/O端口(段地址) 数据的偏移地址在指令中表示。 eg. MOV AX, [2500H] 其中[2500H]操作存储器的数量
(二)寻址分类
2.1立即数寻址方式
指令 寄存器/存储器,立即数 MOV AL,80H
操作数直接从指令码中提取给相应的位置
2.2寄存器寻址方式
操作数在指令指示的寄存器中 指示中直接指出寄存器名称
INC BX 将BX中的数据 1 MOV AX,CX 将CX数据赋予AX
2.3.存储器搜索方式
操作数在指令指示的寄存器中
2.3.1直接寻址
在内存中,操作数的地址可以通过指令中的偏移地址和段地址来定位。 即:数据段*10H加上指令中的偏移地址
MOV AL,[1024H] 假如段地址DS:2000H 操作数地址为20000H 1024H=21064H 通过在21064找到操作数赋AL即可完成
2.3.2寄存器间接寻址方式
MOV AX,[SI] MOV [BX],AL 数据段*10H 偏移地址
2.3.33寄存器相对寻址
基址寄存器的有效地址(BX、BP)或变址寄存器(SI、DI)的内容加上给定的8位或八位位移量之和。
MOV CL,[BX 1064H] 数据段*10H BX 1024H 赋值给Cl
2.3.4基址加变址寻址
一般把BX和BP作为基址寄存器,SI和DIi视为变址寄存器。
MOV AH,[BP][SI] 段地址*10H 基址 变址 赋值给AH
2.3.55相对于加基的变址
一般把BX和BP作为基址寄存器,SI和DIi在此基础上,将8位或16位的偏移量视为变址寄存器。
MOV [BX DI 1234H],AH AH 赋值给 数据段*10H 偏移地址