◆指令尋址方式:
順序尋址方式:執行一段程序時,是一條指令接著一條指令的順序執行。
跳躍尋址方式:下一條指令的地址碼不是由程序計數器給出,而是由本條指令直接給出。程序跳躍后,按新的指令地址開始順序執行。因此,程序計數器的內容也必須相應改變,以便及時跟蹤新的指令地址。
◆指令操作數的尋址方式
1. 立即尋址(Immediate Addressing)
-
定義:操作數直接包含在指令中(即立即數)。
-
格式:
MOV R1, #10
(將常數 10 存入寄存器 R1) -
特點:
-
速度快(無需訪存)。
-
但操作數大小受限(如 8/16/32 位立即數)。
-
-
適用場景:初始化寄存器、短常數運算。
2. 寄存器尋址(Register Addressing)
-
定義:操作數在 CPU 寄存器中。
-
格式:
ADD R1, R2
(R1 = R1 + R2) -
特點:
-
速度最快(直接訪問寄存器)。
-
寄存器數量有限(如 x86 有 16 個通用寄存器)。
-
-
適用場景:高頻數據運算。
3. 直接尋址(Direct Addressing)
-
定義:指令直接給出操作數的內存地址。
-
格式:
MOV R1, [0x1000]
(將內存地址 0x1000 的數據加載到 R1) -
特點:
-
需要訪存,速度較慢。
-
地址范圍受限(取決于指令編碼位數)。
-
-
適用場景:訪問固定內存位置(如全局變量)。
4. 寄存器間接尋址(Register Indirect Addressing)
-
定義:寄存器中存儲的是操作數的內存地址。
-
格式:
MOV R1, [R2]
(R2 存放地址,讀取該地址的數據到 R1) -
特點:
-
比直接尋址靈活(地址可動態計算)。
-
仍需訪存,速度較慢。
-
-
適用場景:指針操作、數組遍歷。
5. 基址尋址(Base Addressing)
-
定義:操作數地址 = 基址寄存器 + 偏移量。
-
格式:
MOV R1, [R2 + 0x10]
(R2 是基址,0x10 是偏移量) -
特點:
-
適用于數組、結構體訪問。
-
需額外計算地址。
-
-
定義:操作數地址 = PC(程序計數器) + 偏移量。
-
格式:
JMP +0x20
(跳轉到當前指令地址 + 0x20) -
特點:
-
用于分支/跳轉指令。
-
支持位置無關代碼(PIC)。
-