马聪敏 汇编实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北电力大学

实验报告

|

|

实验名称汇编语言程序设计课程实验

课程名称汇编语言程序设计

|

|

专业班级:网络1002 学生姓名:

学号:成绩:

指导教师:王保义实验日期:2013.1

实验1 用表格形式显示字符

1、实验目的及要求

(1)实验目的

学习用汇编语言设计与编写循环程序。

(2)实验要求

按15行×16列的表格形式显示ASCII码为10H---100H的所有字符,即以行

为主的顺序及 ASCII码递增的次序一次显示对应的字符。每16个字符为一行,每行中

的相邻两个字符之间用空白符(ASCII为0)隔开。

2、所用仪器、设备

Masm for windows集成实验环境

3、实验原理

利用dos的02号显示输出功能调用,显示字符

4、实验方法与步骤

(1)编程思路:

把dl初始化为10H,然后不断使其加一以取得下一个字符的ASCII码,直到dl 为100为止。换行时用cx计数。

显示空白符时,用其ASCII码0置入dl寄存器,每行结束时,用显示回车和换

行来结束本行并开始下一行。

由于逐个显示相继的字符时,需要保存并修改寄存器内容,而显示空格,回车,换行时,也要使用寄存器,用堆栈保存相继的字符。

(2)流程图

5、分析与结论

用表格形式显示字符这个程序做起来比较简单,用语句:mov bl,15,mov cx, 16来定义15行*16列的表格,loop lie语句循环输出每行的16个字符,先比较每一行的字符是否输出16个,如果是,则转到exit用mov ax,4c00h ,int 21h输出此行的字符,同时,行计数器随之增1,当行计数器增至15,证明字符表已经输完,完全显示出来,程序结束。由于这个实验比较易于实现,先画出程序框图,之后就比较好编写,编程简单也比较快,所以没有遇到什么问题,最后的输出结果也是正确的。

实验二查找匹配字符串

一、实验目的及要求

(1)实验目的

学习用汇编语言设计与编写循环程序。

(2)实验要求

程序接收用户键入的一个关键字以及一个句子。如果句子不包含关键字则显示‘No match’;如果句子中包含关键字则显示‘Match’,且把该字在句子中的位置用十六进制数显示出来。

二、所用仪器、设备

Masm for windows集成实验环境

三、实验原理

串比较指令,压栈、出栈,循环结构

四、实验方法与步骤

(1)编程思路

输入关键字和一个句子,分别存入相应的缓冲区中。

用cx计数,初始值为句子的长度:从第一个字符开始,判断是否与关键字的第一个字符匹配,若匹配,做压栈操作,记住此时的位置,然后比较整个串(若整个串相同,匹配成功,否则不成功,出栈,继续比较下一个)。若不匹配第一个字符,cx 做减1操作,指针指向下一个字符,继续按此法匹配。当匹配成功或找到最后一个字符也没成功匹配时,输出结果。当结果为成功时,可继续输入句子匹配,当结果为失败时,结束整个程序。

(2)流程图:

五、实验结果与数据处理

六、讨论与结论

这个程序有三部分组成:

(1)输入关键字和一个句子,分别存入相应的缓冲区中,用功能调用0AH。

(2)在句子中查找关键字。

关键字和句子的比较使用串比较指令,定义一个附加段,和数据段定义为同一段,SI寄存器为关键字指针,DI寄存器为句子中正在比较的字段指针,CX为存放关键字的字母个数长度。

DI

SI

比较的循环次数为:(句子长度-关键字长度+1),计算循环次数时,如果句子长度<关键字长度,就跳转到“no match”,循环中还要用到BX寄存器保存当前比较字段的首地址。

(3)由输出结果可知,可以成功查找关键字,基本完成了实验要求。

编程中的主要问题有:

1 如何记录查找位置

2 当第一个字符匹配后,如何匹配后面的字符串。我采用的方法是一个个字符比较,但这样比较麻烦,若能用串操作指令显然更合适些

3 匹配成功后,如何输出是从那个字符开始的。如何求得计数值并送往存储单元输出,调试了多次才得到正确结果

实验3 分类统计字符个数

1、实验目的及要求

(1)实验目的

学习用汇编语言编写与设计分支循环程序。

(2)实验要求

程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其他字符分类计数,然后将结果存入以letter、digit和other 为名的存储单元中

2、所用仪器、设备

Masm for windows集成实验环境

3、实验原理

程序采用0AH功能调用把键入字符直接送到缓冲区,然后再逐个取出分类计数。需要多次用到ASC表,和数字或字符进行比较,设置了子程序display用于将二进制转换成十进制显示出来,标号exit用于输出letter,digit,others各种类型的个数。

四、实验方法与步骤

(1) 实验思路:设计一个分支循环,依次判断字符的类型并计数,直到将所有字符判断完毕后退出循环。

五实验结果与数据处理

6、讨论与结论

在做这个实验时,用到ASCII码表比较多,定义的letter,digit,others存储单元用于记录个数,lea di, string + 2 将一行字符输入string中,check标号用于将输入的字符分类,l,d,o标号用于记录分类统计的个数,exit用于输出,display子程序用于将二进制转换成10进制。

相关文档
最新文档