以上的暫存器都是16位(2個位元組)的暫存器
在[a-d]x暫存器中, 每乙個暫存器都是由兩個8位暫存器組成的
ax: ah + al
bx: bh + bl
cx: ch + cl
dx: dh + dl
其中h表示high,l表示low, 左高右低是記憶體中位址的分布形式, 而x是extend中的x, 表示擴充套件, 因為16位暫存器確實是8位暫存器的擴充套件,
但是剩下的四個寄存去就沒有high和low之分了, 如果我們想要獲取sp該16位暫存器中低8位的值, 需要將sp中的值mov到ax之類的暫存器中, 在通過訪問al暫存器獲取,
也許你會注意到, 為什麼不直接放到al中呢? 這是因為mov指令的作用, 因為mov指令操作的目標源和資料來源需要時大小相同的容器(在c語言中就是變數, 其實cpu中的暫存器可以為c語言中的變數, 也就是容器)
這裡不展開講了, 一般段暫存器的名稱是以s結尾的, 表示sgement(段)
%macro macroname #(表示引數的個數)
mov [%1] ax ; %1表示第乙個引數, 以此類推, %2, %3
%endmarco
組合語言語法
以上的暫存器都是16位 2個位元組 的暫存器 在 a d x暫存器中,每乙個暫存器都是由兩個8位暫存器組成的 ax ah al bx bh bl cx ch cl dx dh dl 其中h表示high,l表示low,左高右低是記憶體中位址的分布形式,而x是extend中的x,表示擴充套件,因為16位...
組合語言 AT T組合語言
這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...
C語言語法
printf 01f n double 2 1 printf 02f n double 2 1 保留兩位小數 陣列賦值 include memset al,0,sizeof al 輸入浮點數 while scanf lf n eof 字串比較 include char a 11 1234567890...