在計算機之中,每進行一項操作,都會執行很多條指令。在數目龐大的指令之下,計算機是如何準確的依次完成相應的指令呢?那是因為在計算機中,存在一種特殊的操作叫尋址方式。
尋址方式是指確定每條指令的數據及下一條將要執行的指令地址的方法,它與硬件結合緊密,而且直接影響指令格式和指令功能。尋址方式可以分為指令尋址和數據尋址。指令尋址方式較為簡單,故本文主要比較數據尋址方式。
對于數據尋址方式的理解
1、立即尋址
理解:操作數直接存放在指令中,緊跟在操作碼之后的尋址方式就是操作數。
優點:指令執行時間很短,不需要訪問內存取數,從而節省了訪問內存的時間。
缺點:形式地址的位數限制的操作數的范圍。
2、直接尋址
理解:在指令格式的地址的字段中直接指出操作數在內存的地址。
優點:尋找操作數較為簡單,不需專門計算操作數的地址,僅僅在指令執行階段對主存訪問一次。
缺點:形式地址的位數限制的操作數的尋址范圍,且必須修改形式地址的值,才能修改操作數。
3、隱含尋址
理解:在指令中隱含著操作數的地址。
優點:有利于縮短指令字長。
缺點:不利于編程人員調試。
4、間接尋址
理解:指令地址字段中的形式地址不是操作數的真正地址,而是操作數地址的指示器。
優點:擴大了操作數的尋址范圍,有利于編程。
缺點:指令執行階段需要訪存2次或多次,指令執行時間長。
5、寄存器尋址
理解:指令中給出的操作數地址不是內存的地址單元號,而是通用寄存器的編號。
優點:操作數不在主存中,減少了執行時間。
缺點:寄存器數目較少,操作數個數受限。
6、寄存器間接尋址
理解:指令格式中的寄存器內容不是操作數,而是操作數的地址。
優點:比間接尋址少訪存一次。
缺點:寄存器數目較少,有效地址個數受限。
7、基站尋址
理解:將CPU中的基址寄存器的內容,加上變址寄存器的內容而形成操作數的有效地址。
優點:可以擴大尋址能力。
缺點:尋址過程較為復雜,內部部件增加。
8、變址尋址
理解:把CPU中某個變址寄存器的內容與偏移量D相加來形成操作數有效地址。
優點:實現程序塊的規律變化。
缺點:尋址過程較為復雜,變址寄存器的位數影響操作數的尋址范圍。
9、相對尋址
理解:以當前程序計數器pc的內容為基址,加上指令給出的一字節補碼數形成新的pc值的尋址方式稱為相對尋址。
優點:轉移地址不固定,可隨PC值得變化而變化,有利于編寫浮動程序。
缺點:操作數的地址需計算,執行步驟復雜。
10、堆棧尋址
理解:操作數只能從棧頂地址指示的儲存單元存取。
優點:存取有序。
缺點:若想取非棧頂指示的操作數的執行步驟較為復雜。
數據尋址方式的心得
1、在高級語言方面,機器的尋址方式影響不大,但是在匯編語言上,程序員必須了解機器的尋址方式,才能正確編寫程序;
2、尋址方式會影響機器的指令格式;
3、不同的尋址方式適用方向不同;
4、對于不同的尋址方式,目的就是節省空間,提高CPU運行效率,減少執行時間,方便編程。