汇编学习6

寻址

立即寻址(Immediate Addressing)

在这种方式中,操作数是直接包含在指令中的

1
MOV AX, 5  ; 将数值5直接放入寄存器AX中

特点:操作数是直接给定的,速度最快,不需要从内存中获取数据

寄存器寻址(Register Addressing)

操作数位于寄存器中。CPU直接在寄存器之间传输数据,速度非常快

1
MOV AX, BX  ; 将寄存器BX的值复制到寄存器AX

特点:不需要访问内存,效率高

直接寻址(Direct Addressing)

操作数的内存地址在指令中指定,指令会直接指向内存中的一个具体位置

1
MOV AX, [1234H]  ; 将内存地址1234H处的值传送到AX寄存器

特点:访问内存数据,指令中包含了操作数的内存地址

间接寻址(Indirect Addressing)

操作数的地址存储在寄存器中,指令使用寄存器中存储的值作为内存地址

1
MOV AX, [BX]  ; 使用寄存器BX中存储的地址来访问内存,并将该地址的值传送到AX

特点:可以实现内存中复杂数据结构的访问,如数组和链表

寄存器间接寻址(Register Indirect Addressing)

和间接寻址类似,但是使用基址寄存器或索引寄存器(如SI、DI、BP)来提供内存地址

1
MOV AX, [SI]  ; 将SI寄存器指向的内存内容传送到AX

基址变址寻址(Base-Index Addressing)

这种寻址方式结合了基址寄存器和变址寄存器来形成有效地址。常用于访问数组元素

1
MOV AX, [BX + SI]  ; 使用寄存器BX和SI的组合地址进行访问

特点:可以用于更复杂的数据结构,如二维数组

相对寻址(Relative Addressing)

用于跳转指令,目标地址是相对于当前指令的地址偏移量

1
JMP SHORT LABEL  ; 跳转到相对地址的标签位置

特点:常用于控制程序流程,如循环和条件分支

基址相对变址寻址(Base Relative Index Addressing)

将基址寄存器的值与变址寄存器和一个偏移量组合在一起,用于访问复杂数据结构

1
MOV AX, [BP + SI + 8]  ; 使用BP寄存器、SI寄存器和偏移量8的组合来访问内存