匯編語言(3)--基礎(chǔ)語法

匯編程序可以分為三個部分-data?secttion,?bss?section以及text?section酪碘。

Data Section(數(shù)據(jù)段)

數(shù)據(jù)段用于聲明初始化的數(shù)據(jù)或常量仗考。 此數(shù)據(jù)在運(yùn)行時不會更改哮幢。 你可以可以在本節(jié)中聲明各種常量值桶雀,文件名或緩沖區(qū)大小等唠叛。

聲明數(shù)據(jù)部分的語法是

section.data

BSS Section(BSS段)

bss部分用于聲明變量瞎访,存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域,聲明bss部分的語法是

section.bss

Text Section(代碼段)

文本段用于保留實(shí)際代碼值朋。 此部分必須以全局聲明_start開頭叹侄,該聲明告訴內(nèi)核程序從何處開始執(zhí)行。

聲明文本部分的語法是

section.text

? global _start

_start:

注釋

匯編語言注釋以分號(;)開頭昨登。 它可以包含任何可打印字符趾代,包括空格。 它可以單獨(dú)出現(xiàn)在一條線上丰辣,例如

; 今天開始學(xué)匯編撒强,這是我的第一個程序

或者,與說明在同一行上笙什,例如

add eax, ebx? ? ; 把ebx寄存器上的數(shù)加到eax寄存器上

匯編語言聲明

匯編語言程序包含三種類型的語句

可執(zhí)行指令或說明尿褪,

匯編程序指令或偽操作

可執(zhí)行指令或簡單的指令告訴處理器該怎么做。 每個指令由一個操作碼(操作碼)組成得湘。 每個可執(zhí)行指令生成一個機(jī)器語言指令杖玲。

匯編程序指令或偽操作將匯編程序的各個方面告知匯編程序。 這些是不可執(zhí)行的淘正,不會生成機(jī)器語言指令摆马。

宏基本上是一種文本替換機(jī)制。

匯編語言語句的語法

匯編語言語句每行輸入一個語句鸿吆。 每個語句遵循以下格式

[標(biāo)簽]助記符[操作數(shù)] [;注釋]

方括號中的字段是可選的囤采。 基本指令包括兩部分,第一部分是要執(zhí)行的指令(或助記符)的名稱惩淳,第二部分是命令的操作數(shù)或參數(shù)蕉毯。

以下是一些典型匯編語言語句的示例

INC COUNT? ? ? ? ; Increment the memory variable COUNT

MOV TOTAL, 48? ? ; Transfer the value 48 in the

? ? ? ? ? ? ? ? ; memory variable TOTAL


ADD AH, BH? ? ? ; Add the content of the

? ? ? ? ? ? ? ? ; BH register into the AH register


AND MASK1, 128? ; Perform AND operation on the

? ? ? ? ? ? ? ? ; variable MASK1 and 128


ADD MARKS, 10? ? ; Add 10 to the variable MARKS

MOV AL, 10? ? ? ; Transfer the value 10 to the AL register

神級程序Hello World

Live Demo

section .text

? global _start? ? ;must be declared for linker (ld)

_start: ? ? ? ? ? ? ;tells linker entry point

? mov edx,len? ? ;message length

? mov ecx,msg? ? ;message to write

? mov ebx,1? ? ? ;file descriptor (stdout)

? mov eax,4? ? ? ;system call number (sys_write)

? int 0x80? ? ? ? ;call kernel

? mov eax,1? ? ? ;system call number (sys_exit)

? int 0x80? ? ? ? ;call kernel

section .data

msg db 'Hello, world!', 0xa? ;string to be printed

len equ $ - msg? ? ;length of the string

當(dāng)你編譯并執(zhí)行上述程序之后乓搬,屏幕上會打印出

Hello world!

在NASM中編譯和鏈接匯編程序

確保已在PATH環(huán)境變量中設(shè)置了nasm和ld二進(jìn)制文件的路徑。 現(xiàn)在代虾,按照以下步驟編譯和鏈接上述程序(總之就是先把nasm裝上进肯,沒裝上的看上一篇文章)

使用文本編輯器輸入以上代碼,然后將其另存為hello.asm棉磨。

確保您與保存hello.asm的目錄位于同一目錄中江掩。

要組裝程序,請鍵入nasm -f elf hello.asm

如果有任何錯誤乘瓤,現(xiàn)階段將提示有關(guān)錯誤环形。 否則,將創(chuàng)建名為hello.o的程序的目標(biāo)文件衙傀。

要鏈接目標(biāo)文件并創(chuàng)建一個名為hello的可執(zhí)行文件抬吟,請鍵入ld -m elf_i386 -s -o hello hello.o

通過鍵入?./hello?執(zhí)行程序

如果您正確完成所有操作,則會在屏幕上顯示“Hello world!”.

如果你在編譯和鏈接時遇到什么問題统抬,我想這篇文章能夠幫助到你火本。

知青語:Linux 匯編語言學(xué)習(xí)--編譯和鏈接?zhuanlan.zhihu.com

大家把今天的課程稍微消化一下,貪多嚼不爛蓄喇。而且這兩天氣溫驟降发侵,打字久了交掏,手特別冷妆偏,今天更新兩篇,大家認(rèn)真看一下盅弛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钱骂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挪鹏,更是在濱河造成了極大的恐慌见秽,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讨盒,死亡現(xiàn)場離奇詭異解取,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)返顺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門禀苦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遂鹊,你說我怎么就攤上這事振乏。” “怎么了秉扑?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵慧邮,是天一觀的道長。 經(jīng)常有香客問我,道長误澳,這世上最難降的妖魔是什么耻矮? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮脓匿,結(jié)果婚禮上淘钟,老公的妹妹穿的比我還像新娘。我一直安慰自己陪毡,他們只是感情好米母,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著毡琉,像睡著了一般铁瞒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桅滋,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天慧耍,我揣著相機(jī)與錄音,去河邊找鬼丐谋。 笑死芍碧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的号俐。 我是一名探鬼主播泌豆,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吏饿!你這毒婦竟也來了踪危?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤猪落,失蹤者是張志新(化名)和其女友劉穎贞远,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笨忌,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蓝仲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了官疲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袱结。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖袁余,靈堂內(nèi)的尸體忽然破棺而出擎勘,到底是詐尸還是另有隱情,我是刑警寧澤颖榜,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布棚饵,位于F島的核電站煤裙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏噪漾。R本人自食惡果不足惜硼砰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欣硼。 院中可真熱鬧题翰,春花似錦、人聲如沸诈胜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽焦匈。三九已至血公,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缓熟,已是汗流浹背累魔。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留够滑,地道東北人垦写。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像彰触,于是被迫代替她去往敵國和親梯投。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Return-Oriented-Programming(ROP FTW) Author: Saif El-Sher...
    RealSys閱讀 3,309評論 0 2
  • 2013年12月01日 15:21:25 ajige 閱讀數(shù) 2718 第一步渴析,將系統(tǒng)調(diào)用號(不懂什么系統(tǒng)調(diào)用號請...
    spyder_men閱讀 515評論 0 0
  • 參考鏈接 Linux下的匯編 Linux 下用匯編語言編寫的代碼具有兩種不同的形式晚伙。第一種是完全的匯編代碼吮龄,指的是...
    jeepshen閱讀 8,298評論 1 9
  • 1.地址總線俭茧,數(shù)據(jù)總線,控制總線在哪里漓帚,它們有什么作用?答:它們都是cpu連接外部組件的線路母债。地址總線:地址總線A...
    MagicalGuy閱讀 1,437評論 0 1
  • 這個程序的核心目的是:試驗(yàn)大地址的讀寫,在保護(hù)模式下面尋址空間可達(dá)4GB尝抖,實(shí)模式下只能尋址1MB毡们。(why:為什么...
    王偵閱讀 806評論 0 0