8086 的寻址方式

来源:互联网 发布:php mvc项目源码 编辑:程序博客网 时间:2024/06/04 08:18

    我们知道 指令 的组成  是有操作码和操作数 组成的 !

    操作数的来源又有哪些呢 ?

    总体上有四种来源 , 指令本身提供  , 寄存器提供 , 存储器提供 , 或者是输入输出端口提供 。

    反过来 ,操作结果的去向 也只有三种 , 寄存器  存储器  或者 输出端口

    综合一下 总共有四种 寻址方式   立即数寻址  寄存器寻址  存储器寻址  输入/输出端口寻址 

 

 ①   所谓立即数寻址 简单的说就是  指令的操作数 有指令的本身提供   如  MOVE  AL  80H  ;将80H送人AL

    注意   :

               立即数只能作为原操作数 不能作为目的操作数 。

               立即数寻址方式一般用于对寄存器赋值

 ② 输入输出端口寻址    又分为 I/O 直接寻址 和 I/O间接寻址

        直接寻址 是 端口号  直接有指令本身提供   如   IN  AL  80H  ;

        间接寻址  是  端口号事先已经设置在了寄存器 中  端口号需要 有寄存器提供   IN  AL DX ;

③存储器寻址  

       直接寻址  存储单元的有效地址有指令给出   如 MOV AX , [1324H]

       基址+变址的寻址方式

       BX BP 称为基址寄存器  SI DI 成为变址寄存器    我所理解的基址+变址的寻址方式就是同时使用了 这两种寄存器的一个 

       相对   基址+变址的寻址方式

       BX BP 称为基址寄存器  SI DI 成为变址寄存器    我所理解的基址+变址的寻址方式就是同时使用了 这两种寄存器的一个然后加上位移量

 

       其实和寄存器 的间接寻址 和相对寻址差不多 !

 

④ 寄存器寻址

    如果操作数在cpu的内部寄存器中  , 那么寄存器的名字可在指令中指出,此为寄存器寻址

      INC   CX ; 将CX的内容加1

      寄存器间接寻址

      在这种寻址方式中有效地址  EA 是由寄存器指出的

      MOV   AX ,[BX] 

      当用 BP  SP 进行间接寻址时 ,默认段为SS    ,  其他寄存器进行间接寻址时 , 默认为DS

   寄存器相对寻址

      EA 为寄存器中的内容和指令中给出的位移量的和

      MOV   AX  [SI+100 H ]

      注意  上面两种寄存器寻址方式的区别  :  两种寻址方式中都指使用了 寄存器  如果原操作数中  有位移量  那么为相对寻址 ,如果操作数只是给出了寄存器的名字 为间接寻址

 

 

 

 

 

 

 

 

原创粉丝点击