北理计算机网络实验汇编,北理计算机和网络实验(II)(汇编语言实验3).docx

本科实验报告

实验名称: 实验三 字符串操作实验

课程名称:

计算与网络实验(II)

实验时间:

任课教师:

实验地点:

10-102

实验教师:

高平

实验类型:

■ 原理验证

□ 综合设计

□ 自主创新

学生姓名:

学号/班级:

组 号:

57

学 院:

信息与电子学院

同组搭档:

专 业:

电子信息工程

成 绩:

实验三 字符串操作实验

实验目的

熟悉串操作指令的功能与应用;

掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序;

了解汇编语言字符串处理基本流程;

实验软硬件环境

硬件环境:惠普64位一体化计算机及局域网;

软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。

实验相关知识

字符串操作流程

SI寄存器保存源串首地址;

DI寄存器保存目的串首地址;

CX寄存器保存字符串长度;

CLD或STD指令设置字符串处理方向;

当CLD指令使DF=0,在执行串处理指令时可使地址自动增量;STD使DF=1,在执行串处理指令时可使地址自动减量。

重复前缀指令

重复次数由计数寄存器CX中存放的值决定,指令每重复执行一次,计数器CX中值减1,当CX中值减至0时,停止重复执行,继续执行下一条指令。

当REP无条件重复前缀,重复串操作直到计数寄存器的内容CX为0为止。经常与REP配合工作的字符串处理指令有MOVS、STOS和LODS。

当REPE/REPZ判断计数寄存器的内容CX是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ配合工作的串指令有CMPS和SCAS。

当REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ配合工作的串指令有CMPS和SCAS。

字符串操作指令

lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI;

stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI;

movsb、movsw:把DS:SI指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF标志分别增减SI和DI;

scasb、scasw:把AL或AX中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;

cmpsb、cmpsw:把DS:SI指向的存储单元中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;

rep:重复其后的串操作指令。重复前先判断CX是否为0,为0就结束重复,否则CX减1,重复其后的串操作指令。主要用在MOVS和STOS前。一般不用在LODS前。

上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器AX、计数器CX涉及的标志位:DF、AF、CF、OF、PF、SF、ZF。

实验内容

编写程序,比较两个字符串BUF1和BUF所含的字符是否相同,相同则AL返回0,不同AL 返回1,字符串长度要求自动获取,要求用字符串处理方法。提示:输入两个字符串之后,将串操作所必须的寄存器等参数设置好,然后使用串操作指令进行从头到尾的比较,两个字符串相等的条件是串长度相等且对应的字符相同。

编写程序,设有一字符串存放在以BUF为首址的数据区中,其最后一字符‘$’作为结束标志,计算该字符串的长度并输出。提示:从串的第一个字符开始统计,直到遇到定义的字符串结束符为止,看看在这个过程中总共有多少个字符,即求得串的长度。

编写程序,将内存中BUF1某一区域的数据传送到另一区域BUF2中,要求用字符串处理方法。

编写程序,在已知字符串中搜索特定字符’#’,若找到则AL 返回0,找不到AL 返回1,要求用字符串处理方法。

编写程序,统计一串字符串中字符"&"出现的次数,要求用字符串处理方法。

编写程序,设有一字符串已存放在STRBUF为首址的数据区中,编一程序找出其中的‘#’字符,如果字符串中不存在‘#’字符则应该输出“Not found”。

实验报告要求

实验题目:实验三 字符串操作实验;

实验目的:参见实验讲义;

实验基本原理:参见实验讲义;

实验程序清单,实验框图与流程图,实验途径,实验分析,实验结果;

实验作业:实验总结报告的A4纸型一份(内容见实验报告要求1-3)及程序。

实验结果

分析:本程序的难点在于从键盘输入两字符串BUF1、BUF2。为了成功输入,要在两次输入之间加上输出回车、换行。初始化BUF1、BUF2内存区域时,应设置相同的空间大小便于后续比较BUF1、BUF2中的字符。利用0A号功能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值