实验四 字符处理程序设计
一、实验目的
1. 学习字符处理的相关指令,加深对这些指令的理解和运用。
2. 掌握字符处理程序设计、编写及调试方法。
3. 掌握在程序设计中合理利用字符串的尾符。
二、实验准备
1. 复习教材中与字符处理指令相关的内容。
2. 已知字符串“aBCEFghi15OXyZ ”以0DH 作为结束标志,编写程序1:从头搜索字符串的结束标志,统计搜索的字符个数,并画出流程图。
3. 编写程序2:从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母,并画出流程图。例如输入首字母a ,则输出最后一个字母z ,输入第4个字母d 则输出倒数第4个字母w 。
4. 分析程序的结果,并准备好上机调试。
三、实验内容
1.已知字符串“aBCEFghi15OXyZ ”以0DH 作为结束标志,编写程序1:从头搜索字符串的结束标志,统计搜索的字符个数
实验代码如下:
DATA SEGMENT
X DB 'aBCEFghi150XyZ',0DH
Y DB ?
Z DB 0DH
DATA ENDS ;数据段
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX ;将DATA 赋给ES
MOV DI,offset X ;将X 的首地址赋给DI
MOV AL,Z
MOV CL,0
CLD ;方向标志位清零
AGAIN:
SCASB ;搜索
JZ OUTPUT ;如果该位与0DH 相同则跳转到OUTPUT
INC CL ;CL+1
JNZ AGAIN ;如果该位与0DH 不同则继续
OUTPUT:
MOV Y,CL ;将字符个数送入Y 中
MOV AH,4CH
INT 21H
CODE ENDS
END START
统计的字符个数存放在Y 中,实验结果如下:
2. 编写程序2:从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母,并画出流程图。例如输入首字母a ,则输出最后一个字母z ,输入第4个字母d 则输出倒数第4个字母w 。
程序代码:
DATA SEGMENT
S DB "INPUT A CHAR:",0AH,0DH,"$" ;定义开头语
X DB 00H,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET S
MOV AH,9
INT 21H ;输出提示语
MOV AH,01H
INT 21H ;输入数据
MOV CL,0DBH
SUB CL,AL
MOV X,CL
MOV DX,OFFSET X
MOV AH,09H
INT 21H ;输出结果
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行程序:
3. 修改程序2实现从键盘读入一个大写字母,输出字母表中倒数与该字母序号相同的那个大写字母;
程序代码:
DATA SEGMENT
S DB "INPUT A CHAR:",0AH,0DH,"$" ;定义开头语
X DB 00H,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET S
MOV AH,9
INT 21H ;输出提示语
MOV AH,01H
INT 21H ;输入数据
MOV CL,09BH
SUB CL,AL
MOV X,CL
MOV DX,OFFSET X
MOV AH,09H
INT 21H ;输出结果
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行程序:
4. 从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个大写字母. 程序代码:
DATA SEGMENT
S DB "INPUT A CHAR:",0AH,0DH,"$" ;定义开头语
X DB 00H,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET S
MOV AH,9
INT 21H ;输出提示语
MOV AH,01H
INT 21H ;输入数据
MOV CL,09BH
SUB AL,20H ;先将小写字母换成大写字母
SUB CL,AL
MOV X,CL
MOV DX,OFFSET X
MOV AH,09H
INT 21H ;输出结果
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行程序:
实验四 字符处理程序设计
一、实验目的
1. 学习字符处理的相关指令,加深对这些指令的理解和运用。
2. 掌握字符处理程序设计、编写及调试方法。
3. 掌握在程序设计中合理利用字符串的尾符。
二、实验准备
1. 复习教材中与字符处理指令相关的内容。
2. 已知字符串“aBCEFghi15OXyZ ”以0DH 作为结束标志,编写程序1:从头搜索字符串的结束标志,统计搜索的字符个数,并画出流程图。
3. 编写程序2:从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母,并画出流程图。例如输入首字母a ,则输出最后一个字母z ,输入第4个字母d 则输出倒数第4个字母w 。
4. 分析程序的结果,并准备好上机调试。
三、实验内容
1.已知字符串“aBCEFghi15OXyZ ”以0DH 作为结束标志,编写程序1:从头搜索字符串的结束标志,统计搜索的字符个数
实验代码如下:
DATA SEGMENT
X DB 'aBCEFghi150XyZ',0DH
Y DB ?
Z DB 0DH
DATA ENDS ;数据段
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX ;将DATA 赋给ES
MOV DI,offset X ;将X 的首地址赋给DI
MOV AL,Z
MOV CL,0
CLD ;方向标志位清零
AGAIN:
SCASB ;搜索
JZ OUTPUT ;如果该位与0DH 相同则跳转到OUTPUT
INC CL ;CL+1
JNZ AGAIN ;如果该位与0DH 不同则继续
OUTPUT:
MOV Y,CL ;将字符个数送入Y 中
MOV AH,4CH
INT 21H
CODE ENDS
END START
统计的字符个数存放在Y 中,实验结果如下:
2. 编写程序2:从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母,并画出流程图。例如输入首字母a ,则输出最后一个字母z ,输入第4个字母d 则输出倒数第4个字母w 。
程序代码:
DATA SEGMENT
S DB "INPUT A CHAR:",0AH,0DH,"$" ;定义开头语
X DB 00H,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET S
MOV AH,9
INT 21H ;输出提示语
MOV AH,01H
INT 21H ;输入数据
MOV CL,0DBH
SUB CL,AL
MOV X,CL
MOV DX,OFFSET X
MOV AH,09H
INT 21H ;输出结果
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行程序:
3. 修改程序2实现从键盘读入一个大写字母,输出字母表中倒数与该字母序号相同的那个大写字母;
程序代码:
DATA SEGMENT
S DB "INPUT A CHAR:",0AH,0DH,"$" ;定义开头语
X DB 00H,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET S
MOV AH,9
INT 21H ;输出提示语
MOV AH,01H
INT 21H ;输入数据
MOV CL,09BH
SUB CL,AL
MOV X,CL
MOV DX,OFFSET X
MOV AH,09H
INT 21H ;输出结果
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行程序:
4. 从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个大写字母. 程序代码:
DATA SEGMENT
S DB "INPUT A CHAR:",0AH,0DH,"$" ;定义开头语
X DB 00H,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET S
MOV AH,9
INT 21H ;输出提示语
MOV AH,01H
INT 21H ;输入数据
MOV CL,09BH
SUB AL,20H ;先将小写字母换成大写字母
SUB CL,AL
MOV X,CL
MOV DX,OFFSET X
MOV AH,09H
INT 21H ;输出结果
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行程序: