寻找她(指令寻址)——(软考六)

     指令系统是中央处理器所有指令的汇集,也是高级软件编制的基础。CPU都会定义出自己特定的指令,但都有统一的标准格式,指令的基本格式是操作码和地址码两部分组成。如图所示:

        

     操作码指出该指令要完成什么操作,地址码则提供原始数据。指令系统中定义操作码的方式可以分为规整型(定长编码)和非规整型(变长编码)两种。

         定长编码:采用相等码长,每个操作码的长度相等

         变长编码:根据使用频度选择不同长度的编码

     我认为这种方式跟我们之前学习的哈弗曼编码具有相同的道理,使用频率大的采用短编码,使用频率小的采用长编码,这样可以节省存储空间,提高效率。

  (1)隐含寻址方式

       在指令中不明显给我而是隐含着操作数的地址 。

  (2)立即寻址方式

       指令的地址码指出的不是操作数的地址,而是操作数本身。这种寻址方式的特点是指令执行时间短,不需要访问内存取数。由于地址码存放的操作数,故只能用于源操作数,不能用于目的操作数字段,经常用于给寄存器赋初值。例如:

          MOV  AL,'6';将5的ASCII码送入寄存器AL,'6'是立即数。

  (3)直接寻址方式

        地址码就是主存内数据的绝对地址,不必做任何的换算。不足之处在于寻址范围有限,地址码的位数限制了寻址空间,而计算机的发展趋势是计算机拥有越来越大的内存。如果使用变长指令结构,则该指令就会变得臃肿。

  (4)间接寻址方式

         指令地址字段中D不是操作码的真正地址,而是操作数地址的指示器。也就是说地址码指向主存中的数据,这个数据仍然是一个地址,这种方式提高了寻址的灵活性,扩大了寻址的范围,但由于要多次读主存,速度大为降低。这就跟我寻找宝藏一样,找到一个宝藏,宝藏中放着的宝藏的地址。

  (5)寄存器寻址方式

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

        地址码的地址是寄存器的地址。和内存寻址比较而言,访问寄存器的速度非常快,所以使用寄存器寻址有非常快的速度,缺点:寄存器的数量的有限。

  (6)寄存器间接寻址方式

        地址码保存的是寄存器地址,相对应的寄存器中保存的是数据的地址,该地址指明的操作数在内存中。这样既快又有灵活性,是一种广泛使用的寻址方式。


   【总结】

     通过上面的分析可以看出,直接寻址方式和寄存器寻址方式在地址码中存放的都是操作数,而只要带着间接的方式,在地址码中存放的是一个指向操作数的地址,这样会使得扩展更方便,同时也能体现出灵活性。比较之后发现寄存器比内存的速度更快。               

          

原文地址:https://www.cnblogs.com/zsswpb/p/5771630.html