操作碼 |
指令 |
說明 |
0F 21/r |
MOV r32,DR0-DR7 |
將除錯暫存器移到 r32 |
0F 23 /r |
MOV DR0-DR7,r32 |
將 r32 移到除錯暫存器 |
將除錯暫存器(DR0、DR1、DR2、DR3、DR4、DR5、DR6 或 DR7)的內容移到通用暫存器,或者相反。不論運算元大小屬性如何,這些指令的運算元大小總是 32 位。(如需有關除錯暫存器的標誌與欄位的詳細說明,請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 3 卷第 14 章“除錯與效能監視”)。
這些指令必須在特權級別為 0 時執行,或是在實地址模式中執行。
清除暫存器 CR4 中的除錯擴充套件 (DE) 標誌時,這些指令按照同 Intel386™ 與 Intel486™ 處理器相容的方式操作除錯暫存器。在這個模式中,引用 DR4 與 DR5 將分別引用 DR6 與 DR7。CR4 中的 DE 設定為 1 時,試圖引用 DR4 與 DR5 會導致操作碼未定義 (#UD) 異常。(CR4 暫存器是從奔騰(R) 處理器開始新增到“英特爾(R) 體系結構”中的)。
在操作碼級別,ModR/M 位元組中的 reg 欄位指定載入或讀取的除錯暫存器。mod 欄位中的兩個位總是 11。r/m 欄位指定載入或讀取的通用暫存器。
IF ((DE 1) and (SRC or DEST DR4 or DR5))
THEN
#UD;
ELSE
DEST SRC;
OF、SF、ZF、AF、PF 及 CF 標誌未定義。
#GP(0) - 如果目前特權級別不是 0。
#UD - 如果 CR4 中的 DE(除錯擴充套件)位設定為 1,且執行涉及 DR4 或 DR5 的 MOV 指令。
#DB - 如果在除錯暫存器 DR7 中的 GD 標誌設定為 1 時訪問任何除錯暫存器。
#UD - 如果 CR4 中的 DE(除錯擴充套件)位設定為 1,且執行涉及 DR4 或 DR5 的 MOV 指令。
#DB - 如果在除錯暫存器 DR7 中的 GD 標誌設定為 1 時訪問任何除錯暫存器。
#GP(0) - 除錯暫存器在虛 8086 模式中無法載入或讀取。