https://zhuanlan.zhihu.com/p/147696502
眾所周知,首先從輸出“Hello World!”開始學習一門編程語言已經是慣例了,匯編語言也不例外,下面我們將從輸出“Hello World!”開始學習匯編語言。
一、編寫源程序
首先我們嘗試用C語言來實現該功能:
#include <stdio.h> int main() { printf("Hello World!"); // 輸出“Hello World!” return 0; }
可以看到,僅僅用了一行代碼就實現了該功能。那么用匯編語言又該如何去實現呢?
data segment ;數據段
string db 'Hello,World!$'
data ends
code segment ;代碼段
assume cs:code,ds:data
start:
mov ax,data ;獲取段基址
mov ds,ax ;將段基址送入寄存器
mov dx,offset string
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
下面對該匯編程序的部分代碼進行說明:
string db 'Hello,World!$'
定義一個名為string的字符串,string是字符串的名稱,db是定義字節說明,字符串內容需用單引號括起,其中 $ 是串的結束標志
assume cs:code,ds:data
這是一條匯編偽指令,含義是指定code段與CS寄存器關聯,data段與DS寄存器關聯
mov dx,offset string
獲取string的偏移地址
mov ah,9
int 21h
調用9號DOS功能(顯示字符串 )
mov ah,4ch
int 21h
調用程序結束功能
對比兩段代碼,顯然同樣的功能用匯編語言實現起來比用C語言實現起來更加復雜。這是因為匯編語言是低級編程語言,而C語言等是高級編程語言,匯編語言更加接近底層。程序員用匯編語言來編寫程序實際上都是對CPU中的寄存器進行操作,匯編語言編程是針對寄存器來進行編程的。
二、對源程序進行編譯
匯編語言程序從設計到形成可執行程序文件,在計算機上的操作過程分為三步:編輯、匯編、連接。用文本編輯程序寫程序,形成.ASM
文件,用匯編程序對.ASM
文件進行匯編,形成.OBJ
文件,再用連接程序對.OBJ
文件進行連接,形成.EXE
文件。
1. 編輯
新建一個名為HELLO.ASM
的文件,用文本編輯器將源程序寫入該文件中。
2. 匯編
匯編程序的作用是把匯編語言源程序翻譯成為機器代碼,產生二進制格式的目標文件(Object File)
在DOS中輸入以下命令:
MASM HELLO.ASM
3. 連接
連接就是使用連接程序LINK把目標文件(OBJ)轉換為可執行的EXE文件。
在DOS中輸入以下命令:
LINK HELLO.OBJ
三、在Debug模式下調試程序
程序必須經過調試階段,才能觀測結果和發現程序中的錯誤。
在DOS中輸入以下命令:
debug hello.exe
用Debug調入HELLO.EXE,出現-
Debug命令提示符。在-
后可鍵入Debug命令進行調試。
四、運行程序
在DOS中輸入以下命令:
hello.exe
運行結果:
