1.常量表達
組合語言常用字尾字母區別各個進製的資料
二進位制數用字尾字母b(binary)
十六進製制數用字尾字母h(hexadecimal),以
十進位制數是預設,不需特別說明,或用d(decimal)
n位表達的數值範圍:0~2(n-1)
2.有符號整數在計算機中預設採用補碼
最高位表示符號:正數用0,負數用1
正數補碼:直接表示數值大小(同無符號數)
負數補碼:將對應正數補碼取反加1
負數真值「取反加1」得機器數補碼
負數補碼「取反加1」得到負數真值
適用於使用二進位制表達時
從最低位開始,對遇到的0和第乙個1保持不變
從第乙個1以後開始直到最高位均按位求反
補碼最高位為1,表示負號(負數)
適用於使用十六進製制表達時
用帶借位的0做減法
3.常量
常量是程式中使用的乙個確定數值
在彙編階段就可以確定,直接編碼於指令**中
不是儲存在儲存器中可變的常量
組合語言支援多種常量的表達形式
常數:直接給出數值本身
字元和字串:使用ascii碼值
符號常量:用識別符號替代數值
數值表示式:經過運算得到數值
數值0dh(回車符)
數值0ah(換行符)
4.變數定義
隨程式執行可以發生變化
標量需要事先定義才能使用
變數表達主存資料,即儲存器運算元
變數名+變數定義偽指令+初值表
變數名:使用者識別符號,表示首元素邏輯位址
偽指令助記符:byte位元組(1位元組)、word字(2位元組)、dword雙字(4位元組)等表示變數型別
初值表:表示變數初值,可以有多個引數
byte word dword都是定義變數的偽指令。
byte是8位,1位元組
word是16位,2位元組
dword是32位,4位元組
5.位元組編址的主儲存器
最小的儲存單位:二進位制位(bit)
最常用的儲存單位:位元組(byte)
8個二進位制位是乙個位元組
乙個儲存單元儲存乙個位元組量資料
乙個儲存單元對應乙個儲存器位址
變數儲存於位元組編址的主儲存器中
每個儲存單元儲存乙個8位、位元組量資料
多個位元組資料順序逐個存放在主存相鄰單元
儲存順序:大端方式、小端方式(8086)
6.定位偽指令
org偽指令控制存放的偏移位址
org引數 ;從「引數」指定的位置存放
align偽指令控制資料對齊位址邊界
align n ;按對齊n位元組位址邊界的位置存放
位址對齊存放能獲得更高的效能
7.變數的位址屬性8.變數的型別屬性
組合語言的資料表示
組合語言程式設計師處理的是物理級資料,因此他們必須善於檢查記憶體和暫存器。通常,二進位制數被用於描述計算機記憶體的內容 有時也使用十進位制和十六進製制數。所以必須熟練掌握數字格式,以便快速地進行數字的格式轉換。每一種數制格式或系統,都有乙個基數 base 也就是可以分配給單一數字的最大符號數。下表給...
組合語言 AT T組合語言
這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...
彙編學習筆記02 資料表示
一.基礎知識 計算機系統內部採用二進位制表示數值資料,非數值資料和指令。二.數值資料的表示 把乙個數連同其符號在內在機器中的表示加以數值化,這樣的數稱為機器數。一般用最高有效位來表示數的符號 正數用0表示,負數用1表示。1.有符號數的數值範圍 8位有符號數表示的數值範圍 128 127 16位有符號...