计算机科学与技术 7 班 黄慧英 20050810705
实验四 两个字符串的比较
一、实验目的
1. 掌握子程序的编程方法
2. 掌握宏指令和宏指令调用的编程方法
二. 实验内容
编写一个程序,对键盘输入的两个字符串进行比较,输入的字符串长度不超过 80。
程序功能:
⑴ 显示”Enter the first string:”,并从键盘接受用户输入的第一个字符串
⑵ 显示”Enter the second string:”,并从键盘接受用户输入的第二个字符串
⑶ 对两个字符串进行比较
⑷ 如果两个字符串相同,则显示”The two strings are identical”;否则,显示”The two
strings are not identical”
要求:
用宏指令实现显示字符串的功能
提示:
字符串的比较可以用串比较指令来实现
三.实验原理
本实验中主要是用到宏指令的调用,先定义两个输入缓冲区 string1,string2 接受用户的输入,
然后先判断这两个字符串的长度是否相等如果不相等则提示用户两个字符串不相等并退出
具体实现的原理:
String1 db 80,0, 81 dup(?)
当用户输入完字符串到 string1 中时,系统将会自动设置 string1 缓冲区第 1 字节的内容为用户
输入的字符个数(不包括回车)。因此我们就可以比较 string1 与 string2 中的第 1 字节的内
容是否相等,就等价于判断两字符串的长度是否相等。
如果两个字符串的长度相等,接下来就要逐个判断每个字符是否相等,具体实现:
使用串比较 cmpsb 指令来比较 cmpsb 执行的操作是将[si]与[di]的内容相比较如过相等则
ZF=1 不等 ZF=0,同时将 SI+1—>SI,DI+1->DI
由于字符串中的字符个数比较的多我们可以使用 REPE 指令进行循环比较,先把字符串的
个数值存入到 cx 中,使用 repe cmpsb 指令系统将会逐个比较两个字符串的字符是否相等直
至不相等或比较完后退出循环。
具体代码实现如下所示:
.model small
.486
.data
string1 db 80, 0, 81 dup(?) ;定义字符串的长度最大不能超过 80
string2 db 80, 0, 81 dup(?)
output1 db 'Enter the first string:$' ;提示用户输入第一个字符串
output2 db 0dh, 0ah, 'Enter the second string:$' ;提示用户输入第二个字符串