組合語言OFFSET運算子 返回資料標號的偏移量

2021-09-24 16:40:01 字數 1196 閱讀 9220

offset 運算子返回資料標號的偏移量。這個偏移量按位元組計算,表示的是該資料標號距離資料段起始位址的距離。如下圖所示為資料段內名為 mybyte 的變數。

在下面的例子中,將用到如下三種型別的變數:

.data  bval byte ?  wval word ?  dval dword ?  dval2 dword ?
假設 bval 在偏移量為 0040 4000(十六進製制)的位置,則 offset 運算子返回值如下:

mov esi,offset bval             ; esi = 00404000h  mov esi,offset wval             ; esi = 00404001h  mov esi,offset dval             ; esi = 00404003h  mov esi,offset dval2            ; esi = 00404007h
offset 也可以應用於直接 – 偏移量運算元。設 myarray 包含 5 個 16 位的字。下面的 mov 指令首先得到 myarray 的偏移量,然後加 4,再將形成的結果位址直接傳送給 esi。因此,現在可以說 esi 指向陣列中的第 3 個整數。

.data  myarray word 1,2,3,4,5  .code  mov esi,offset myarray + 4
.data  bigarray dword 500 dup (?)  parray dword bigarray
mov esi,parray
4.1運算元型別

4.2 mov指令

4.3movzx和movsx指令

4.4 lahf和sahf指令

4.5 xchg指令

4.6直接偏移量運算元

4.7 組合語言資料傳送示例

4.8 加法和減法詳解

4.9offset運算子

4.10 align偽指令

4.11 ptr運算子

4.12 type運算子

4.13lengthof運算子

4.14 label偽指令

4.15 間接定址

4.16 jmp和loop指令

4.1764位mov指令

4.18 64位加法和減法

組合語言的運算子及表示式

2.表示式 符號名稱 運算結果 加法 和 減法差 乘法乘積 除法商mod取餘 餘數shl 按位左移 左移後二進位制數 shr按位右移 右移後二進位制數 符號名稱 運算結果 not非運算 邏輯非結果 and與運算 邏輯與結果 or或運算 邏輯或結果 xor異或運算 邏輯異或結果 符號名稱 運算結果 e...

組合語言PTR運算子 重寫運算元的大小型別

ptr 運算子可以用來重寫乙個已經被宣告過的運算元的大小型別。只要試圖用不同於彙編器設定的大小屬性來訪問運算元,那麼這個運算子就是必需的。例如,假設想要將乙個雙字變數 mydouble 的低 16 位傳送給 axo 由於運算元大小不匹配,因此,彙編器不會允許這種操作 data mydouble dw...

組合語言學習09 之資料操作運算子指令

本文主要參考此 內容 inc 增加 和dec 減少 指令分別表示暫存器或記憶體運算元加 1 和減 1。語法如下所示 inc reg mem dec reg mem 例子 data myword word 1000h code inc myword myword 1001h mov bx,myword...