(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