自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解匯編語(yǔ)言開(kāi)發(fā)環(huán)境搭建方法

開(kāi)發(fā) 開(kāi)發(fā)工具
匯編語(yǔ)言幾乎是所有程序員在大學(xué)時(shí)的必修課,本文將給大家介紹的是四種匯編語(yǔ)言開(kāi)發(fā)環(huán)境搭建方法。

引子

由于這些日子一直都在研究底層的技術(shù),從 Windows 驅(qū)動(dòng)程序,到 Windows 內(nèi)核等等技術(shù)的學(xué)習(xí),

讓我對(duì)底層的技術(shù)越發(fā)有興趣了,而剛好,在研究 WRK 時(shí),

對(duì)內(nèi)存管理,寄存器,地址總線(xiàn),數(shù)據(jù)總線(xiàn),控制總線(xiàn)等的理解不夠透徹,

所以越發(fā)的想學(xué)習(xí)匯編程序設(shè)計(jì)來(lái)提升功力,

而由于近來(lái)在公司里一直都有項(xiàng)目壓著,所以在公司里也實(shí)在不好拿本匯編程序設(shè)計(jì)看,

所以只好晚上回來(lái)學(xué)習(xí)了, 匯編看了幾個(gè)晚上,也算是蠻有感覺(jué)的。

今天就先來(lái)搭個(gè)開(kāi)發(fā)環(huán)境再說(shuō)吧。

開(kāi)發(fā)環(huán)境搭配

我介紹四種開(kāi)發(fā)匯編程序的方式:

***種:直接在 Dos 環(huán)境下使用 Edit 命令調(diào)出源碼編輯框,

生成源碼后,可以使用由微軟提供的 masm 匯編編譯器來(lái)對(duì)源碼進(jìn)行編譯,

編譯完后再使用 Linker 連接器即可得到可執(zhí)行文件,

這種方式現(xiàn)在幾乎被滅絕了(當(dāng)然使用 masm 匯編編譯器還是很普遍的),

除非你真要在 DOS 環(huán)境下運(yùn)行匯編程序;

第二種:通過(guò)簡(jiǎn)化***種方式而來(lái);

第三種:直接使用 Masm for Windows 集成實(shí)驗(yàn)環(huán)境,這個(gè)開(kāi)發(fā)環(huán)境呢,非常適合匯編語(yǔ)言的初學(xué)者,

因?yàn)檫@個(gè) IDE 本身就是由一些從事匯編程序教學(xué)的大學(xué)老師開(kāi)發(fā)的出來(lái)用于匯編初學(xué)者進(jìn)行學(xué)習(xí)和實(shí)驗(yàn)的,

所以使用簡(jiǎn)單,方便,這里可以對(duì)這個(gè) IDE 稍加推薦;

第四種:則是通過(guò) Visual  Studio 這個(gè)強(qiáng)大的 IDE 來(lái)實(shí)現(xiàn)匯編程序的編譯,運(yùn)行和調(diào)試,

至于 Visual  Studio 就不多做介紹了,.Net 用了這么多年,這東西強(qiáng)大到什么程度那是總所周知的;

 

***種方式:使用 Edit + MASM 5.0 編譯器 + Linker 連接器

其實(shí)這種方式是很簡(jiǎn)單的,只是很麻煩,因?yàn)楹?jiǎn)單而且麻煩,

所以我采用盡可能的將截圖傳上來(lái),然后稍加注解的方式進(jìn)行介紹,

軟件準(zhǔn)備:

需要 MASM 5.0 或者以上的匯編編譯器

首先,是要編輯匯編源代碼:

其實(shí)對(duì)于源碼的編輯根本不需要向如下這么麻煩,直接拿個(gè)記事本就 OK 了

運(yùn)行 cmd 命令

image

輸入 Edit 命令從而彈出匯編源碼編輯框

image

image

在源碼輸入框中輸入?yún)R編源碼

image

將編輯好的匯編源碼保存到 xx.asm 文件中

image

image

image

然后就是要編譯編輯好的匯編源代碼

在 Dos 環(huán)境下進(jìn)入到  MASM 5.0  匯編編譯器所在的目錄

image

然后運(yùn)行 masm.exe

image

image

可以從上面的截圖中看到  [. ASM]  的標(biāo)記,這個(gè)標(biāo)記代表的是需要在這里輸入要編譯的源程序文件名,

這里有一點(diǎn)特別的是,由于默認(rèn)的文件擴(kuò)展名為 .asm ,所以在編譯 .asm 的匯編源程序時(shí)可以不用指定源程序所在文件的擴(kuò)展名。

我們將一開(kāi)始編輯好的匯編源程序所在的文件輸入以進(jìn)行編譯

image

指定文件所在路徑后按  Enter  鍵

image

此時(shí)可以看到編譯器提示需要輸入要編譯出的目標(biāo)文件的名稱(chēng),由于在一開(kāi)始已經(jīng)指定了 BoyXiao. asm ,

所以編譯器自動(dòng)指定了目標(biāo)文件的名稱(chēng)為 BoyXiao. obj 的名稱(chēng),如果在這里不做修改的話(huà),

則編譯器會(huì)以默認(rèn)目標(biāo)文件名稱(chēng) BoyXiao. obj 進(jìn)行輸出,在這里我并不改變名稱(chēng),所以直接按 Enter 鍵即可

image

此時(shí)又提示需要輸入列表文件的名稱(chēng),其實(shí)是完全可以不要讓編譯器生成這個(gè) LST 文件的,所以也不需要進(jìn)行輸入,

直接按 Enter 鍵即可

image

此時(shí)又提示需要輸入交叉引用文件的名稱(chēng),這里也完全可以不要讓編譯器生成這個(gè) CRF 文件,

所以也不需要進(jìn)行輸入,直接按 Enter 鍵即可

image

至此,匯編源程序編譯成功,

編譯得到的結(jié)果就是在我的 E:\Tools\MASM\MASM 5.0 目錄下生成了一個(gè) BoyXiao.obj 文件

image

下面就是要實(shí)現(xiàn)對(duì)目標(biāo)文件的連接

經(jīng)過(guò)編譯操作后,我們得到了一個(gè) .obj 的目標(biāo)文件,但很顯然,這還并不是一個(gè)可執(zhí)行文件,

下面就需要對(duì)目標(biāo)文件進(jìn)行連接,從而得到一個(gè)可執(zhí)行文件。

一般來(lái)說(shuō),需要準(zhǔn)備一個(gè)連接器,這里我使用的是微軟提供的 Linker 連接器,即 LINK.EXE ,

image

進(jìn)入 LINK.EXE 文件所在目錄,直接運(yùn)行 LINK.EXE

image

image

此時(shí)提示需要輸入被連接的目標(biāo)文件的名稱(chēng),這里也就是  BoyXiao.obj  ,

由于我的 BoyXiao.obj 和 Link.exe 在同一目錄下,所以不需要指定路徑,直接給出 .obj 的名稱(chēng)即可,

image

按  Enter  鍵

image

這里提示需要輸入要生成的可執(zhí)行文件的名稱(chēng),此時(shí)如果想要將可執(zhí)行文件輸入到指定目錄下,

則需要指定目錄,否則只需要指定名稱(chēng)即可,并且可以看到名稱(chēng)已有默認(rèn)值:BOYXIAO.EXE

在這里我選擇默認(rèn)值,所以直接按 Enter 鍵即可

image

按  Enter  鍵

image

又繼續(xù)提示需要輸入映像文件的名稱(chēng),在這里,不需要生成這個(gè)文件,所以直接按 Enter 鍵即可

image

此時(shí)又提示需要輸入庫(kù)文件的名稱(chēng),由于我們的這個(gè)程序中沒(méi)有使用任何的子程序,

也就是根本沒(méi)有調(diào)用什么庫(kù)文件,所以這里也可以直接按 Enter  鍵處理

image

至此,整個(gè)目標(biāo)文件的連接工作結(jié)束,得到的結(jié)果是一個(gè) EXE 文件

image

執(zhí)行匯編程序

image

其實(shí)執(zhí)行起來(lái)是看不到什么結(jié)果的,因?yàn)樯厦娴膮R編代碼沒(méi)有輸出任何內(nèi)容,而只是改變了幾個(gè)寄存器的值而已,

自然也就看不到任何的輸出了。

#p#

 

第二種方式:使用 Edit + MASM 5.0 編譯器 + Linker 連接器 (簡(jiǎn)化版)

這種方式其實(shí)和***種方式說(shuō)不上有什么區(qū)別,只不過(guò)在編譯和連接過(guò)程中使用了很多編譯器和連接器的默認(rèn)設(shè)置而已

軟件準(zhǔn)備:

和***種方式一樣

 

編輯匯編源代碼:

和***種方式一樣,也可以是直接使用文本編輯器編輯即可

 

編譯編輯好的匯編源代碼

直接到 MASM.EXE 文件目錄,然后直接使用 masm 編譯指定路徑的文件即可

特別注意的是,需要在目錄的后面加上 “;”

image

image

同樣在 E:\Tools\MASM\MASM 5.0 目錄下生成了  BoyXiao.obj 目標(biāo)文件

image

 

實(shí)現(xiàn)目標(biāo)文件的連接

同樣,直接下到連接器 LINK.EXE 文件所在的目錄,然后直接使用 LINK 連接指定的目標(biāo)文件即可

同樣需要注意在目錄或文件名的后面加上 “;”

image

image

可以看到連接成功了,從而生成了可執(zhí)行文件,當(dāng)然這個(gè)可執(zhí)行文件運(yùn)行的效果和***種方式中一樣,

即看不到任何輸出

image

#p#

第三種方式:MASM For Windows 集成開(kāi)發(fā)環(huán)境

上面的兩種方式都顯得非常麻煩,編譯了還要連接,誰(shuí)有那么多時(shí)間去浪費(fèi)啊,

所以,下面介紹的這個(gè) MASM For Windows 集成開(kāi)發(fā)環(huán)境就顯得非常有優(yōu)勢(shì)了,

軟件準(zhǔn)備:

MASM For Windows 集成開(kāi)發(fā)環(huán)境,我這里使用的是 2010 版本,大小 15.5 MB

實(shí)現(xiàn) HelloWorld

直接打開(kāi) MASM For Windows 集成開(kāi)發(fā)環(huán)境,然后找到范例程序,然后直接運(yùn)行即可

image

image

可以看出,使用這個(gè)東東確實(shí)會(huì)方便很多很多

 

#p#

第四種方式:使用 Visual  Studio 來(lái)實(shí)現(xiàn)開(kāi)發(fā)匯編程序

軟件準(zhǔn)備:

既然是使用  Visual  Studio  來(lái)開(kāi)發(fā)了,自然就需要  Visual  Studio  IDE 了,

在這里呢,我使用的是  Visual  Studio  2010 ,當(dāng)然 2008 和 2005 都是可以的,

只不過(guò)在一些設(shè)置上有些許區(qū)別而已,在這里,我也不做區(qū)分,大家感興趣的可以去網(wǎng)上淘一大把,

然后就是<<Intel  匯編語(yǔ)言程序設(shè)計(jì)>>中的 Irvine 包,這個(gè)在網(wǎng)上也有一大把

VS 2010 設(shè)置:

在  VC++  中新建一個(gè)空項(xiàng)目,取名為  Test

image 

定制  VC++  工程構(gòu)建規(guī)則

image

image

設(shè)置完  VC++  生成自定義項(xiàng)文件后,再添加一個(gè)  C++  文件,并注意取名時(shí)后綴名記為  .asm 

image

設(shè)置  VC++  工程的項(xiàng)目屬性

image

需要添加庫(kù)路徑,這里的庫(kù)路徑指的是 <<Intel  匯編語(yǔ)言程序設(shè)計(jì)>> 中的 Irvine 庫(kù)

image

設(shè)置包含路徑

image

設(shè)置依賴(lài)庫(kù)文件,添加 Irvine32.lib

image

設(shè)置項(xiàng)目輸出

image

設(shè)置生成匯編代碼列表,添加  $(ProjectName).lst  屬性

image

 

Hello World 程序:

image

直接運(yùn)行即可

image

 

結(jié)束語(yǔ)

花了這么多的截圖來(lái)介紹這四種匯編程序開(kāi)發(fā)方式,也算是良苦用心了,事實(shí)上呢,這四種方式,

我們并沒(méi)有必要全部掌握,我們只需找到適合自己的方式即可,

比如,初學(xué)的話(huà),我覺(jué)得  MASM  For  Windows  IDE 就非常不錯(cuò),

而至于系統(tǒng)性的開(kāi)發(fā),尤其是對(duì)于 Win32  匯編程序的開(kāi)發(fā),則選擇 Visual  Studio 是個(gè)不錯(cuò)的選擇。

原文鏈接:http://www.cnblogs.com/BoyXiao/archive/2010/11/06/1870397.html

【編輯推薦】 

  1. Visual Studio自定義調(diào)整窗體的兩個(gè)小技巧
  2. Visual Studio 2010中關(guān)于C#的幾點(diǎn)改進(jìn)
  3. Visual Studio 2010及.Net 4新功能一覽
  4. 提高效率 用好Visual Studio 2010自定義代碼段
責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2011-01-14 14:08:17

Linux匯編語(yǔ)言

2023-11-23 08:25:40

開(kāi)發(fā)人員SmaliAndroid

2023-06-01 16:27:34

匯編語(yǔ)言函數(shù)

2011-01-14 14:39:32

Linux匯編語(yǔ)言

2010-09-14 09:24:29

C語(yǔ)言

2018-01-11 14:58:40

2012-02-09 09:00:54

匯編語(yǔ)言

2011-01-04 17:08:10

匯編語(yǔ)言

2011-01-14 14:22:50

Linux匯編語(yǔ)言

2021-06-11 10:02:39

語(yǔ)言編程開(kāi)發(fā)

2011-01-14 14:15:11

Linux匯編語(yǔ)言

2011-08-25 15:02:17

Lua環(huán)境搭建EditPlus

2011-01-14 13:44:45

Linux匯編語(yǔ)言

2009-12-24 18:09:23

WPF開(kāi)發(fā)環(huán)境

2020-12-18 08:49:11

相對(duì)跳轉(zhuǎn)絕對(duì)跳轉(zhuǎn)指令

2017-01-12 22:36:30

2010-03-04 11:01:06

Python開(kāi)發(fā)環(huán)境

2013-04-08 15:52:06

Go語(yǔ)言

2011-07-21 09:59:26

JavaScript

2011-08-30 16:32:41

MTK開(kāi)發(fā)環(huán)境
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)