字符及字符串的输入输出
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四字符及字符串的输入输出1 实验目的
掌握简单的DOS系统功能调用
掌握在PC机上建立,汇编,连接,调试程序
2 实验内容
内容一:字符的输入和输出
从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母。
程序段:
CSEG SEGMENT
ASSUME CS:CSEG
START:MOV AH,1
INT 21H
MOV BL,7AH
MOV CL,61H
SUB BL,AL
ADD BL,CL
MOV AL,BL
MOV DL,AL
MOV AH,2
INT 21H
KEY:MOV AH,1
INT 16H
JZ KEY
MOV AH,4CH
INT 21H
CSEG ENDS
END START
实验结果截图如下:
实验习题:
程序段:
DSEG SEGMENT
STRING1 DB 'Please input a lowercase letter:',0DH,0AH,'$'
STRING2 DB 'The inverse letter is:',0DH,0AH,'$'
DSEG ENDS
;
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
MOV DS,AX
LEA DX,STRING1
MOV AH,09H
INT 21H
MOV AH,1
INT 21H
MOV BL,7AH
MOV CL,61H
SUB BL,AL
ADD BL,CL
LEA DX,STRING2
MOV AH,09H
INT 21H
MOV DL,BL
MOV AH,2
INT 21H
KEY:MOV AH,1
INT 16H
JZ KEY
MOV AH,4CH
INT 21H
CSEG ENDS
END START
实验截图如下:
内容二:字符串的输入和输出
从键盘输入一个字符串,将输入的字符串传说给STR变量,在屏幕上显示STR变量中的内容。程序段:
DSEG SEGMENT
KBUF DB 0DH,0AH
STR DB 20 DUP(20H),'$'
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA DX,KBUF
MOV AH,0AH
INT 21H
MOV CX,20
ADD DX,2
MOV SI,DX
LEA DI,STR
NEXT:MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP NEXT
MOV DX,STR
MOV AH,9
INT 21H
KEY:MOV AH,1
INT 16H
JZ KEY
MOV AH,4CH
INT 21H
CSEG ENDS
END START
运行结果截图如下:
实验习题要求:
程序段:
DSEG SEGMENT
STRING1 DB 'Please input a string:',0DH,0AH,'$' STRING2 DB 'The string you input is:',0DH,0AH,'$' KBUF DB 0DH,0AH
CRLF DB 0DH,0AH
STR DB 20 DUP(20H),'$'
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA DX,STRING1
MOV AH,09H
INT 21H
LEA DX,KBUF
MOV AH,0AH
INT 21H
MOV CX,0
ADD DX,2
MOV SI,DX
LEA DI,STR
NEXT:MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP NEXT
LEA DX,STRING2
MOV AH,09H
INT 21H
LEA DX,STR
MOV AH,9
INT 21H
KEY:MOV AH,1
INT 16H
JZ KEY
MOV AH,4CH
INT 21H
CSEG ENDS
END START
实验结果如下截图:
三思考题
1.DOS系统功能调用的10号功能对键盘缓冲区格式地要求:第一个字节为输入字符串的最大长度,第二个字节用来存放实际输入字符串的长度,从第三个字节开始存放实际输入的字符串的ASCII码;
2.DOS系统功能中的1、2、9、10号功能的输入输出参数及存放的寄存器关系如下表:
3.字符和字符串的输入输出的实现都需要调用相应功能号,并产生相应的中断,即先给AX赋值所需的功能号,然后产生21H中断,输入的单字符会存放在AL中,输出单字符前需要把字符ASCII码存放到DL中,输入输出字符串,需要先把字符缓冲区首址存放到DS:DS寄存器中。