匯編語言編輯、匯編、連接、運行的全過程

匯編語言編輯、匯編、連接、運行的全過程

    為了理解匯編語言的編輯、匯編、連接、運行的全過程,我們不使用IDE,而是分步驟來進行:
     需要工具:
    1. 文本編輯器(如果有Notepad++或者UltraEdit就更好了)
    2.  匯編器(如MASM.exe)
    3.  連接器(對應(yīng)的link.exe)
    
    為了省略盤符轉(zhuǎn)換,我在電腦的F盤中建立了myASM這個文件夾,并把Windows系統(tǒng)的cmd.exe復(fù)制到了該文件夾中,另外,把下載好的MASM.exe和LINK.exe都復(fù)制到該文件夾中,在myASM下建立一個文本文件1.txt, 改其名為1.asm, 在1.asm中輸入如下程序并保存

assume cs : xxx
xxx segment

mov ax, 2
add ax, ax
add ax, ax

mov ax, 4c00H
int 21H

xxx ends
end

     點擊cmd.exe, 然后輸入masm, 按enter, 進入了masm的界面,然后按下圖輸入(有時需要按enter鍵):

在myASM文件夾下生成了1.obj文件盒1.exe文件(注意:由于該程序只有代碼段,沒有棧段,故有no stack segment這個提示)。

   雙擊1.exe文件后,黑色的框框一閃而過,這是很正常的。用cmd.exe來運行1.exe, 也沒有發(fā)現(xiàn)什么結(jié)果,因為該程序并沒有輸出操作,所以自然也就沒有輸出結(jié)果了。那要怎么樣看結(jié)果呢?用debug嘛!步驟如下:

有兩點值得注意:
1. u命令表示將內(nèi)存中的機器指令轉(zhuǎn)為匯編指令(至于g命令的作用,前面已經(jīng)說過了)
2. 要輸入debug 1.exe. 如果輸入debug 1, 則會出錯
3. 在沒有學(xué)會輸出操作之前,以上方法是查看結(jié)果的好方法

 下面,我們來對上述程序進行解釋:
 1.

xxx segment
...
xxx ends

 segment和ends(不是end)是一對偽指令,用來定義一個“段”,具體是什么“段”由偽指令assume來指定。比如assume cs : xxx 指定的是代碼段(code segment)

 2. end偽指令是一個匯編語言結(jié)束的標(biāo)記,碰到end, 則停止匯編
 
 3. 

mov ax, 4c00H
int 21H

   這兩條語句的功能是程序返回

 4. 

mov ax, 2
add ax, ax
add ax, ax

   這三條語句是“段”的主體(代碼段的主體)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容