8086的寻址方式

来源:互联网 发布:java迭代器怎么写 编辑:程序博客网 时间:2024/05/22 09:45
8086的寻址方式-寻找操作数的方法
寻找操作数的地址(一般指源操作数)
寻找要执行下一条指令的地址
在8086指令系统中,说明操作数所在地址的寻址方式可分为8种
*立即寻址
立即寻址方式所提供的操作数直接包含在指令中。它紧跟在操作码的后面与操作码一起放在代码区域中
立即寻址的作用主要是给存储器赋初值
*直接寻址
直接寻址是指操作数地址的16位段内偏移地址直接包含在指令中,它与操作码一起存放在代码段区域。操作数一
般在数据段区域中,它的地址为数据段寄存器DS加上这16位的段内地址偏移。
*寄存器寻址
寄存器寻址是指操作数包含在CPU的内部寄存器,如AX,BX,DX等(14个寄存器),寄存器寻址与段地址无关。
*寄存器间接寻址
操作数的偏移地址放在寄存器中
只有SI,DI,BX,BP可作寄存器
*寄存器相对寻址
操作数的地址是由段寄存器内容加上SI,DI,BX,BP其中之一的内容,再加上指令中所指出的8位或16位带符号相
对地址偏移量而得到的。
*基址-变址寻址
在8086/8088中,通常把BX和BP作为基址寄存器,而把SI、DI作为变址寄存器。将这两种寄存器联合起来进行的寻

址就称为基址、变址寻址,这时,操作数的地址应该是有段寄存器内容加上基址寄存器内容再加上变址寄存器内容而

得到的

*相对的基址-变址寻址由指令指明的8位或16位相对偏移地址而得到的。
操作数的地址是由基址、变址方式得到的地址,再加上
*隐含寻址
在有些指令的指令码中,不仅包含有操作码信息,而且还隐含了操作数地址的信息。例如乘法指令MUL的指令码中
只需指明一个乘数的地址,另一个乘数和积的地址则是隐含固定的。

寻址方式小结:指令由操作码和操作数构成

              如何取得操作数----称为寻址方式

8086转移地址的的寻址方式
*段内相对寻址
段内相对寻址方式中,指令应指明一个8位或16位的相对地址偏移量DISP(有正负符号)。此时,转移地址应该就
是代码段寄存器CS内容加上指令指针IP内容,再加上相对地址位移量DISP。
*段内间接寻址
在段内寻址方式中,转移地址的段内偏移地址要么存放在一个16位的寄存器中,要么存放在存储器的两个相邻单
元中。存放偏移地址的寄存器和存储器的地址将按指令码中规定的寻址方式给出。此时,寻址所得到的不是操作
数,而是转移地址。
*段间直接寻址
在段间直接寻址方式中,指令码将直接给出16位的段地址和16位的段内偏移地址
例:JMP FAR PTR ADD1
 在执行这条段间直接寻址指令时,指令操作码后的第二个字将赋予代码段寄存器CS,第一个字将赋予指令指针寄
存器IP。最后CS内容和IP内容相加则得转移地址,如图所示。
*段间间接寻址
段间间接寻址方式和段内间接寻址类似。但是,由于确定转移地址需要32位信息,因此短剑间接寻址只适用于存
储器寻址方式。用这种寻址方式可计算出存放转移地址的存放单元的首地址,与此相邻的4个单元中,前两个单元
存放16位的段内偏移地址,二后两单元存放的是16位的段地址。


0 0
原创粉丝点击