新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 第7章 NASM的使用教程(X86匯編教程)

第7章 NASM的使用教程(X86匯編教程)

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏

好了,打開(kāi)記事本新建立一個(gè)文本文件,保存,你會(huì)得到一個(gè)擴(kuò)展名為T(mén)XT的文件.把擴(kuò)展名改成ASM吧!


改完了嗎?什么?你說(shuō)圖標(biāo)和我不同?那是正?,F(xiàn)象,請(qǐng)不要在意....

好了.ASM文件就是匯編代碼文件用來(lái)寫(xiě)匯編代碼.用記事本就可以編輯它,當(dāng)然,你也可以專門(mén)找匯編代碼編輯工具(這就是我改擴(kuò)展名后圖標(biāo)和你不同的原因喲,專門(mén)的匯編代碼編輯器有自己的圖標(biāo)!),不過(guò)我認(rèn)為新手的話用記事本就足夠了,專門(mén)編輯工具會(huì)讓你眼花!

好了,用記事本打開(kāi)它,寫(xiě)入下面的代碼:

ORG 0100H;這行代碼之前沒(méi)講過(guò),以后會(huì)講!

MOV AX,0B800H

MOV BX,AX

MOV CX,BX

MOV DX,CX

好了,把代碼保存到文件里.

接著我們來(lái)編譯它,再次建立一個(gè)文本文件,還是要改擴(kuò)展名.改為BAT(見(jiàn)下圖↓):


用記事本按照下面的語(yǔ)法寫(xiě)入內(nèi)容:

NASM "代碼文件名.擴(kuò)展名" -o "要生成的文件名.擴(kuò)展名"

注意空格喲!

實(shí)例:

NASM "新建 文本文檔.ASM" -o "1.COM"


寫(xiě)完了,保存,把NASM解壓到同一個(gè)文件夾:


雙擊運(yùn)行BAT文件.如果你之前的步驟都沒(méi)做錯(cuò)的話,就會(huì)發(fā)現(xiàn)多出一個(gè)COM文件.不要急著運(yùn)行它!這個(gè)就是你的代碼編譯出來(lái)的東西!你知道么?DeBug還能調(diào)試編譯出來(lái)的程序呢!我們用DeBug調(diào)試它吧,再次建立一個(gè)BAT文件,用記事本按照以下語(yǔ)法寫(xiě)入內(nèi)容:

DeBug 要調(diào)試的文件名.擴(kuò)展名

注意:文件名前面有一個(gè)空格,文件名本身不能帶空格!

實(shí)例:

DeBug 1.COM


運(yùn)行后就會(huì)出現(xiàn)DeBug窗口,輸入R指令,看看第一行代碼:


你也許已經(jīng)震驚的發(fā)現(xiàn),第一行代碼盡然不是代碼里的第一行:ORG 0100H,而是第二行MOV AX,0B800H

其實(shí)事情的原因是這樣的:

那個(gè)ORG,其實(shí)不是匯編指令來(lái)的那個(gè)是一個(gè)標(biāo)識(shí),告訴編譯器,這篇代碼將來(lái)有可能被加載到內(nèi)存的什么地方(請(qǐng)注意DeBug里面的MOV指令的偏移地址,沒(méi)錯(cuò),是0100H!)

注意:這個(gè)0100H可不是ORG偽指令設(shè)定的!(實(shí)際上CPU根本就沒(méi)有,專門(mén)給編譯器的指令稱作偽指令)ORG只是告訴NASM,這篇代碼會(huì)被加載到0100H好讓NASM做好準(zhǔn)備而已(這個(gè)以后就會(huì)知道)

好了試試看運(yùn)行一下吧:T指令,看成功了,把B800放進(jìn)了AX里面,再繼續(xù)AX被復(fù)制到了BX里面.



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: NASMX86匯編教

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉