這學期彙編已經學了一大半了,可到如今爲止只會一堆寄存器的名字,指令和各類尋址方式,這個語言究竟是什麼基本毫無概念。上次潘老師推薦了清華大學出版社王爽編的《彙編語言》這本書,在第一章就開始用匯編指令編程,內容講得很是詳細完善,解決了不少學習上的困惑。web
網上直接搜索下載Debug,解壓後以下編程
在命令行運行DEBUG.EXE會提示以下信息:學習
緣由:win7以上64位系統是不能經過命令行進入debug的,可是能夠經過虛擬機或者dosBox來解決這個問題。spa
DOSBox 是一個 DOS 模擬程序,因爲它採用的是 SDL 庫,因此能夠很方便的移植到其餘的平臺。目前,DOSBox 已經支持在 Windows、Linux、Mac OS X、BeOS 、palmOS、Android 、webOS、os/2等系統中運行。
吐個槽:這個軟件最初的做用並非爲了彙編語言的學習,而是爲了玩之前dos環境下的各類遊戲,甚至如今還有人基於dosBox開發此類遊戲命令行
下載安裝打開後界面以下:debug
每次開始都須要掛載一下磁盤,個人Debug.exe在E://software/Debug下,則將個人計算機的E盤掛載到dosBox的C盤code
mount c E:\
而後進入dosBox的c盤,即個人計算機的E盤下的Debug文件夾,運行Debug.exeserver
c: .\SOFTWA~1\DEBUG\DEBUG.EXE
此時已經進入debug程序,使用r指令查看cup寄存器內容blog
來源:彙編語言下的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文件下
仍是在Debug文件下,運行masm.exe
執行完之後會生成一個TEST.OBJ文件
剩下source listening(列表文件)和Cross-reference(交叉引用文件)是從源文件編譯爲目標文件過程當中產生的中間結果,能夠直接enter不生成。
上述過程的示意圖以下:
也可使用更爲簡潔的形式編譯,效果同上:
masm test;
操做與上面相似,執行LINK.EXE程序
鏈接結束後輸出的最後一行Link: warning L4021: no stack sement, 沒有棧段
,能夠不用理會。
上述過程示意圖:
簡化的鏈接:
link test;
仍是在debug目錄下,使用dos執行test.exe文件
便可看到 helloWorld!
unable to open file: XX
可能緣由:
masm C:\STUDY\TEST
文件名長度最長爲8
,將源文件名字改爲長度爲8之內
可能緣由:源文件存在語法錯誤,如上,源文件中使用了未定義的data