定址方式的型別有哪些?
指令的運算元可以位於主儲存器中,也可以位於CPU暫存器中。如果運算元放在主儲存器中,則指令在運算元欄位中提供位置地址。有多種方法用於指定運算元地址。在指令中指定運算元地址的不同方法/模式稱為定址方式。
定址方式的型別
定址方式有多種型別,如下所示:
隱含定址方式 - 在這種模式下,運算元隱含在指令的定義中。例如,指令“對累加器求補”是隱含定址方式指令,因為累加器暫存器中的運算元隱含在指令的定義中。所有使用累加器的暫存器引用指令都是隱含定址方式指令。
帶模式欄位的指令格式
操作碼 | 模式 | 地址 |
立即定址方式 - 在這種模式下,運算元在指令本身中指定。換句話說,立即定址方式指令具有運算元欄位而不是地址欄位。運算元欄位包含與指令中確定的操作一起使用的實際運算元。立即定址方式指令對於將暫存器初始化為常數值很有用。
暫存器定址方式 - 在這種模式下,運算元位於 CPU 內部的暫存器中。特定暫存器從指令中的暫存器欄位中選擇。k 位欄位可以確定 2k 個暫存器中的任何一個。
暫存器間接定址方式 - 在這種模式下,指令定義 CPU 中的一個暫存器,其內容提供記憶體中運算元的地址。換句話說,選定的暫存器包含運算元的地址而不是運算元本身。
然後,對暫存器的引用等效於指定記憶體地址。暫存器間接定址方式指令的優點是,指令的地址欄位使用較少的位來選擇暫存器,而不是直接指定記憶體地址所需的位數。
自動增量或自動減量定址方式 - 這類似於暫存器間接定址方式,只是在使用暫存器值訪問記憶體後(或之前)會增加或減少暫存器。當儲存在暫存器中的地址定義記憶體中的資料表時,需要在每次訪問表後增加或減少暫存器。這可以透過使用增量或減量指令來實現。
直接定址方式 - 在這種模式下,有效地址等於指令的地址部分。運算元駐留在記憶體中,其地址由指令的地址欄位直接給出。在分支型別指令中,地址欄位指定實際的分支地址。
間接定址方式 - 在這種模式下,指令的地址欄位給出記憶體中儲存有效地址的地址。控制單元從記憶體中提取指令,並使用其地址部分再次訪問記憶體以讀取有效地址。
索引定址方式 - 在這種模式下,將索引暫存器的內容新增到指令的地址部分以獲得有效地址。索引暫存器是一個包含索引值的特殊 CPU 暫存器。指令的地址欄位定義記憶體中資料陣列的起始地址。