Masmfor Windows整合式開發環境編寫組譯工具
由於最近在學習彙編,用的軟體是一款叫“Masm for Windows整合式開發環境”,但是發現該軟體的資料比較少,對於我們這樣剛剛學習彙編的同學,我尋找了很多資料,下面主要是介紹該工具及2個彙編的基本程式。
一.軟體的使用
下面是閱讀完四川大學的課件後幾張介紹該軟體啟動並執行基本方法:
1.進入Masm forWindows整合實驗環境
2.編寫程式,該代碼是該軟體內建的簡單入門執行個體11個中的第一個,後面將詳細介紹該代碼
3.儲存組譯工具.編寫完程式必須要儲存後才能運行
4.運行程式
5.偵錯工具
6.我們老師上課教授的用DosBox的Debug調試方法,也可以用該軟體實現
二.“Helloword”程式講解
1.SEGMENT:表示段,段定義偽指令。彙編中有資料區段、程式碼片段、堆棧段以及附加段
格式為: 段名 SEGMENT [定位類型][組合類別型][類別名]
段名 ENDS
功能:把程式分段,實現儲存空間的分段管理
該程式由DATAS資料區段和CODES的程式碼片段兩部分組成。
2.STRING DB 13,10,‘Hello World!’,13,10,’$’
13和10分別表示斷行符號符和分行符號的ASCII碼,執行結果是斷行符號換行。
’$’是結束標誌,否則不加’$’會出現亂碼。
這句話相當於C的(char*)STRING=”\nHello World!\n”;
3.INT 21H是DOS中斷功能調用的中斷號;MOV AH,4CH功能是讓你退出程式
其中:MOV AH,4CH
INT 21H
是程式結束時使用的模板,使用AH來選擇功能,其中4CH號功能是退出程式的意思。這個中斷告訴程式執行完畢後返回DOS。
4.MOV AH,9中9是列印字串的命令號(09H對應的是顯示字串)
注意:課堂與許多教材中的第一個彙編執行個體:“123+456=sum”的例子,都是沒有輸出語句的,必須使用debug調試來顯示程式的結果。
5. MOV AX , DATAS
MOV DS , AX
是將資料放入DS中
6. LEA DX , STRING ;字串位移起始DX
LEA :Loadeffective address
下面CSDN的部落格也給出了這個例子的詳細解釋及代碼:(轉載)
http://blog.csdn.net/caiyunfreedom/article/details/6557847
該作者還注釋了一個Masm for Windows內建程式兩個數求和的執行個體,個人覺得對大家初步學習彙編知識很有協助的程式:(轉載)
http://blog.csdn.net/caiyunfreedom/article/details/6557924
三.該軟體的一個bug
在使用該軟體“Masm for Windows整合實驗環境2012”軟體時總是遇到一個“執行階段錯誤‘70’”,並且直接導致程式退出。
如建立一個程式,在第一行“STSGSEGMENT STACK ‘S’”處敲擊鍵盤迴車就會出現該提示。這個很讓我糾結,網上查了一些都是建議使用DosBox和Masm5.0來進行彙編實驗的,也不知道大家知不知道什麼原因。
最後,這是作者第一次發表部落格,希望大家學習,有不好的地方希望大家原諒.希望後面還寫寫“123+456=sum”這個執行個體及詳細的debug調試,和DosBox編寫組譯工具的東西。