(1)輸入10字符串並且將他們顯示出來
DATAS SEGMENT
MESG DB 'input Character string',0dH,0ah,'$'
BUF DB 20 ;這裏的20爲指定存放字符的個數(理論上的)
DB ? ;這的?可變,實際存放字符的個數(系統自動計算)
DB 20 DUP(?) ;這裏的20是你在數據段開闢的空間
CRLF DB 0AH,0DH,'$'
DATAS ENDS
STACKS SEGMENT
DB 200 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AH,9H
MOV DX,OFFSET MESG
INT 21H ;這段功能的作用是輸出字符串MESG
MOV AH,10 ;10號中斷,接收輸入字符串,此時DX爲存放字符串的有效地址
LEA DX,BUF
INT 21H
LEA DX,CRLF
MOV AH,9
INT 21H ;這段功能是再一次輸出換行回車
MOV AL,BUF+1 ;獲取字符串中字符的個數
ADD AL,2
MOV AH,0
MOV SI,AX
MOV BUF[SI],0H ;寄存器間接尋址
LEA DX,BUF+2 ;輸出實際的字符串
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
(2)變形。
輸入10個數並且將他們反向輸出(利用了堆棧的先進先出的特點)
DATAS SEGMENT
;此處輸入數據段代碼
DATAS ENDS
STACK SEGMENT
DW 50 DUP(?)
STACK ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACK
START:
MOV AX,STACK
MOV SS,AX
MOV CX,10
L1:
MOV AH,01H
INT 21H
PUSH AX
LOOP L1
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
MOV CX,10
L2:
POP DX
MOV AH,02H
INT 21H
LOOP L2
;此處輸入代碼段代碼
MOV AH,4CH
INT 21H
CODES ENDS
END START