欢迎来到天天文库
浏览记录
ID:24626129
大小:266.50 KB
页数:32页
时间:2018-11-15
《汇编语言程序设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、综合实验报告(2014--2015年度第一学期)名称:《汇编语言程序设计》综合实验题目:汇编语言程序设计院系:控制与计算机工程学院班级:计科1203学号:201209010324学生姓名:张毅民指导教师:王保义王蓝婧设计周数:一周成绩:日期:2015年1月实验一用表格形式显示字符一、实验要求按15*16列的表格形式显示ASCⅡ码为10H—100H的所有字符,即以行为主的顺序及ASCⅡ码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符隔开。二、设计思路1.设两个计数值,行和列,分别为15、16,输出一个字符,输出一个空格,
2、字符加1,判断是否输完一行,未输出完继续输出字符。每行输完后,输出回车换行符,判断是否输玩15行,未输出完,从新输出新的一行。2.流程图开始初始化cx(16)显示dldl+1cx为0?换行bx为0?结束初始化bx(15)dl(10h)bx-1三、设计要点、细节(1)显示每个字符可使用功能号为02的显示输出功能调用:Movah,02hMovdl,输出字符的ASCⅡ码Int21h将dl初始化为10H,然后使用其加1以取得下一个字符的ASCⅡ码。(2)显示空白符是,用其ASCⅡ码置0入dl寄存器。每行结束时,用回车和换行来结束本行并开始下一行。(3)由于逐个显
3、示相继的ASCⅡ码字符是,需要不断修改dl寄存器的内容,而显示空白、回车、换行也需要使用dl寄存器,为此可使用堆栈保存dx。(即pushpop指令)四、实验程序及调试结果CODESSEGMENT;**********************************************ASSUMECS:CODESSTART:Movbx,15movdl,10hloop:movcx,16next:movah,02hint21hincdl;-----------------输出空格pushdxmovdl,0int21hpopdxloopnext;未输完一行继
4、续输出;--------------每行输完,输出换行回车pushdxmovdl,0dhint21hmovdl,0ahint21hpopdxdecbxjneloop;未输完15行从新输入下一行exit:retCODESENDSENDSTART五、实验结果六、实验心得本次实验是我初次实际上机编写汇编实验,实验很简单,但在编写中出现大大下小不少问题,在修改程序的过程中也渐渐熟悉了MASM软件,并且也简单了解了调试功能。本次实验我具体地了解到了如何输出单个字符(及2号功能调用DOS),也熟悉了用堆栈保存信息,并简单了解了循环程序设计。实验二查找匹配字符串一、实
5、验要求程序接受用户键入的一个关键字以及一个句子,如果句子中不包含关键字则显示“Nomatch!”;如果句子中包含关键字则显示“match!”,且把该字在句子中的位置用十六进制数显示出来。要求程序的执行过程如下:Enterkeyword:abcEntersentence:wearestudyingabcMatchatlocation:11HofthesentenceEntersentence:xyzNomatch!Entersentence:二、设计思路1.输入关键字和一个句子,分别存入相应的缓冲区中(用功能调用2ah)。在句子中查找关键字用串比较命令cm
6、psb并加前缀repnz,SI为寄存器为关键字的指针,DI为寄存器为句子中正相比较的字段的指针,CX为寄存器存放关键字的字母个数(长度),整个句子和关键字的比较过程可以用一个循环结构来完成,循环次数为:(句子长度-关键字长度)+1;在计算循环次数时,如遇到句子长度小于关键字长度的情况则应转向显示“nomatch”,循环中还需要用到BX寄存器,它用来保存句子中当前正在比较字段的首地址。比较完成有两种情况一种为句子比较完成,一种为在句子中找到与关键字相同的段,两种区别就是cx是否为零,为零则match。最后再用二进制转换十六进制将bx的数显示出来,即为关键字
7、在句子中的位置。2.流程图三、设计细节、要点(1)输入关键字和一个句子,分别存入相应的缓冲区中。可用功能调用0AH。(2)在句子中查找关键字:关键字和句子中相应字段的比较可使用串比较指令。为此必须定义附加段,但附加段和数据段可以定义为同一段,以便于串指令的使用,相应的寄存器内容也有了确定的含义,即如下:SI寄存器为关键字的指针DI寄存器为句子中正相比较的字段的指针CX寄存器存放关键字的字母个数(长度)整个句子和关键字的比较过程可以用一个循环结构来完成,循环次数为:(句子长度-关键字长度)+1在计算循环次数时,如遇到句子长度小于关键字长度的情况则应转向显示
8、“nomatch”,循环中还需要用到BX寄存器,它用来保存句子中当前正在比较字段
此文档下载收益归作者所有