汇编语言的七种寻址方式
时间:2022-08-16 08:00:00
汇编语言的七种寻址方式
(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.存储器搜索方式
操作数在指令指示的寄存器中
说明:操作数存在于存储器中,操作数的偏移地址存在BX、SI、DI和BP寄存器。
以BX、SI、DI默认操作数作为间接搜索寄存器存储在数据段中DS存储段地址寄存器。
以BP作为间接寻址寄存器,默认操作数存储在堆栈段,使用SS存储段地址寄存器。
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 偏移地址