「Hello World!」是程式設計學習的經典起點,但對組合語言初學者而言,這看似簡單的輸出卻隱含了段架構、中斷呼叫與記憶體模型等核心觀念。本文將帶領讀者從零開始,完成一個可在 DOS 環境(或 DOSBox)執行的經典範例。
DATA SEGMENT
STRING DB 'Hello World!', '$'
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP (0)
STACK1 ENDS
CODES SEGMENT
ASSUME CS:CODES, DS:DATA, SS:STACK1
BEGIN:
MOV AX, DATA ; 將資料段基址載入 AX
MOV DS, AX ; 設定 DS 指向資料段
LEA DX, STRING ; 將字串偏移地址載入 DX
MOV AH, 09H ; DOS 21h 中斷功能 09h:顯示 '$' 結尾字串
INT 21H ; 呼叫 DOS 服務
MOV AH, 4CH ; DOS 21h 中斷功能 4Ch:正常終止程式
INT 21H ; 返回作業系統
CODES ENDS
END BEGIN
STRING 的偏移量存入 DX,作為中斷參數。.asm)產生目標檔(.obj)。.obj 連結為可執行檔(.exe)。.exe 檔案,螢幕即會顯示 Hello World!。
透過這個範例,你已跨越了組合語言最基礎也最關鍵的門檻:段定義、暫存器佈局、中斷服務呼叫。這將是後續學習 BIOS/DOS 程式設計、保護模式進入甚至作業系統開發的基石。