马聪敏 汇编实验报告.docx
- 文档编号:1837915
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:34
- 大小:28.89KB
马聪敏 汇编实验报告.docx
《马聪敏 汇编实验报告.docx》由会员分享,可在线阅读,更多相关《马聪敏 汇编实验报告.docx(34页珍藏版)》请在冰豆网上搜索。
马聪敏汇编实验报告
(此文档为word格式,下载后您可任意编辑修改!
)
华北电力大学
实验报告
|
|
实验名称汇编语言程序设计课程实验
课程名称汇编语言程序设计
|
|
专业班级:
网络1002学生姓名:
学号:
成绩:
指导教师:
王保义实验日期:
2013.1
实验1用表格形式显示字符
1、实验目的及要求
(1)实验目的
学习用汇编语言设计与编写循环程序。
(2)实验要求
按15行×16列的表格形式显示ASCII码为10H---100H的所有字符,即以行为主的顺序及ASCII码递增的次序一次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。
2、所用仪器、设备
Masmforwindows集成实验环境
3、实验原理
利用dos的02号显示输出功能调用,显示字符
4、实验方法与步骤
(1)编程思路:
把dl初始化为10H,然后不断使其加一以取得下一个字符的ASCII码,直到dl为100为止。
换行时用cx计数。
显示空白符时,用其ASCII码0置入dl寄存器,每行结束时,用显示回车和换行来结束本行并开始下一行。
由于逐个显示相继的字符时,需要保存并修改寄存器内容,而显示空格,回车,换行时,也要使用寄存器,用堆栈保存相继的字符。
(2)流程图
5、分析与结论
用表格形式显示字符这个程序做起来比较简单,用语句:
movbl,15,movcx,16来定义15行*16列的表格,looplie语句循环输出每行的16个字符,先比较每一行的字符是否输出16个,如果是,则转到exit用movax,4c00h,int21h输出此行的字符,同时,行计数器随之增1,当行计数器增至15,证明字符表已经输完,完全显示出来,程序结束。
由于这个实验比较易于实现,先画出程序框图,之后就比较好编写,编程简单也比较快,所以没有遇到什么问题,最后的输出结果也是正确的。
实验二查找匹配字符串
一、实验目的及要求
(1)实验目的
学习用汇编语言设计与编写循环程序。
(2)实验要求
程序接收用户键入的一个关键字以及一个句子。
如果句子不包含关键字则显示‘Nomatch’;如果句子中包含关键字则显示‘Match’,且把该字在句子中的位置用十六进制数显示出来。
二、所用仪器、设备
Masmforwindows集成实验环境
三、实验原理
串比较指令,压栈、出栈,循环结构
四、实验方法与步骤
(1)编程思路
输入关键字和一个句子,分别存入相应的缓冲区中。
用cx计数,初始值为句子的长度:
从第一个字符开始,判断是否与关键字的第一个字符匹配,若匹配,做压栈操作,记住此时的位置,然后比较整个串(若整个串相同,匹配成功,否则不成功,出栈,继续比较下一个)。
若不匹配第一个字符,cx做减1操作,指针指向下一个字符,继续按此法匹配。
当匹配成功或找到最后一个字符也没成功匹配时,输出结果。
当结果为成功时,可继续输入句子匹配,当结果为失败时,结束整个程序。
(2)流程图:
五、实验结果与数据处理
六、讨论与结论
这个程序有三部分组成:
(1)输入关键字和一个句子,分别存入相应的缓冲区中,用功能调用0AH。
(2)在句子中查找关键字。
关键字和句子的比较使用串比较指令,定义一个附加段,和数据段定义为同一段,SI寄存器为关键字指针,DI寄存器为句子中正在比较的字段指针,CX为存放关键字的字母个数长度。
DI
SI
比较的循环次数为:
(句子长度-关键字长度+1),计算循环次数时,如果句子长度<关键字长度,就跳转到“nomatch”,循环中还要用到BX寄存器保存当前比较字段的首地址。
(3)由输出结果可知,可以成功查找关键字,基本完成了实验要求。
编程中的主要问题有:
1 如何记录查找位置
2 当第一个字符匹配后,如何匹配后面的字符串。
我采用的方法是一个个字符比较,但这样比较麻烦,若能用串操作指令显然更合适些
3 匹配成功后,如何输出是从那个字符开始的。
如何求得计数值并送往存储单元输出,调试了多次才得到正确结果
实验3分类统计字符个数
1、实验目的及要求
(1)实验目的
学习用汇编语言编写与设计分支循环程序。
(2)实验要求
程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其他字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中
2、所用仪器、设备
Masmforwindows集成实验环境
3、实验原理
程序采用0AH功能调用把键入字符直接送到缓冲区,然后再逐个取出分类计数。
需要多次用到ASC表,和数字或字符进行比较,设置了子程序display用于将二进制转换成十进制显示出来,标号exit用于输出letter,digit,others各种类型的个数。
四、实验方法与步骤
(1)实验思路:
设计一个分支循环,依次判断字符的类型并计数,直到将所有字符判断完毕后退出循环。
五实验结果与数据处理
6、讨论与结论
在做这个实验时,用到ASCII码表比较多,定义的letter,digit,others存储单元用于记录个数,leadi,string+2将一行字符输入string中,check标号用于将输入的字符分类,l,d,o标号用于记录分类统计的个数,exit用于输出,display子程序用于将二进制转换成10进制。
在内循环中,找出字符串属于哪类,首先判断键入字符是否为回车,是则转到exit,与0比较,小于则为其他类型,转到others,否则与9比较,30h<=x<=39h,转到digit,39h 后面的子程序用除10取余的方法将二进制转换成十进制数。 本次实验成功实现了题目的要求,可以统计输入字符类别的个数 在实验中遇到的问题主要有: 如何将统计的十六进制计数值用十进制输出,解决方法: 将结果除以10,余数为十进制数的个位,商为十进制数的十位数。 实验4电话簿 一、实验目的及要求 (1)实验目的 学习用汇编语言设计与编写子程序 (2)实验要求 要求程序建立一个可存放50项的电话号码表,每项包括人名(20个字符)及电话号码(8个字符)两部分; 程序可接受输入人名及相应的电话号码,并把它们加入电话号码表中; 凡有新的输入后,程序应按人名对电话号码表重新排序; 程序可接受需要查找电话号码的人名,并从电话号码表中查出其电话号码,再在屏幕上以如下格式显示出来。 nametel. 二、所用仪器、设备 Masmfor windows集成 实验环境 三实验原理 流程图: 实验结果: 输入: 姓名查找: 号码查找: 实验思路: 设计一个分支循环,依次判断字符的类型并计数,直到将所有字符判断完毕后推出循环。 流程图见上面。 五、讨论与结论 实验分析: PRINTMACROX1宏定义显示字符串,INPUTMACROX1宏定义出入字符串,RENEWMACROMING,WEI宏定义将输入缓冲区还原,QUHCMACROTEMP,T宏定义删除回车符号,首先,将数据输入到缓冲区QUHCT_TEMP,T_T,根据记录排序(按首字母顺序),接着根据使用者键入的数字(1,2,3,4)去选择输入,查找,列表,推出。 如果选择2查找,还有两个选项,根据姓名或者电话号码查找到。 如果输入错误,则回到初始界面。 list用于显示电话表,本次实验基本实现了题目的要求,但有些功能没有实现,另外还有些功能与题目的要求不一样,是按照自己的想法做的在实验中遇到的问题主要有: 如何对存入的电话簿排序,解决方法: 参考其他同学的算法以及上网查找资料,实现这一子程序。 在这个程序中,存入的号码数是有自己输入的。 为了将输入的十进制数转换成16进制数,先要判断是否为数字,然后再参考课本P84页的程序。 如何在已有的基础上可以继续添加人数,存入电话号码。 解决方法: 未解决,留待课程设计是完善,但是总体还是成功的。 实验五窗口控制程序 一实验目的及要求: 窗口控制程序首先清除屏幕,紧接着在屏幕中间生成一个小窗口,左上角行列坐标为(10,30),右下角坐标为(15,40),光标定位在(0,0),当按动光标控制键时,光标能上下左右移动,当光标移动到指定位置时,按下END键,此时,光标的左上角位置作为窗口左上角位置,或作为右下角扩大或缩小原来的屏幕窗口。 二实验原理: (0,0)x (lux,luy) (rdx,rdy) (24,79) y 编写程序时,多次用到清屏,生成窗口,光标定位,卷屏等功能,用BIOS10H的卷屏功能ah=6或ah=7,然后调用10HROM例行程序。 三实验结果: 1清屏并在屏幕中心生成一个小窗口: 如上 2按end键,以光标初始位置(0,0)为左上角坐标形成新窗口: 3按光标控制键移动光标至12行79列: 4边界控制和上卷功能: 五程序分析总结: 编写程序过程中,清屏,生成窗口,光标定位分别定义为宏指令clear,scroll,postc,清屏用的是BIOS10H的卷屏功能,ah=6或ah=7,给定左上角参数(0,0),右下角参数为(24,79),属性为07,调用10HROM,完成清屏 键盘输入使用INT16H,的0号功能,如键入一个光标移动键,控制光标在25*80的范围内移动,按下END键,则以当前光标位置作为新设置的坐标生成新的窗口。 按下ESC,退出程序返回DOS。 键入其他可显示字符,可以在窗口范围内显示,字符如果超过窗口的有边界,就从下面一行显示。 在光标定位后生成新窗口之前,用setxy实现坐标代换,把光标的行号和列号代换为窗口左上或右下角坐标,在生成新窗口之前,还要用clear进行一次清屏操作。 我在编写代码的时候借鉴了实验指导书84页的程序,有所改动,在设计思路上没有想到以坐标的形式表现出来,这个程序DOS调用很多,在上课的时候学的不扎实,导致编程的时候想不到要用什么调用,硬翻书。 在程序调试的过程中,在顺序和跳转标号上面出了很大问题,经过研究生的帮助,把错误都改好了,程序圆满完成。 实验六扩充键盘处理功能 一实验目的及要求: 增加left_shift键和right_shift键的功能,及按下这两个键同时,又按下0~9或a~z,则cpu取得并显示的是键的上档符号或是大写字母。 二实验原理 在键盘内部,有一个微处理机INTEL8048,从系统板接收到时钟信号,读取每个键的字符,将其扫描码放在8255外围接口,芯片的PA端口(60h)内,键盘正常工作时,第6位总是1,否则,关闭键盘。 PB端口的第7位置1时,发送应答信号给键盘微处理机。 每当按下键或放开键,在8048将其扫描码送入PA端口的同时,还产生一个类型为09h的中断,任务是: 读扫描码并把应答信号送到键盘,把扫描码转换成ASCII码或转换键状态。 将键入的字符输入到缓冲队列,循环状态为空(bufpt1=bufpt2) bufpt1 0123...................15 bufpt2 键盘输入的字符存入缓冲队列,如果bufpt1=bufpt2,从队列中取出一个字符,数据段定义了转换表scantab,可以显示字符或者其他控制键。 三实验数据 六程序分析总结 整个程序由几个部分组成: 主程序start,保存,设置,回复键盘中断向量,设置中断向量屏蔽为并开中断。 从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 马聪敏 汇编实验报告 聪敏 汇编 实验 报告