組合語言 變數的定義

2021-09-29 05:07:43 字數 823 閱讀 1540

1. 什麼是變數(variable)

變數可以隨著程式的執行發生變化的量,儲存在主存空間中,變數需要事先定義才能使用,變數本質上就是主存單元裡的資料,主存是可讀可寫的,所以變數可以發生改變。變數有別於常量,常量是寫在指令裡的,不佔主存空間。

2. 變數定義的格式

變數名 偽指令助記符 變數初值表
變數名:變數名是使用者識別符號,使用者定義的,本質上是首元素的邏輯位址,有了變數名後,在其後的程式中就可以更加方便的使用了。

偽指令助記符:db dw dd分配乙個或多個資料空間,其中每個資料的大小分別為1、2、4位元組。

變數初值表:變數定義本質上是申請空間,初值表可以給變數賦予初值,初值表可以有一到多個初值,用逗號分開,其中初值是各種常量的形式,使用?代表初始不確定,即未賦初值。使用dup可以表示多個同樣數值,例如 10 dup(5),將5重複10次。

3. 8位變數定義

舉例:

bvar db 0,128,255,-128,0,+127,38h,?
一共有8個引數,則在主存中分配8個byte的空間,bvar代表元素0的位址,也就是第乙個元素的位址,?代表開闢空間,但無初值,一般用0填充。

bvar1 db 5 dup('10')

;相當於

bvar2 db 10,10,10,10,10

也就是把10複製了5遍

str db 'hello',13,10,0
定義字串,其中13是回車ascii碼,10是換行ascii碼,0代表字串結束。

16位和32位的定義方式類似於8位,就不詳細說啦。

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

組合語言的變數與編碼

組合語言採用了助記符號編寫程式,通過編譯器轉換成能夠被計算機識別和處理的二進位制 程式。基 各計數制中每個數字上可用字元的個數。權 數字 1 在數字不同的數字所代表的數值。因此可得 500.03125 1f4.08h 十六進製制數與二進位制數之間的轉換 整數部分由小數點向左每4位一組,若整數最高位的...

組合語言 記憶體變數的位址

計算機中的記憶體是以位元組為單位的連續的儲存空間,每個位元組都有乙個唯一的編號,這個編號就稱為記憶體位址 因為記憶體的儲存空間是連續的,所以,記憶體位元組的位址編號也是連續的,並用二進位制或十六進製制數來表示 在記憶體中,每個變數都有自己的儲存單元,不同型別的變數占用的儲存單元空間大小不一樣 對於多...