聲明:這篇文章轉自我的一個學長,由於講解十分清晰,因此收藏。原出處:www.reyoung.me
這篇日誌介紹瞭如何在Windows下使用RadASM進行彙編開發,並配置Irvine的庫。分爲如下幾個步驟:* 安裝彙編語言的集成開發環境RadASM* 下載Irvine的開發庫* 新建項目,配置Irvine庫* 運行Hello World
安裝彙編語言的集成開發環境RadASM
RadASM可以從這裏下載。下載完成後,是一個安裝包,安裝過程沒有什麼注意事項,正常的安裝程序就可以了。(也許會報病毒,我用Avast檢測報毒。
安裝完畢後,可以找到程序RadASM
下載Irvine的開發庫
可以在Kip Irvine的官方網站下載它書籍的配套資料。大家可以下載vs2012的example就可以了。(八卦一下,下面那個Curtis Wong的Linux版本的Irvine32庫,是天津大學咱的大學長黃耀龍寫的。^V^)
下載完了是一個zip包。解壓縮完畢了後,提取出Irvine32.inc, Irvine32.lib, Kernel32.lib, SmallWin.inc, User32.lib, VirtualKey.inc到某一個目錄中
新建項目,配置Irvine庫
打開RadASM,選擇文件,新建工程。選擇Console,填寫完名稱,一路下一步。
到目錄的文件夾內,把剛纔解壓出來的那些文件,拷到項目的根目錄。
輸入課本中的示例程序:
TITLE Add and Subtract (AddSub.asm)
; This program adds and subtracts 32-bit integers.
INCLUDE Irvine32.inc
.code
main PROC
mov eax,10000h ; EAX = 10000h
add eax,40000h ; EAX = 50000h
sub eax,20000h ; EAX = 30000h
call DumpRegs
exit
main ENDP
END main
點擊菜單構建–構建並運行(Ctrl+Shift+F5),會報錯
Test.obj : error LNK2001: unresolved external symbol _ExitProcess@4
Test.obj : error LNK2001: unresolved external symbol _DumpRegs@0
Test.exe : fatal error LNK1120: 2 unresolved externals
報的錯是Link Error,也就是Irvine32.lib沒找到。那麼在源代碼加入如下幾行即可
INCLUDELIB Irvine32.lib
INCLUDELIB user32.lib
INCLUDELIB kernel32.lib
現在所有的程序爲: TITLE Add and Subtract (AddSub.asm)
; This program adds and subtracts 32-bit integers.
INCLUDE Irvine32.inc
INCLUDELIB Irvine32.lib
INCLUDELIB user32.lib
INCLUDELIB kernel32.lib
.code
main PROC
mov eax,10000h ; EAX = 10000h
add eax,40000h ; EAX = 50000h
sub eax,20000h ; EAX = 30000h
call DumpRegs
exit
main ENDP
END main
運行結果爲:
EAX=00030000 EBX=7FFDE000 ECX=00000000 EDX=00401000
ESI=00000000 EDI=00000000 EBP=0018FF90 ESP=0018FF88
EIP=00401014 EFL=00000206 CF=0 SF=0 ZF=0 OF=0 AF=0 PF=1
Press Enter key to continue...