win10 下搭建彙編語言環境及hello world程序

前言

這學期彙編已經學了一大半了,可到如今爲止只會一堆寄存器的名字,指令和各類尋址方式,這個語言究竟是什麼基本毫無概念。上次潘老師推薦了清華大學出版社王爽編的《彙編語言》這本書,在第一章就開始用匯編指令編程,內容講得很是詳細完善,解決了不少學習上的困惑。web

1、準備環境

1. 準備Debug

網上直接搜索下載Debug,解壓後以下編程

clipboard.png

在命令行運行DEBUG.EXE會提示以下信息:學習

clipboard.png
緣由:win7以上64位系統是不能經過命令行進入debug的,可是能夠經過虛擬機或者dosBox來解決這個問題。spa

2. 準備DOSBox

clipboard.png

DOSBox 是一個 DOS 模擬程序,因爲它採用的是 SDL 庫,因此能夠很方便的移植到其餘的平臺。目前,DOSBox 已經支持在 Windows、Linux、Mac OS X、BeOS 、palmOS、Android 、webOS、os/2等系統中運行。

吐個槽:這個軟件最初的做用並非爲了彙編語言的學習,而是爲了玩之前dos環境下的各類遊戲,甚至如今還有人基於dosBox開發此類遊戲命令行

下載安裝打開後界面以下:debug

clipboard.png

每次開始都須要掛載一下磁盤,個人Debug.exe在E://software/Debug下,則將個人計算機的E盤掛載到dosBox的C盤code

clipboard.png

mount c E:\

而後進入dosBox的c盤,即個人計算機的E盤下的Debug文件夾,運行Debug.exeserver

clipboard.png

c:
.\SOFTWA~1\DEBUG\DEBUG.EXE

此時已經進入debug程序,使用r指令查看cup寄存器內容blog

clipboard.png

2、hello word

一、準備一份helloWorld程序源代碼

來源:彙編語言下的Hello world遊戲

assume cs:code,ds:datas  

datas segment  
str db 'helloWorld!','$'    
datas ends  
  
code segment  
    mov ax,datas  
    mov ds,ax  
    lea dx,str  ; 獲取str的偏移地址  
    mov ah,9 ; 調用9號功能輸出字符串  
    int 21h  
  
    mov ah,4ch  
    int 21h  
code ends  
end

將源碼粘貼到記事本中保存,後綴改成ASM,存放路徑我爲了方便放在了Debug文件下

clipboard.png

2. 編譯

仍是在Debug文件下,運行masm.exe

clipboard.png
執行完之後會生成一個TEST.OBJ文件

clipboard.png

  • source filename:源文件的路徑與名稱,若是是在本目錄下,直接輸入文件名
  • Object fileName: 目標文件的路徑與名稱,默認直接enter

剩下source listening(列表文件)和Cross-reference(交叉引用文件)是從源文件編譯爲目標文件過程當中產生的中間結果,能夠直接enter不生成。

上述過程的示意圖以下:

clipboard.png

也可使用更爲簡潔的形式編譯,效果同上:

clipboard.png

masm test;

3. 鏈接

操做與上面相似,執行LINK.EXE程序

clipboard.png

  • Object Modules:輸入上一步生成的目標文件(.obj)
  • Run File: 可執行文件,鏈接後生成的exe文件,默認enter
  • List File: 映像文件,是鏈接過程當中將目標文件鏈接爲可執行文件過程當中產生的中間文件,一樣地,直接enter忽略
  • Libraries: 庫文件,若是一個程序調用了某一個庫的子程序,就須要在鏈接的時候,將這個庫文件與目標文件鏈接在一塊兒,生成可執行文件,可是我準備的這段程序沒有調用任何子程序,因此直接enter忽略。

鏈接結束後輸出的最後一行Link: warning L4021: no stack sement, 沒有棧段,能夠不用理會。

上述過程示意圖:

clipboard.png

簡化的鏈接:

clipboard.png

link test;

4. 執行exe

仍是在debug目錄下,使用dos執行test.exe文件

clipboard.png
便可看到 helloWorld!

3、 錯誤總結

  1. unable to open file: XX
    clipboard.png
    可能緣由:

    • 文件名或路徑名不對,例如源文件在c盤study下,則執行masm C:\STUDY\TEST
    • dos環境下文件名長度最長爲8,將源文件名字改爲長度爲8之內
    • 源文件後綴爲ASM可省略後綴,當後綴爲其餘的則須要補全名字
  2. server Errors

    clipboard.png

    可能緣由:源文件存在語法錯誤,如上,源文件中使用了未定義的data

總結

  1. 經過此次學習,對編譯-鏈接-運行,源文件,目標文件,可執行文件這些之前模糊的概念有了比較清晰的認識。
  2. 無論學什麼語言,若是不上手跑一段代碼,幹看書,根本學不會。
  3. 選擇一本合適的書學習過重要了,有時候學不會一門課程,書佔了很大因素。
相關文章
相關標籤/搜索