寻址方式——汇编学习笔记(三)

操作数寻址方式有多种,其目的是缩短指令长度,扩大寻址空间,提高编程的灵活性。最基本的寻址方式有如下几种
  

(1)隐含寻址
    
      在指令中并不直接给出操作数的地址,而是隐含着操作数的地址。
        例:ADD B ;另一个操作数的地址即隐含为累加器AC

 (2)立即寻址
    
     指令的地址字段指出的不是操作数的地址,而是操作数本身,这种寻址方式称为立即
   寻址。
 
     优点:不需操作数地址寻址,速度快。
      例: ADD B,#3 ;#3为立即数

 (3)直接寻址
  
     直接寻址是一种基本的寻址方式,其特点是:在指令格式的地址字段中直接指出操作
   数在内存的地址D,即有效地址等于形式地址。 E=D 

     例:INC 3A00H
     这是一条加1指令,指令有效地址E=3A00H

            寻址方式——汇编学习笔记(三)_第1张图片



 (4)间接寻址

     间接寻址是相对于直接寻址而言的,在间接寻址的情况下,指令地址字段中的形式地
   址D不是操作数的有效地址,而是操作数地址的指示器,即D单元的内容才是操作数的有效
   地址。 E=(D)

     优点:提供编程的灵活性;
     缺点:增加了访存时间,速度慢。 
      例: INC (3A00H)
        这是一条加1指令,指令有效地址E=(3A00H)=4000H

                  寻址方式——汇编学习笔记(三)_第2张图片


 (5)寄存器寻址方式和寄存器间接寻址方式

    · 寄存器寻址方式---当操作数不放在内存中,而是存放在CPU的通用寄存器中时,可采
               用寄存器寻址方式。 

               优点:用寄存器暂存操作数,无需访存,速度快。
                  例:INC R1
                    这是一条加1指令,指令有效地址E = R1

           


    · 寄存器间接寻址方式---指令中的寄存器内容不是操作数,而是操作数的地址,该地
                 址指明的操作数应在内存中。E=(Ri) 

                  例:INC (R1)
                    这是一条加1指令,指令有效地址E=(R1)=3A00H

                 寻址方式——汇编学习笔记(三)_第3张图片


 (6)相对寻址

      把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。  
           E=(PC)± D
      优点:相对于当前指令地址进行浮动。
       例: INC [PC+200H]
           这是一条加1指令,指令有效地址E=(PC)+200H=2200H

             寻址方式——汇编学习笔记(三)_第4张图片

 (7)基址寻址方式

      将CPU中基址寄存器Bx的内容加上指令格式中的形式地址而形成操作数的有效地址。
           E=(Bx)± D
       如:INC [Bx+300H]
          这是一条加1指令,指令有效地址E=(Bx)+300H=0380H

            

 (8) 变址寻址方式

      把CPU中某个变值寄存器Rx的内容与偏移量D相加来形成操作数的有效地址。 
           E=(Rx)± D
      如:INC [Rx+300H]
         这是一条加1指令,指令有效地址E=(Rx)+300H=0380H

            寻址方式——汇编学习笔记(三)_第5张图片 

      ☆ 变址寻址和基址寻址寻址方法十分类似,但用途不同:
         · 变址寻址:主要便于数组访问 
         · 基址寻址:可扩大寻址范围,可实现程序浮动。

 (9) 块寻址方式

    实现数据块的传送。

    · 指示数据块长度的方法:

       ① 指令中划出字段给出块长度;
       ② 指令中划出字段指出块的首地址、末地址;
        ③ 由块结束字符指出数据块长度。

 (10) 段寻址方式 
  
    Intel 8086 CPU中采用了段寻址方式(基址寻址的特例)。
    由16位段寄存器和16位偏移量产生20位物理地址,示意图见教科书P138图4.4。

(11)复合寻址方式

    --多种寻址方式的组合

    例1:相对、间址寻址方式
        INC [(PC+100H)]
          这是一条加1指令,指令有效地址:E=((PC)+100H)=2000H

              寻址方式——汇编学习笔记(三)_第6张图片

    例2:间址、变址寻址方式
        INC [(Rx)+(100H)]
          这是一条加1指令,指令有效地址:E=(Rx)+(100H)=1060H

             寻址方式——汇编学习笔记(三)_第7张图片



你可能感兴趣的:(内存访问)