本系列以經典「Hello World」為基礎,逐步引入分支結構、子程式模組化、鍵盤輸入與字串處理,展示 DOS 組合語言的互動程式設計技巧。兩個完整範例分別演示選單選擇與使用者輸入姓名後的歡迎訊息。
DISPCH(單字元)、ENTER(換行)、DISPCHS(字串)AGAIN:
CALL ENTER
LEA DX, MSG3 ; "PLEASE CHOOSE:"
CALL DISPCHS
MOV AH, 01H ; 鍵盤輸入並回顯
INT 21H
CMP AL, '1'
JE BASICP
CMP AL, '2'
JE ADVANP
JMP ERROR ; 錯誤處理
BASICP:
CALL ENTER
LEA DX, MSG4 ; "HELLO,WORLD!^-^"
CALL DISPCHS
JMP EXIT
ADVANP:
CALL ENTER
LEA DX, MSG5 ; "THIS IS MY FIRST ASM_86 PROGRAM! @^-^@"
CALL DISPCHS
JMP EXIT
ERROR:
CALL ENTER
LEA DX, ERRMSG ; "CHOOSE ERROR! -_-b"
CALL DISPCHS
MOV DL, 07H ; BEL 蜂鳴
CALL DISPCH
JMP AGAIN
DISPCH PROC NEAR
MOV AH, 02H
INT 21H
RET
DISPCH ENDP
ENTER PROC NEAR
MOV DL, 0DH ; CR
CALL DISPCH
MOV DL, 0AH ; LF
CALL DISPCH
RET
ENTER ENDP
DISPCHS PROC NEAR
MOV AH, 09H ; 顯示 '$' 結尾字串
INT 21H
RET
DISPCHS ENDP
Hello, [輸入姓名], Welcome to here!REPEAT:
MOV AH, 01H
INT 21H
CMP AL, 0DH ; CR?
JE EXIT_INPUT
MOV INPUT[SI], AL
INC SI
JMP REPEAT
EXIT_INPUT:
MOV INPUT[SI], 24H ; 補上 '$'
; 範例一
masm helloch.asm
link helloch.obj
helloch.exe
; 範例二
masm heinout.asm
link heinout.obj
heinout.exe
CMP + JE/JNE/JMP 實現多路選擇PROC NEAR 封裝重複功能,CALL/RET 傳遞控制權INT 21h 功能號 01H(輸入)、02H(單字元輸出)、09H(字串輸出)這兩個範例涵蓋了 DOS 互動式程式的核心要素,是進階學習組合語言控制流與 I/O 處理的優秀實作參考。