關于匯編

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 匯編語言中CPU上的通用寄存器的名稱,是32位的寄存器。如果用C語言來解釋,可以把這些寄存器當作變量看待。

EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。
EBX 是"基地址"(base)寄存器, 在內存尋址時存放基地址。
ECX 是計數器(counter), 是重復(REP)前綴指令和LOOP指令的內定計數器。
EDX 則總是被用來放整數除法產生的余數。
ESP:寄存器存放當前線程的棧頂指針
EBP:寄存器存放當前線程的棧底指針
EIP:寄存器存放下一個CPU指令存放的內存地址,當CPU執行完當前的指令后,從EIP寄存器中讀取下一條指令的內存地址,然后繼續執行。
ESI/EDI分別叫做"源/目標索引寄存器"(source/destination index),因為在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目標串.
EBP是"基址指針"(BASE POINTER), 它最經常被用作高級語言函數調用的"框架指針"(frame pointer).

MOV指令是數據傳送指令,也是最基本的編程指令,用于將一個數據從源地址傳送到目標地址(寄存器間的數據傳送本質上也是一樣的)。其特點是不破壞源地址單元的內容。
例如:
MOV AX,2000H;將16位數據2000H傳送到AX寄存器
MOV AL,20H;將8位數據20H傳送到AL寄存器
MOV AX,BX;將BX寄存器的16位數據傳送到AX寄存器
MOV AL,[2000H];將2000H單元的內容傳送到AL寄存器
需要注意的是:
(1)兩個存儲單元之間不能直接傳送數據,即:MOV指令只允許一個操作數在存儲器中。MOV [SI],[2000H];這是錯誤的
(2)MOV指令中立即數不能直接傳送給段寄存器(CS、DS、SS、ES)和IP;段寄存器之間不能直接傳送。MOV IP,2000 H ;這是錯誤的
(3)CS和IP不能作為目的操作數。MOV CS,AX ;這是錯誤的
(4)MOV指令中立即數不能作目標操作數。MOV 2000H,[SI] ;這是錯誤的

jmp指令用法總結:
1.直接用法(只能在Debug下使用的匯編指令):
jmp 段地址:偏移地址
功能:修改CS、IP的內容
例子:jmp 55BA:8
執行后:(CS)=55EAH, (IP)=0008H
2.根據標號進行轉移的用法:
(1).轉移的目的地址不在指令中,依據位移進行轉移(段內轉移)
a.jmp short 標號(IP的修改范圍為-128至127)
功能:(IP)=(IP)+8位位移
b.jmp near ptr 標號(IP的修改范圍為-32768至32767)
功能:(IP)=(IP)+16位位移
注:依據位移進行的轉移是段內轉移,位移=標號處的地址-jmp指令后的第一個字節的地址。
(2).轉移的目的地址在指令中(段間轉移)
jmp far ptr 標號
功能:用標號的段地址和偏移地址修改CS和IP
(CS)=標號所在段的段地址;(IP)=標號所在段的偏移地址
3.轉移地址在寄存器中的用法:
jmp 某一合法寄存器
功能:用寄存器中的值修改IP
例子:jmp ax
執行后:(IP)=(ax)
注意:合法寄存器是指通用寄存器。一個有趣的現象:jmp ip在debug下調試也是
錯誤的。字面上理解:(IP)=(IP),但CPU并不支持
4.轉移地址在內存中的用法:
(1).jmp word ptr 內存單元地址(段內轉移)
功能:從內存單元地址出開始存放著一個字,是轉移的目的偏移地址
例子:mov ax,0123H
mov [bx],ax
jmp word ptr [bx]
執行后:(IP)=0123H
(2).jmp dword ptr 內存單元地址(段間轉移)
功能:從內存單元地址處開始存放著兩個字,高地址處的字是轉移的目的段地址,低地址處是轉移的目的偏移地址
例子:mov ax,0123H
mov [bx],ax
mov word ptr [bx+2],0
jmp dword ptr [bx]
執行后:(CS)=0, (IP)=0123H

CALL和RET
CALL指令的步驟:首先是將返回地址(也就是call指令要執行時EIP的值)壓入棧頂,然后是將程序跳轉到當前調用的方法的起始地址。執行push和jump指令。
RET指令則是將棧頂的返回地址彈出到EIP,然后按照EIP此時指示的指令地址繼續執行程序。

pop和push
出棧進棧

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,406評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,034評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,413評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,449評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,165評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,559評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,606評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,781評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,327評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,084評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,278評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,849評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,495評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,927評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,172評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,010評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,241評論 2 375

推薦閱讀更多精彩內容

  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎入門學習匯編語言》系列視頻的筆記,在此感謝他和像他一樣...
    Gibbs基閱讀 37,312評論 8 114
  • 王爽匯編全書知識點大綱 第一章 基礎知識 機器語言 匯編語言的產生 匯編語言的組成 存儲器 cpu對存儲器的讀寫 ...
    2c3ba901516f閱讀 2,436評論 0 1
  • 計算機通過執行指令序列來使機器得以工作,所以對于每一系列的計算機都有指定的一組指令集供計算機使用,這組指令...
    未來科技工作室閱讀 8,067評論 1 10
  • 匯編總結 匯編的發展史 機械語言 由0和1組成的機器指令(如:0101 0001 1101 0110) 匯編語言(...
    iChuck閱讀 1,316評論 1 8
  • 瀟瀟碧羅裙,點點墨梅頓。素手喬織贈于君,詩語點醉玉冰心。 桃面媚眼任沉淪,一眼傾心莫若珺。入夜之時,風掠水浴涼...
    796394033371閱讀 186評論 0 1