目錄
-
- 0. HelloWorld
- 1. 字元輸入輸入
- 2. 字元串輸入輸出
0. HelloWorld
;輸入輸出一個字元串
DATA SEGMENT
;資料段代碼
DATA ENDS
STACK SEGMENT
;堆棧段代碼
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA, SS:STACK, CS:CODE
START:
STRING DB 'Hello World!','$' ;<=>'Hello World!$'
MOV AX, SEG STRING ;STRING段首位址送AX
MOV DS, AX
MOV DX, OFFSET STRING ;STRING偏移位址送DX
MOV AH, 9 ;輸出一個以“$”結尾的字元串到顯示器
INT 21H
MOV AH, 4CH ;傳回DOS
INT 21H
CODE ENDS ;退出DOS狀态
END START
1. 字元輸入輸入
;輸入輸出一個字元
DATA SEGMENT
;資料段代碼
DATA ENDS
STACK SEGMENT
;堆棧段代碼
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA, SS:STACK, CS:CODE
START:
MOV AH, 1 ;鍵盤輸入一個字元到AL中
INT 21H
MOV DL, AL
MOV AH, 2 ;輸出DL中的字元到顯示器
INT 21H
MOV AH, 4CH ;傳回DOS
INT 21H
CODE ENDS ;退出DOS狀态
END START
2. 字元串輸入輸出
來自https://blog.csdn.net/TanguanhuaD/article/details/81980956
增加了一部分注釋,便于閱讀
;輸入輸出一個字元串
DATA SEGMENT ;資料段代碼
INPUT DB 'Please input a string:', '$'
OUTPUT DB 'Your input is:', '$' ;輸入輸出提示
BUFFER DB 20 ;預留20位元組空間
DB ? ;輸入完成後,自動獲得輸入的字元個數
DB 20 DUP(0)
CRLF DB 0AH, 0DH, '$'
;BUFFER DB 20, ?, 20 DUP(?) ;表示定義了10個重複資料存儲單元(輸入緩沖區)
DATA ENDS
STACK SEGMENT ;堆棧段代碼
DW 20 DUP(0)
STACK ENDS
CODE SEGMENT ;代碼段代碼
ASSUME DS:DATA, SS:STACK, CS:CODE
START:
MOV AX, DATA
MOV DS, AX
;輸入提示
LEA DX, INPUT ;取INPUT偏移位址
MOV AH, 9 ;輸出一個以“$”結尾的字元串到顯示器
INT 21H
;輸入字元串到DX
LEA DX, BUFFER
MOV AH, 0AH ;從鍵盤輸入一個字元串到指定緩沖區
INT 21H
;
MOV AL, BUFFER+1
ADD AL, 2
MOV AH, 0
MOV SI, AX
MOV BUFFER[SI], '$'
;
LEA DX, CRLF
MOV AH, 9
INT 21H
;輸出提示
LEA DX, OUTPUT
MOV AH, 9
INT 21H
;輸出剛剛輸入的字元串
LEA DX, BUFFER+2
MOV AH, 9
INT 21H
;
LEA DX, CRLF
MOV AH, 9
INT 21H
;傳回DOS
MOV AH, 4CH
INT 21H
CODE ENDS ;退出DOS狀态
END START