閱讀139 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Masm for 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的博客也給出了這個例子的詳細解釋及代碼:(轉載)
https://blog.csdn.net/caiyunfreedom/article/details/6557847

 

該作者還注釋了一個Masm for Windows自帶程序兩個數求和的實例,個人覺得對大家初步學習匯編知識很有幫助的程序:(轉載)https://blog.csdn.net/caiyunfreedom/article/details/6557924

三.該軟件的一個bug
在使用該軟件“Masm for Windows集成實驗環境2012”軟件時總是遇到一個“運行時錯誤‘70’”,並且直接導致程序退出。
如下圖新建一個程序,在第一行“STSGSEGMENT STACK ‘S’”處敲擊鍵盤回車就會出現該提示。這個很讓我糾結,網上查了一些都是建議使用DosBox和Masm5.0來進行匯編實驗的,也不知道大家知不知道什麼原因。
最後,這是作者第一次發表博客,希望大家學習,有不好的地方希望大家原諒.希望後麵還寫寫“123+456=sum”這個實例及詳細的debug調試,和DosBox編寫匯編程序的東西。 

最後更新:2017-04-03 21:30:14

  上一篇:go 串口大師提示找不到串口的解決辦法,增加注冊表項目。
  下一篇:go 使用android中的AIDL讓Service與Activity通信(service回調activity)