MOV - 移入/移出控制暫存器

操作碼

指令

說明

0F 22 /r

MOV CR0,r32

r32 移到 CR0

0F 22 /r

MOV CR2,r32

r32 移到 CR2

0F 22 /r

MOV CR3,r32

r32 移到 CR3

0F 22 /r

MOV CR4,r32

r32 移到 CR4

0F 20 /r

MOV r32,CR0

將 CR0 移到 r32

0F 20 /r

MOV r32,CR2

將 CR2 移到 r32

0F 20 /r

MOV r32,CR3

將 CR3 移到 r32

0F 20 /r

MOV r32,CR4

將 CR4 移到 r32

說明

將控制暫存器(CR0、CR2、CR3 或 CR4)的內容移到通用暫存器,或者相反。不論運算元大小屬性如何,這些指令的運算元大小總是 32 位。如需有關控制暫存器的標誌與欄位的詳細說明,請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 3 卷第 2 章中的“控制暫存器”)。

載入控制暫存器時,程式不應試圖更改任何保留位;也就是說,應該總是將保留位設定為以前讀取的值。

在操作碼級別,ModR/M 位元組中的 reg 欄位指定載入或讀取的控制暫存器。mod 欄位中的兩個位總是 11B。r/m 欄位指定載入或讀取的通用暫存器。

這些指令有以下副作用:

對於奔騰(R) Pro 處理器,以下副作用取決於具體實現的版本。軟體不應依賴將來或以前 IA-32 處理器中的此項功能:

操作

DEST SRC;

影響的標誌

OF、SF、ZF、AF、PF 及 CF 標誌未定義。

保護模式異常

#GP(0) - 如果目前特權級別不是 0。如果試圖將無效的位組合寫入 CR0(例如,在 PE 標誌設定為 0 時,將 PG 標誌設定為 1;或是在 NE 標誌設定為 1 時,將 CD 設定為 0)。如果試圖將 1 寫入 CR4 中的任何保留位。如果在控制暫存器 CR4 中的 PAE 標誌與控制暫存器 CR0 中的 PG 標誌都設定為 1 時,試圖將保留位寫入頁目錄指針表格(在擴充套件實體地址模式中使用)。

實地址模式異常

#GP - 如果試圖將 1 寫入 CR4 中的任何保留位。

虛 8086 模式異常

#GP(0) - 這些指令無法在虛 8086 模式中執行。