汇编学习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的组合来访问内存 |