汇编语言中的如何寻找地址的
1个回答
展开全部
汇编中的寻址方式很多~
(以下内容出自I《BM-PC汇编语言程序设计》)
与数据有关的寻址方式
1,立即寻址方式
操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段,这种操作数成为立即数。
例:mov al,5 执行完指令后al的值为05h
2,寄存器寻址方式
操作数在寄存器中,指令指定寄存器号。
例:mov ax,bx
3,直接寻址方式
操作数的有效地址包含位移量的一种成分,其值就存放在中指令的操作码之后。
例:mov ax,[2000h]
在汇编语言指令中,可以用符号地址代替数值地址。如:
mov ax,value
value为存放操作数单元的符号地址。如:
mov ax,[value]
4,寄存器间间接寻址
操作数的有效地址只包含基址寄存器内容或变址寄存器内容的一种成分。
例:mov ax,[bx]
如果(DS)=2000h,(bx)=1000h
则 物理地址=20000+1000=21000h
5,寄存器相对寻址方式(或称直接变址寻址方式)
操作数的有效地址为基址寄存器或变址寄存器的内容和指令中指定的位移量之和,所以有效地址由两种成分组成。
例:mov ax,count[si]
(也可以表示为mov ax,[count+si])
6,基址变址寻址方式
操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,所以有效地址由两种成分组成。
例:mov ax,[bx][di]
(或写为:mov ax,[bx+di])
此类寻址方式使用段跨越前缀的格式为:mov ax,es:[bx][di]
7,相对基址变址寻址方式
操作数得意偶小弟值基址寄存器和一个变址寄存器的内容和指令中指定的位移量之和,所以有效地址由三种成分组成。
例:mov ax,mask[bx][si]
(也可写为mov ax,mask[bx+si]或者mov ax,[mask+bx+si])
8,比例变址寻址方式
操作数的有效地址是变址寄存器的内容乘以指令中指定的比例银子再加上位移量之和,所以由三种成分组成。
这种寻址方式与相对寄存器寻址相比,增加了比例银子,其优点在于:对元素大小为2,4,8的数组,可以在变址寄存器中给出数组元素下标,而由寻址方式控制直接用比例因子把下标转换为变址值。
例:mov eax,count[esi*4]
9,基址比例变址寻址方式
操作数的有效地址是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和,所以有效地址由思政成分组成。
例:mov eax,table[ebp][edx*8]
10,相对基址比例变址寻址方式
操作数的有效地址是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和,所以有效地址由四种成分组成。
例:mov eax.table[ebp][edi*4]
基本就这些了~想我刚学的时候云里雾里~现在把这些打出来感觉比学的时候清晰很多了~
(以下内容出自I《BM-PC汇编语言程序设计》)
与数据有关的寻址方式
1,立即寻址方式
操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段,这种操作数成为立即数。
例:mov al,5 执行完指令后al的值为05h
2,寄存器寻址方式
操作数在寄存器中,指令指定寄存器号。
例:mov ax,bx
3,直接寻址方式
操作数的有效地址包含位移量的一种成分,其值就存放在中指令的操作码之后。
例:mov ax,[2000h]
在汇编语言指令中,可以用符号地址代替数值地址。如:
mov ax,value
value为存放操作数单元的符号地址。如:
mov ax,[value]
4,寄存器间间接寻址
操作数的有效地址只包含基址寄存器内容或变址寄存器内容的一种成分。
例:mov ax,[bx]
如果(DS)=2000h,(bx)=1000h
则 物理地址=20000+1000=21000h
5,寄存器相对寻址方式(或称直接变址寻址方式)
操作数的有效地址为基址寄存器或变址寄存器的内容和指令中指定的位移量之和,所以有效地址由两种成分组成。
例:mov ax,count[si]
(也可以表示为mov ax,[count+si])
6,基址变址寻址方式
操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,所以有效地址由两种成分组成。
例:mov ax,[bx][di]
(或写为:mov ax,[bx+di])
此类寻址方式使用段跨越前缀的格式为:mov ax,es:[bx][di]
7,相对基址变址寻址方式
操作数得意偶小弟值基址寄存器和一个变址寄存器的内容和指令中指定的位移量之和,所以有效地址由三种成分组成。
例:mov ax,mask[bx][si]
(也可写为mov ax,mask[bx+si]或者mov ax,[mask+bx+si])
8,比例变址寻址方式
操作数的有效地址是变址寄存器的内容乘以指令中指定的比例银子再加上位移量之和,所以由三种成分组成。
这种寻址方式与相对寄存器寻址相比,增加了比例银子,其优点在于:对元素大小为2,4,8的数组,可以在变址寄存器中给出数组元素下标,而由寻址方式控制直接用比例因子把下标转换为变址值。
例:mov eax,count[esi*4]
9,基址比例变址寻址方式
操作数的有效地址是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和,所以有效地址由思政成分组成。
例:mov eax,table[ebp][edx*8]
10,相对基址比例变址寻址方式
操作数的有效地址是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和,所以有效地址由四种成分组成。
例:mov eax.table[ebp][edi*4]
基本就这些了~想我刚学的时候云里雾里~现在把这些打出来感觉比学的时候清晰很多了~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询