首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 組合語言

組合語言經典案例:帶菜單選擇的Hello World與字符串輸入輸出

     編輯:組合語言

案例一:分支選擇版 Hello World

功能:啟動顯示歡迎信息與菜單,輸入 1 顯示 HELLO,WORLD!,輸入 2 顯示 THIS IS MY FIRST ASM_86 PROGRAM!,其他輸入報警並重選。

關鍵技術點

  • 數據段定義多個 `$` 結尾字符串(MSG1~MSG5, ERRMSG)
  • 子程序模塊化:DISPCH(單字符)、ENTER(回車換行)、DISPCHS(字符串)
  • INT 21H/01H 鍵盤輸入帶回顯 → CMP AL,'1' / JE 分支
  • INT 21H/02H 輸出 07H (BEL) 實現蜂鳴報警
  • JMP AGAIN 構建輸入驗證循環

完整源碼結構

DATA SEGMENT
MSG1  DB '***WELCOME TO MY PROGRAM BY LLUCT***','$'
MSG2  DB '1:BASIC MESSAGE 2:ADVANCED MESSAGE','$'
MSG3  DB 'PLEASE CHOOSE:','$'
MSG4  DB 'HELLO,WORLD!^-^','$'
MSG5  DB 'THIS IS MY FIRST ASM_86 PROGRAM! @^-^@','$'
ERRMSG DB 'CHOOSE ERROR! -_-b','$'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
CALL ENTER
LEA DX, MSG1
CALL DISPCHS
CALL ENTER
CALL ENTER
LEA DX, MSG2
CALL DISPCHS
AGAIN:
CALL ENTER
LEA DX, MSG3
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
CALL DISPCHS
CALL ENTER
JMP EXIT
ADVANP:
CALL ENTER
LEA DX, MSG5
CALL DISPCHS
CALL ENTER
JMP EXIT
ERROR:
CALL ENTER
LEA DX, ERRMSG
CALL DISPCHS
MOV DL, 07H
CALL DISPCH
CALL ENTER
JMP AGAIN
EXIT:
MOV AH, 4CH
INT 21H
; 三個子程序:DISPCH / ENTER / DISPCHS
CODE ENDS
END START

案例二:鍵盤輸入字符串並格式化輸出

功能:提示輸入姓名,讀取以回車結尾的字符串,輸出 Hello, [輸入內容], Welcome to here!。

關鍵技術點

  • INPUT DB 100 DUP(?) 定義輸入緩衝區
  • INT 21H/01H 循環讀字符至 AL,CMP AL,0DH 判斷回車結束
  • MOV INPUT[SI], AL / INC SI 存入緩衝區
  • 結束後 MOV INPUT[SI], 24H 補 `$` 供 09H 功能輸出
  • 同樣採用 DISPCH/ENTER/DISPCHS 子程序複用

編譯運行命令

MASM HELLOCH.ASM
LINK HELLOCH.OBJ
HELLOCH.EXE

MASM HEINOUT.ASM
LINK HEINOUT.OBJ
HEINOUT.EXE

兩例均展示了模塊化設計、中斷服務調用、字符串處理、流程控制的組合語言核心技能。

  1. 上一篇文章:
  2. 下一篇文章: No
Copyright © 程式碼之家 All Rights Reserved