用匯編語言輸出Hello World!


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

運行結果:


 

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM