彙編之宏彙編實現“hello world”_×86

來源:互聯網
上載者:User

分享一下自己的資源。。。

連結:https://pan.baidu.com/s/1z6zdi-szqWLFgzBhnPYXoQ 密碼:638v

必備的知識儲備

debug.exe只是調試工具,不是彙編工具,不能將a.asm彙編串連產生可執行程式。
debug.exe帶有內建的彙編功能,但功能極弱,僅僅只能支援指令的彙編,不支援大多數常用偽指令的彙編。比如,它不支援變數名和語句標號的使用。它只能在進入debug後用a命令逐指令彙編。

要將一個a.asm這樣的組合語言來源程式彙編成可執行檔,你必須要另外使用彙編和串連程式。常用的彙編串連工具有兩種,一種是MASM,另一種是TASM。(上面的連結都有,其中TASM的下載費了我兩塊大洋呢。。。)

MASM需要至少兩個檔案:masm.exe和link.exe 版本可以用5.0以上的。
TASM需要tasm.exe和tlink.exe,還有一些輔助檔案。版本可以用3.0或5.0 。

網上有一些建議使用TASM,說它最大的優點是它配套的偵錯工具Turbo Debugger功能比debug強大很多、很多、很多倍,視窗介面,滑鼠操作。。。。

強不強,現在初入彙編的我不敢妄言,等都使用過再來做定論。

關於MASM整合式開發環境

當然我還下載了一款整合IDE,MASM for windows 2012 ,看著還挺不錯的,不過部分功能需要註冊才能使用,但是作為初學者,免費的功能全會了應該也就差不多入門了呢。

emmm,,,其中我比較看好的是關於它調試的兩種工具 工具->選項

怎麼好了,我也說不上了,直覺。。。

Hello World編寫

一門新的語言,依舊還是從我們的hello word開始吧,hello world的重要意義遠不止表面。

;完整段的Hello World程式DATAS  SEGMENT     STRING  DB  'Hello World!',13,10,'$'DATAS  ENDSCODES  SEGMENT     ASSUME    CS:CODES,DS:DATASSTART:     MOV  AX,DATAS     MOV  DS,AX     LEA  DX,STRING     MOV  AH,9     INT  21H     MOV  AH,4CH     INT  21HCODES  ENDS    END   START

注意了,字串的名字本來起的是STR,然後死活不通過,突然發現STR是彙編的一個關鍵字。。。。

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。

更多關於DOS功能號的看<這裡>.

4.MOV AH,9中9是列印字串的命令號(09H對應的是顯示字串)

注意:課堂與許多教材中的第一個彙編執行個體:“123+456=sum”的例子,都是沒有輸出語句的,必須使用debug調試來顯示程式的結果。

5. 將資料放入DS中
MOV AX , DATAS
MOV DS , AX

把資料區段的起始地址裝到DS中,DATAS是立即數,所以不能直接放入DS這個段寄存器,需要藉助通用寄存器。

6.

LEA DX , STRING ;字串位移起始DX
LEA :Loadeffective address

執行程式

還是上一節的老辦法

masm下如何進入偵錯模式呢。

如果輸入td 2.exe,在masm下是不行的,

只能debug 2.exe

但是如果在tasm環境下,td是可以的。。。

注意操作略有不一樣。。。

這一篇暫時先到這裡吧,寢室要門禁了,我要飛奔回去了。。。

2018年4月26日23:49:15

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.