組合語言資料定址方式

2021-09-03 02:56:02 字數 2355 閱讀 9925

資料定址方式

1、 立即數定址

立即數定址:指令需要的運算元緊跟在操作碼之後稱之為指令機器碼的一部分,並隨著處理器的取址操作需要從主存進入指令暫存器。這些運算元用常量形式直接表達,從指令**中立即得到立即數,立即數定址方式只用於指令的原運算元,在傳送指令過程中常用來給暫存器和儲存單元賦值。

2、 暫存器定址

指令的運算元存放在處理器的暫存器中,就是暫存器儲存方式絕大多數的指令採用通用暫存器定址(ia-32處理器是:eax,ebx,ecx,edx,esi,edi,ebp,esp其支援的16位形式:al,ah,bl,bh,cl,ch,dl,dh),部分支援專用暫存器,如段暫存器和標誌暫存器。

3、 儲存器定址

1、 段暫存器的預設和超越

段暫存器(段選擇器)有預設的使用規則。一般是ds段暫存器指向的是資料段,如果採用的是ebp(bp)或者是esp(sp)做基位址指標,則預設ss段暫存器指向堆疊段。

2、 偏移位址的形成

由於段基位址由預設的或者是指定的段暫存器,所以儲存器運算元定址使用的偏移位址常稱為有效位址。

3、 直接位址

有效部分只有位移量部分,且直接包含在指令**中,就是儲存器的直接定址方式,直接尋常用於訪問變數。

例如:mov ecx,count;mov ecx,[count];//count分配的有效位址是常量。源運算元採用直接定址。

4、 暫存器間接定址

有效位址存放在暫存器當中,就是採用暫存器間接定址儲存器運算元(暫存器內容=偏移位址=有效位址)。暫存器間接定址的資料由另外乙個運算元的暫存器或者是變數型別決定。

mov edx,[ebx];雙字傳送ebx簡介定址主存資料段

mov cx,[esi];字傳送,esi間接定址貯存資料段

mov [edi],al;位元組傳送,edi間接定址主存資料段

mov [ebp],edx;雙字傳送,ebp間接定址貯存資料段

暫存器間接定址的運算元沒有型別,其型別是由另外乙個運算元的暫存器或變數決定的,若另外乙個運算元也是無型別(立即數),需要顯示說明。

5、 暫存器相對定址

暫存器相對定址的有效位址是暫存器內容與位移量之和

mov esi,[ebx+4;源運算元也可以表達為[4][ebx]或者4[ebx]

6、 變址定址

使用變址暫存器定址運算元成為變址定址,在變址暫存器不帶比例的(或者比例為0)情況下需要配合使用乙個基址暫存器(成為基址變址定址方式),還可以再包含乙個位移量(成為相對基址變址定址),儲存器運算元的有效位址由乙個基址暫存器的內容加上變址暫存器的內容或再加上位移量構成。

mov eax,[ebx+esi]或mov eax,[ebx][esi]

mov eax,[ebx+edx+80h]或

mov eax,80h[ebx+edx]或

mov80h[ebx][edx]

7、 帶比例的變址定址

對應使用變址暫存器的儲存器定址

mov eax,[ebx4];帶比例的變址定址

mov eax,[esi2+80h];帶比例的相對基址變址定址

mov eax,[ebx+esi4];帶比例基址變址定址

mov eax,[ebx+esi8-80h];帶比例的相對基址變址定址

3.8資料定址方式的組合

1、 立即數定址

立即數定址只可以用於源運算元

2、 暫存器定址

暫存器定址主要用於通用儲存器,可以單獨或同時用於源運算元和目的運算元ia-32處理器的通用暫存器reg包括八個32位通用暫存器r32:eax,ebx,ecx,edx,esi,edi,ebp,esp;8個16位通用暫存器:ax,bx,cx,dx,si,di,bp,sp;八個8位通用暫存器r8:ah,al,bh,bl,ch,cl,dh,dl,部分指令可使用專用暫存器如段暫存器seg:cs,ds,ss,es,fs,gs

3、 儲存器定址

儲存器定址的資料在記憶體,利用邏輯位址表示。段基位址由預設的或者是指定的段暫存器指出,指令**只含偏移位址(稱為有效位址),有多種儲存器定址方式。儲存器運算元可以是32位、16位或者是8位資料,依次用符號m32,m16,m8表示,統一用mem表示。

典型的指令運算元有兩個,乙個是書寫在左邊的(稱之為目的運算元dest),另外乙個用逗號分隔書寫在右邊(稱之為源運算元src)。資料定址方式在指令中並不是任意組合的,而是有規律的且符合邏輯的。源運算元可以由立即數,儲存器,暫存器定址,而目的運算元只能是暫存器或者是儲存器定址,並且兩個運算元不能同時為儲存器定址方式。

組合語言定址方式

組合語言的定址方式 彙編有7種定址方式 mov 是組合語言用得最多的語句 他的使用方法 是 mov 目的位址,源位址 下面便通過mov來介紹組合語言的幾種定址方式 1.立即定址 mov ax,1234h 2.暫存器定址 mov si,ax 源運算元和目的運算元 同時為暫存器 3.直接定址 mov a...

組合語言之定址方式

1 固定定址 inherent addressing 特定的單運算元指令,運算元隱含在操作碼中,在固定定址的指令中,運算元被隱含在指令中,不需要執行匯流排週期,執行速度快 例子 1.1 cbw命令,將al中的符號位擴充套件到ah中,形成16位的運算元。比如al中的符號位是1,則執行cbw命令後,ah...

組合語言定址方式(Linux

位址或偏移 基位址暫存器,索引暫存器,比例因子 計算結果 位址或偏移 基位址或偏移量暫存器 比例因子 索引暫存器 其中所有欄位都是可選的。具體如何省略的,會在後面說明。注意,藍色代表使用,綠色代表保被省略的部分。movl 0x1234,eax 通式分解 位址或偏移 基位址暫存器,索引暫存器,比例因子...