我可以在Windows x86的保護模式下訪問16位寄存器(AX
,CX
等)嗎?將這個代碼有效嗎? mov ax,123
謝謝。在保護模式x86下可以訪問16位寄存器嗎?
0
A
回答
2
有32位和16位模式。
在32位模式下,您可以使用特殊的前綴字節訪問16位寄存器。
在16位模式下,情況正好相反,即前綴使得指令爲32位。
因此,在每種模式下,您可以使用所有寄存器,但代碼不是二進制兼容的。 儘管保護模式通常使用32位模式,但這些是兩件不同的事情。
所以在你的彙編程序中,你必須使用32或16位代碼的正確指令(即使在兩種模式下都可以訪問16位和32位寄存器)。然後彙編器將輸出適當的前綴指令,而不需要來自用戶的任何交互。
所以,如果你知道保護模式也是32位模式,在你的彙編代碼中包含32位指令,然後你也可以使用16位寄存器,它將按預期工作。
如果你忽略了32位指令,你的代碼將被彙編,但執行不會是你想要的!
2
是的,這是完全正常的(你也可以訪問AH
和AL
)。
0
是的,你可以在保護模式下使用eax
,ax
,ah
,al
。 您也可以使用所有的人都在實模式下甚至eax
但不是rax
(如果您的系統支持)
相關問題
- 1. x86寄存器名稱,尋址模式,位移和存儲器
- 2. 添加16位寄存器
- 3. X86切換到32位保護模式
- 4. x86保護模式內存管理
- 5. X86:保護模式,GDT,IDT
- 6. X86嵌入式彙編,訪問寄存器的特定部分
- 7. x86組件上的受保護模式鍵盤訪問
- 8. TASM只使用16位寄存器訪問雙字的高位和低位字
- 9. 是否可以訪問C中的32位寄存器?
- 10. 是否可以在實模式下使用32位寄存器/指令?
- 11. 如何將8位地址移入x86程序集的16位寄存器?
- 12. x86中的額外寄存器64位
- 13. 將兩個x86 32位寄存器存儲到128位xmm寄存器中
- 14. x86 - 寄存器數量與保留位數
- 15. 理解寄存器的問題x86
- 16. 推送寄存器純粹用於短期保存可以嗎?
- 17. 哪些寄存器在函數中可以安全使用(x86)
- 18. 我在哪裏可以找到x86寄存器名稱?
- 19. 如何在長模式下設置CR3寄存器(64位)
- 20. 如何通過16位x86實模式的BIOS訪問USB端口?
- 21. 的x86寄存器值
- 22. 無法理解x86保護模式
- 23. (Assembly newbie)無法從GDB訪問x86-64中的32位寄存器
- 24. 如何解釋x86-64上的段寄存器訪問?
- 25. 轉換8位SSE寄存器,以16個短褲
- 26. 把一個16位寄存器爲8位地址在裝配
- 27. EBX寄存器用於內存訪問的模式是什麼?
- 28. x86 32位保護模式:從調用堆棧讀取?
- 29. 如何在32位保護模式下關閉機器
- 30. rbp/ebp(x86-64)寄存器仍然以傳統方式使用嗎?
尼斯回答,謝謝! –
您應該知道,段寄存器(CS,DS,ES,SS,FS和GS)中的值在實際和保護模式下具有完全不同的含義。 –