組合語言基礎1

2021-08-13 11:21:01 字數 1625 閱讀 3255

x86是基於intel8086處理器的小端(little-endian)體系結構(就是先儲存低位的位元組)。處理器通常可以執行在兩種模式下:實模式和保護模式。實模式是指處理器剛通電後只支援16位指令集的狀態。保護模式是指處理器支援虛擬記憶體,分頁以及其他的功能狀態,也是執行當代作業系統的狀態。

暫存器

暫存器是cpu內部的高速儲存單元,訪問速度比記憶體快得多,用來訪問程式執行中的各種資訊。常用的暫存器分為4類,分別是8個通用暫存器,6個段暫存器,1個標誌暫存器和1個指令指標暫存器。

(1)通用暫存器主要用於各種運算和資料的傳送,每個暫存器都可以作為乙個32位,16位,或8位來使用。分別是資料訪問器eax,ebx,ecx,edx和指標,變址暫存器ebp,esp,esi,edi.eax是32位,ax是16位,al/ah是8位。但是實際上只有資料儲存暫存器這麼使用。指標變址暫存器可以按照32位或16位進行使用。例esi暫存器可以儲存32位的指標,其低16位si,儲存16位的指標,但無法像ax拆成al(低8位)和ah(高8位)。

部分通用暫存器的特殊用途:

1,eax在乘法和除法指令中被自動呼叫;

2,cpu自動使用ecx作為迴圈計數器;

3,esp定址堆疊上的資料,esp一般不參加數值運算,通常稱為棧指標暫存器;

4,esi(source 源位址)和edi(destination 目的地)通常用於記憶體資料的高速傳送,被稱為源指標暫存器和目的指標暫存器;

5,ebp由高階語言用來引用引數和區域性變數,稱為棧楨基址指標暫存器。

(2)指令指標暫存器

指令指標暫存器eip是乙個32位的暫存器。在16位環境中為ip.eip通常儲存著下一條要執行指令的位址。下一條指令的位址為當前指令的位址加當前指令的長度。eip的值只能通過流程控制指令,比如jmp,je,ret等來改變。eip暫存器的讀取不能直接用 mov eax,eip。

(3)段暫存器

段暫存器用於存放段的基址,段是一塊預分配的記憶體區域。在16位cpu中有4個段暫存器是cs(**段),ds(資料段),ss(堆疊段),es(附加段)。32位下擴充套件了2個附加的段暫存器fs和gs。

(4)標誌暫存器

在16位cpu中,標誌暫存器稱為flags.在32位cpu中,標誌暫存器也擴充套件為32位,eflags.標誌暫存器中每乙個標誌位只佔1位,並且16位的標誌暫存器並沒有全部使用。16位的標誌暫存器分為兩部分,條件標誌和控制標誌。

條件標誌位的說明如下:

1,of(overflow flag):溢位標誌位,溢位時為1,否則為0;

2,sf(sign flag):符號標誌,運算結果為負時,為1,否則為0;

3,zf(zero flag):零標誌,運算結果為0 時,為1,否則為0。

4,(auxiliary carry flag):輔助進製標誌,記錄運算時第3位(半位元組)產生的進製,有進製時為1,否則為0。

5,(parity flag):奇偶標誌,結果運算元中1的個數為偶數時,為1,否則為0。

6,cf(carry flag):進製標誌,產生進製時為1,否則為0。

控制標誌位說明:

1,df(direction flag):方向標誌,在串處理指令中用於方向控制。

2,if(iterrupt flag):中斷標誌。

3,tf(trap flag):陷阱標誌。

組合語言 1

程式語言 組合語言 assembly language 是一種用於電子計算機 微處理器 微控制器或其他可程式設計器件的低階語言,亦稱為符號語言。在組合語言中,用助記符 mnemonics 代替機器指令的操作碼,用位址符號 symbol 或標號 label 代替指令或運算元的位址。在不同的裝置中,組合...

組合語言基礎

1.資料格式 26d 十進位制 1ah 十六進製制 42 o g 八進位制 以字母開頭的十六進製制常量前面必須加乙個0,以防止彙編器將其解釋為識別符號 2.盡量在表示式中使用圓括號顯式表明運算順序 3.彙編器大量使用 符號做為預定義符號的字首,因此應盡量避免在自己定義的標誌符前用 但 myfile為...

組合語言基礎

暫存器 暫存器是處理器內部的高速緩衝區,用於暫時存放資料。暫存器的分類 透明暫存器 這類暫存器不需要程式設計師進行操作。可程式設計的暫存器 這是我們程式設計師需要學習的這類暫存器又分為通用暫存器和專用暫存器 32位通用暫存器 eax ebx ecx edx edi esi ebp esp 16位通用...