;利用DOS功能调用9、10实现从键盘输入一串字符 “abcde”,然后输出3次。注:字符串长度不超过5个字符
assume cs:code, ds:data
data segment
INPUT DB 0Ah,0DH,"Please Input a string:$"
CRLF DB 0AH,0DH,'$'
BUF db 5 ;字符串长度不超过5个字符,所以这里是5
db ?
db 5 dup (?) ;字符串长度不超过5个字符,所以这里是5
NUM db 3 ;然后输出3次,所以这里是3
data ends
stack segment
db 16 dup (?)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10H
;显示提示字符串Please input a string:
lea dx,INPUT
mov ah,9
int 21h
;接受用户输入的字符串
lea dx,BUF
mov ah,10
int 21h
;输出回车空行
lea dx,CRLF
mov ah,9
int 21h
;cx清0
xor cx,cx
;NUM = 3,所以cl = 3,输出3次字符串
mov cl,NUM
next: push cx
;获取用户输入的字符串的字符个数
mov cl,BUF+1
;获取存放用户输入的字符串的偏移地址
lea si,BUF+2
next1:
;获取字符,然后输出
mov dl,[si]
mov ah,2
int 21h
inc si
loop next1
lea dx,CRLF
mov ah,9
int 21h
pop cx
loop next
mov ax,4c00h
int 21h
code ends
end start
PS:若有不明白的地方,可以追问
追问好复杂啊,有没有别的简单点的方法?有一个提示如下:
DATA SEGMENT
MAX DB 10
ACT DB 0
STR DB 10 DUP(‘$’)
DATA ENDS