組合語言定址方式(Linux

2021-07-10 08:40:53 字數 960 閱讀 3668

位址或偏移(%基位址暫存器,%索引暫存器,比例因子)

計算結果=位址或偏移 + %基位址或偏移量暫存器 + 比例因子 * %索引暫存器

其中所有欄位都是可選的。具體如何省略的,會在後面說明。注意,藍色代表使用,綠色代表保被省略的部分。

movl 0x1234, %eax

通式分解:位址或偏移

(%基位址暫存器,%索引暫存器,比例因子)。

直接將0x12345(16進製制位址)中儲存的值存到暫存器eax中(單位位元組,因為沒有設定比例因子)

movl $0x1234, %eax

通式分解:位址或偏移

(%基位址暫存器,%索引暫存器,比例因子)。

在這裡特意用了乙個跟直接定址很類似的格式表述。目的是為了區分立即數定址和直接定址。其實兩條命令很像,在立即數定址中,會在數字前多加乙個$美元符號。這條命令執行的是將0x1234這個數字存到暫存器eax中去,單位是兩個位元組

movl (%eax), %ebx

通式分解:位址或偏移

(%基位址暫存器

,%索引暫存器,比例因子

)根據暫存器eax中儲存的值作為間接定址中的位址尋找值。舉個例子,假如說eax中存的值是0x1234,那麼這條指令的工作是將0x1234記憶體位址中儲存的值存到eax中。

movl 4(%eax), %ebx

,%索引暫存器,比例因子

)可以參考間接定址,其實就是在間接定址的基礎上,再多了乙個4個位元組大小的偏移。依然假設eax中的值為0x1234,命令執行的其實是將0x1234+4=0x1238記憶體位址中儲存的值存到暫存器ebx裡

%基位址暫存器

,%索引暫存器,比例因子

)根據通式可知,取值位址=string指向的位址+%ecx * 1。string一般標註著資料開始的字段。

%基位址暫存器

,%索引暫存器,比例因子)

這個也是最常見的,基本不用解釋。將eax暫存器裡的資料存到ebx中

組合語言定址方式

組合語言的定址方式 彙編有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...

組合語言之定址方式

如 mov ax,2a78 表示將乙個記憶體單元中的資料送入ax,這個記憶體單元的長度為2位元組 字單元 存放乙個字,偏移位址為2a78h,段位址 在ds中。如 mov al,10f3 表示將乙個記憶體單元中的資料送入al,這個記憶體單元的長度為1位元組 位元組單元 存放乙個位元組,偏移位址為10f...