admin 管理员组文章数量: 1086019
汇编语言的七种寻址方式
汇编语言的七种寻址方式
寻址方式即指令中指明的操作数存放位置的表达方式。
(一)操作数存放位置
指令中进行操作数的数据存放在三种位置:指令、寄存器、存储器
1.1 立即数——存放在指令中
被操作数据直接表示在指令的操作数字段,及操作码之后。
eg. MOV AL,10H
1.2寄存器操作数——存放在寄存器中
数据存放在CPU的寄存器中
eg. INC CX
1.3存储器操作数——存放在存储器中
存储器表示内存和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.3寄存器相对寻址方式
操作数有效地址为基址寄存器(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.5相对加基址变址寻址方式
一般把BX和BP看做基址寄存器,SI和DIi看做变址寄存器,在这个基础上加上8位或16位的偏移量。
MOV [BX+DI+1234H],AH
AH 赋值给 数据段*10H+偏移地址
本文标签: 汇编语言的七种寻址方式
版权声明:本文标题:汇编语言的七种寻址方式 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686731554a30464.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论