汇编语言程序设计实验4 算术及移位指令实验

【实验目的】

掌握字符串操作的程序设计,学习使用分支与循环等基本编程方法。

【实验内容】

【1】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。

要求:

(1)字符串的比较函数中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区,并指出不相等的位置。

(2)在字符串中查找某个字符,字符串在数据段定义,要查找的字符在程序执行时从键盘输入,并指出找到的位置。

Step1:在数据段定义缓冲区(定义在数据段方便从键盘读入),并在附加段定义带查找串:

Step2:将数据段和附加段的段地址赋给对应的寄存器DS、ES

Step3:执行0A号功能:读入字符串并送入(DX:BUFF)。读入的字符串偏移地址为BUFF+2,字节数为BUFF+1。将字节数赋给CL作为后面循环的次数。

Step4:执行循环:使用CMPSB配合循环语句对两个字符串循环比较,循环过程中令BL自增。出现第一个不相等时停下,此时BL存放的即为第一个失配的位置。这里BL保存字符是方便后面直接输出字符。

Step5:输出DL字符(如果相等则为‘Y’,否则为失配位置),结束程序

运行测试:

(输出的字符在第一个,输入IloveAHU的结果为Y,输如IloveUSTC的结果为6(在字符U处失配),符合预期)。

【2】(例5.39)在数据段中有一个字符串MESS,其长度为19,要求把它们转送到附加段中名为BUFF的一个缓冲区中,并显示出BUFF字符串。

前面部分与上题相同。这里使用MOVSB指令结合REP逐字节将MESS字符串移送到缓冲区中,并使用系统9号功能输出。

运行结果如图:

【3】(例5.40)在数据段中有一个长度为19的字符串MESS1,还有一个长度为19的字符串MESS2,比较它们是否相等。若相等显示‘Y’,否则显示 ‘N’。

本题思路同样与第一题相同,使用CMPSB循环进行比较。由于不用输出位置且不用读入字符串,所以相对简单。

运行结果:如上代码运行,得到输出为Y:

修改代码,将MESS2的字符串修改成别的串,得到N:

【4】(例5.41)附加段有一个字符串MESS,长度为19,要求查找其中有无空格符。如果找到显示‘Y’,否则显示 ‘N’

    使用SCASB命令对串进行扫描,当找到与AL(存放20H,空格符)匹配的字符串时置ZF=1并停止循环。根据ZF标志位可判断是否有空格符。

运行结果:

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值