2016-12-03 86 views
0

Im在x8086中發​​現有關寄存器的某些信息時遇到問題。
任何人都可以告訴我我可以使用哪些opartions並且不能使用每個寄存器?在彙編語言中註冊使用

例如我知道只有bx,di和si寄存器可以用作地址指針
(例如[ax]不會編譯)。

編輯:
謝謝所有的信息,到目前爲止,但我的問題可能wasnt understandble不夠,信息Im尋求心不是隻有通過語言解決器官功能障礙綜合徵,但算術opartions等給出算子的研究,對他們每個人。

在哪個寄存器中,CAN和CANT可以使用每個給定的彙編操作符?
(MOV,ADD,SUB,[],MUL,等...)

+0

[x86 tag wiki](http://stackoverflow.com/tags/x86/info)包含大量有用的鏈接。 –

+0

@CodyGray 已檢查,沒有發現任何有用的東西。 它說明每個寄存器用於什麼,但沒有關於每個寄存器限制的信息。 –

+2

[本文](http://www.swansontec.com/sregisters.html)從字面上解釋了您可能想要了解的所有內容,但您必須仔細閱讀。除了說明每個寄存器用於什麼外,它還指出:*「在16位模式下,基址寄存器EBX用作通用指針,除了專用的ESI,EDI和EBP寄存器外,它還是唯一可以出現在方括號存儲器訪問中的通用寄存器(例如,MOV [BX],AX)。然而,在32位世界中,任何寄存器都可以用作存儲器偏移量,所以基址寄存器不再是特別的。「* –

回答

1

x86指令集是歷史修補片的,詳細記錄,但即使缺乏然後粘結結構的一個令人難以置信的大雜燴。有關哪些寄存器用作地址指針的特定信息可以在reference manual section on addressing forms的第2.1.5節中找到,但我不太確定是否涵蓋它;它當然不會描述使用隱式指針的堆棧push/pop操作系列。下面幾節(2.2.1.6)我們找到了另一種尋址模式,即RIP相對。

+1

好吧,在8086上沒有RIP相對尋址:-)這個模型是64位擴展的新增功能。 –

+0

@CodyGray - 爲了防止OP將RIP與IP相對尋址模式相混淆,分支機構附近的8086和近旁呼叫是ip相對的。 – rcgldr