版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o"1-2"\h\z\u1任务分析 11.1进位计数制分析 11.2进制转换 22程序设计流程 32.1程序流程图 32.1设计思路 43程序设计 53.1堆栈段数据段程序设计 53.2主程序设计 63.3换行子程序CRLF 73.4输入二进制数子程序INBIN 73.5输出八进制数子程序OUTOCT 83.6输出十进制数子程序OUTDEC 93.7输出十六进制数子程序OUTHEX 94调试结果分析 104.1调试过程 104.2结果记录 115心得体会 12参考文献 13附件:源程序 14数制转换程序设计1任务分析1.1进位计数制分析进位计数制是人们利用符号来计数的方法。一种进位计数制包含一组数码符号和两个根本因素。数码是用不同的数字符号来表示一种数制的数值,这些数字符号位“数码〞。基是数制所使用的数码个数称为“基〞。权是某数制每一个所具有的值称为“权〞。二进制〔Binary〕是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规那么是“逢二进一〞,借位规那么是“借一当二〞,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的根本上是二进制系统。八进制〔Octal〕逢八进一,基数为八,根本符号:0、1、2、3、4、5、6、7。位权8∧i。表示符号:O,并且开头一定要以数字0开头。八进制的数较二进制的数书写方便,常应用在电子计算机的计算中。十进制〔Decimal〕逢十进一,根本符号:0、1、2、3、4、5、6、7、8、9。十六进制〔Hexadecimal〕是计算机中数据的一种表示方法.同我们日常中的十进制表示法不一样.它由0-9,A-F,组成.与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0(N-1)的数表示超过9的用字母A-F。在编程中十六进制数常用“0x〞作为开头。1.2进制转换二进制转换为八进制对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,假设整数局部倍数不是3的倍数,可以在最高位前面补假设干个0;对小数局部,当其位数不是的倍数时,在最低位后补假设干个0.然后从左到右把每组的八进制码依次写出,即得转换结果。二进制转换为十进制不分整数和小数部门,方法〔按权相加法〕是将二进制每位上的数乘以权,然后相加之和既是十进制数。二进制转换为十六进制用取四合一法,即从二进制的小数点为分界点,向左〔向右〕每四位取一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左〔向右〕取四位后,取到最高〔最低〕位时候,如果无法凑足四位,可以在小数点最左边〔最右边〕,即整数的最高位〔最低位〕添0,凑足四位。2程序设计流程2.1程序流程图开始 开始显示MENU显示MENU从键盘输入一个数从键盘输入一个数YYDONE输入的数是否小于3?DONE输入的数是否小于3?NN显示error显示error重新显示MENU重新显示MENU假设数字为0,那么退出输入一个二进制数输入一个二进制数数字为2,调用子程序L2数字为3,调用子程序L3数字为1,调用子程序L1DONE假设数字为0,那么退出输入一个二进制数输入一个二进制数数字为2,调用子程序L2数字为3,调用子程序L3数字为1,调用子程序L1DONE输出八进制数输入一个二进制输出八进制数输入一个二进制数输出十进制数输出十进制数输出十六进制数输出十六进制数结束结束图1主流程图2.1设计思路首先对原理进行分析,了解不同进制数之间是如何进行转换。充分认识汇编语言的指令系统掌握各个汇编指令的功能及用法,了解各种程序结构〔顺序。分支。循环和子程序〕的特点。首先定义堆栈段,再定义数据段,在数据段中输入MENUE中药显示的内容。再建一个表TABLE,TABLE中的内容为L0、L1、L2、L3,然后根据题目要求设计简单的程序流程图,在根据流程图设计出每一个模块的汇编语言程序,然后再通过调用、跳转、转移等方法将各个程序连接在一起。这样根据题目要求的汇编程序就初步完成看,本次用到的软件是MasmforWindows集成实验环境,首先在MasmforWindows集成实验环境下输入设计的汇编程序,然后编译、连接、运行。3程序设计3.1堆栈段数据段程序设计首先定义堆栈段的程序,程序如下所示:STACKSEGMENTSTACKDB200DUP(?)STACKENDS在数据段中有后面程序要用到的数据MENU,mess1到mess4和error,有数据表TABLE。定义数据段程序如下所示:DATASEGMENTMENUdb'PleaseInputyourChoice:',0dh,0ahdb'1:Bin-->Oct8',0dh,0ahdb'2:Bin-->Dec10',0dh,0ahdb'3:Bin-->Hex16',0dh,0ahdb'0:Exit',0dh,0ah,'$'mess1db'pleaseinputaBinnumber:$'mess2db'OutputOctis:$'mess3db'OutputDecis:$'mess4db'OutputHexis:$'errordb'Error!PleaseInputyourChoiceagain:$'TABLEdwL0,L1,L2,L3DATAENDS3.2主程序设计在定义完堆栈段和数据段后,就是主程序的设计。首先对存放器AX清零,压栈。读取数据,在屏幕上显示字符串MENU,再根据MENU的提示,从键盘输入一个字符串。将该字符串减30H后于3进行比拟,假设小于3,那么跳转到DONE程序,否那么调用报警程序,发出声音报警并提示error。在DONE程序中,假设输入数字为1,那么跳转到L1,进行二进制转换为八进制;假设输入的数字为2,那么跳转到L2,进行二进制转换为十进制;假设输入数字为3,那么跳转到L3,进行二进制转换为十六进制;如果为0,那么退出程序,结束。主程序的设计如下所示:CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXL:LEADX,MENU;显示字符串MENUMOVAH,09HINT21HMOVAH,01HINT21HSUBAL,30HCMPAL,3JBDONE;小于3那么跳转到DONELEADX,errorMOVAH,09HINT21HJMPLDONE:LEASI,TABLEMOVAH,0SHLAX,1ADDSI,AXJMP[SI]L1:CALLINBINCALLCRLFCALLOUTOCTCALLCRLFJMPLL2:CALLINBINCALLCRLFCALLOUTDECCALLCRLFJMPLL3:CALLINBINCALLCRLFCALLOUTHEXCALLCRLFJMPLL0:MOVAH,4CHINT21H3.3换行子程序CRLF将0DH〔回车〕,0AH〔换行〕输出,到达换行的效果,子程序模块如下:CRLFPROCMOVAH,02HMOVDL,0DHINT21HMOVDL,0AHINT21HRETCRLFENDS3.4输入二进制数子程序INBIN二进制数从键盘输入之后只需要直接完成从键盘想内存的循环输入即可,其子程序如下:INBINPROCNEARLEADX,mess1MOVAH,09HINT21HMOVBX,0INBINL1:MOVAH,01HINT21HCMPAL,0DHJZINBINL2ANDAL,01HSHLBX,1ORBL,ALJMPINBINL1INBINL2:RETINBINENDS3.5输出八进制数子程序OUTOCT将内存中存储的二进制数输出为八进制数,需要将内存中的代码进行移位运算,将3位二进制数合并为1位八进制数,再循环输出显示,其子程序如下:OUTOCTPROCNEARLEADX,mess2MOVAH,09HINT21HOCT1:ROLBX,1MOVAX,BXANDAL,01HADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVCH,5OCT2:MOVCL,3ROLBX,CLMOVAL,BLANDAL,07HADDAL,30HMOVDL,ALMOVAH,2INT21HDECCHJNZOCT2RETOUTOCTENDP3.6输出十进制数子程序OUTDEC将内存中存储的二进制数输出为10进制数,需要将内存中的码进行除法运算,再循环输出显示,其子程序如下:OUTDECPROCLEADX,mess3MOVAH,09HINT21HMOVCX,10000CALLDECL1MOVCX,1000CALLDECL1MOVCX,100CALLDECL1MOVCX,10CALLDECL1MOVCX,1CALLDECL1RETOUTDECENDPDECL1PROCNEARMOVAX,BXMOVDX,0DIVCXMOVBX,DXMOVDL,ALADDDL,30HMOVAH,2INT21HRETDECL1ENDP3.7输出十六进制数子程序OUTHEX将内存中存储的二进制数输出为十六进制数,需要将内存中的代码进行移位运算,将4位二进制数合并为1位十六进制数,再循环输出显示,其子程序如下:OUTHEXPROCLEADX,mess4MOVAH,09HINT21HMOVCX,4MOVAL,0HEXL1:ROLBX,1RCLAL,1ROLBX,1RCLAL,1ROLBX,1RCLAL,1ROLBX,1RCLAL,1MOVDL,ALANDDL,0FHADDDL,30HCMPDL,39HJBEHEXL2ADDDL,7HEXL2:MOVAH,02HINT21HLOOPHEXL1RETOUTHEXENDP4调试结果分析4.1调试过程调试过程主要由编辑、汇编、链接和执行等几个步骤组成。1〕源程序的编辑:编辑好汇编语言源程序后,保存为.asm文件。2〕源程序的汇编:调用汇编程序对源程序进行翻译,生成.OBJ的目标文件。在汇编过程中,源程序有错误生不成目标文件,经过屡次修改最终生成目标文件。3〕目标程序的连接:调用链接程序〔LINK〕将用户目标程序和库文件进行链接、定位,生成.EXE可执行文件。4〕调试可执行程序:刚开始可执行程序运行之后没有得到预想的结果,又重新检查源程序的算法错误,重新编辑、汇编、链接和执行,得到了预想的结果。4.2结果记录经过屡次调试、修改,测试结果胜利通过,符合要求:在MasmforWindows集成实验环境上输入该汇编程序,点击运行,这时弹出窗口,显示MENU,窗口如图2所示:图2首先进行二进制转换为八进制,在窗口中输入1,这时窗口提示“PleaseInputaBinnumber:〞,输入二进制数10100101,窗口显示结果如图3所示:图3假设进行二进制转换为十进制,在窗口中输入2,这时窗口提示“PleaseInputaBinnumber:〞,输入二进制数10100101,窗口显示结果如图4所示:图4假设进行二进制转换为十六进制,在窗口中输入3,这时窗口提示“PleaseInputaBinnumber:〞,输入二进制数10100101,窗口显示结果如图5所示:图5假设输入0,那么退出,窗口显示如图6:图6假设输入非0-3的字符,系统报错,请求重新输入,窗口显示结果如图7:图75心得体会通过这次的课程设计,让我对汇编有了更进一步的认识,加强了我用汇编语言编程的能力。汇编语言程序设计是一门很抽象的学科,学起来也比拟乏味。一开始学的时候感觉很难,也没什么兴趣。但随着学习的推进,以及上机编程,逐渐感到轻松。在这次课程设计中,让我更加熟悉了汇编语言的一些根本的指令;掌握了汇编语言的一些根本的中断调用功能,可以用汇编语言调用各种中断调用功能。在设计过程中,不断对程序进行修改、改良,增强了自己分析问题、解决问题的能力;在不断的调试中,也让自己发现了自己存在的一些错误以及一些调试时应注意的问题,同时也更深的理解了存放器、存储器等工作原理以及一些指令执行后对它们的改变,例如INT指令会改变AL的值,在编程时应注意这方面的问题。当设计一步步接近成功,每一个子程序的调试成功,都让自己感到喜悦,从中体会到了编程的乐趣,有一种成就感,也让自己树立了信心,增强了对汇编语言程序设计的兴趣。这次的汇编课程设计,我的题目是数制转换程序设计》,要求实现十六进制向二进制、十进制、八进制的转换。虽然在设计过程中遇到了不少问题,比方运行界面出现乱码、不能得到相应的转换等等问题,但在不断的修改和尝试中慢慢地解决这些问题,心里也有一种莫名的喜悦之感,正是这种感觉,使我对这门课产生了更加浓厚的兴趣,对本次课程设计更加用心和认真。在编程过程中我对汇编的一些工具进行了尝试,从MASM的EDIT,到WINDOWS的记事本,然后我又尝试了“汇编语言集成编译器1.0”和“VisulASM〞,集成汇编运行环境,最终我在“MasmforWindows集成实验环境总之,这次课程设计我锻炼了动手能力,熟悉了汇编的编程环境,并稳固了课程相关知识,收益很多。实践出真知,而且我们要有创新的精神,在课程设计中不忘在小处创新,希望在下一次课程设计中能有更大的突破!参考文献【1】汤书森.《微机原理接口技术实验于实践教程》.北京:清华大学出版社,2023【2】余朝琨.《IBM-PC汇编语言程序设计》.北京:机械工业出版社.2023【3】宋江.《微机原理与接口技术》.北京:机械工业出版社.2005【4】金泉涌.《微型计算机应用经验汇编》.北京:清华大学出版社,2007【5】沈美玲.《IBM-PC汇编语言程序设计》.北京:清华大学出版社,1993【6】吴耿峰.《十六位微型计算机原理接口及应用》.北京:高等教育出版.2004【7】戴梅萼.《微型计算机技术与应用》.北京:清华大学出版社.1992【8】罗省贤.《汇编语言程序设计教程》.北京:电子工业出版社,2004【9】吴向军.《汇编语言程序设计》.北京:高等教育出版社,2023【10】计算机算法--设计与分析导论ComputerAlgorithms:IntroductiontoDesignandAnalysis,3ESaraBaase高等教育出版社【11】程序设计语言设计与实现ProgrammingLanguageDesignandImplementation,3ETerrenceW.Pratt清华大学出版社附件:源程序DATASEGMENTMENUdb'PleaseInputyourChoice:',0dh,0ahdb'1:Bin-->Oct8',0dh,0ahdb'2:Bin-->Dec10',0dh,0ahdb'3:Bin-->Hex16',0dh,0ahdb'0:Exit',0dh,0ah,'$'mess1db'PleaseInputaBinnumber:$'mess2db'OutputOctis:$'mess3db'OutputDecis:$'mess4db'OutputHexis:$'errordb'Error!PleaseInputyourChoiceagain:$'TABLEDWL0,L1,L2,L3DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXL:LEADX,MENU;显示字符串MENUMOVAH,09HINT21HMOVAH,01HINT21HSUBAL,30HCMPAL,3JBEDONE;小于4那么跳转到DONELEADX,errorMOVAH,09HINT21HJMPLDONE:LEASI,TABLEMOVAH,0SHLAX,1ADDSI,AXJMP[SI]L1:CALLINBINCALLCRLFCALLOUTOCTCALLCRLFJMPLL2:CALLINBINCALLCRLFCALLOUTDECCALLCRLFJMPLL3:CALLINBINCALLCRLFCALLOUTHEXCALLCRLFJMPLL0:MOVAH,4CHINT21HCRLFPROCMOVAH,02HMOVDL,0DHINT21HMOVDL,0AHINT21HRETCRLFENDPINBINPROCNEARLEADX,mess1MOVAH,09HINT21HMOVBX,0BINL1:MOVAH,01HINT21HCMPAL,0DHJZBINL2ANDAL,01HSHLBX,1ORBL,ALJMPBINL1BINL2:RETINBINENDPOUTOCTPROCNEARLEADX,mess2MOVAH,09HINT21HOCT1:ROLBX,1MOVAX,BXANDAL,01HADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVCH,5OCT2:MOVCL,3ROLBX,CLMOVAL,BLANDAL,07HADDAL,30HMOVDL,ALMOVAH,2INT21
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖北武汉市青山安居集团有限公司招聘工作人员2人笔试模拟试题及答案解析
- 2026年固原市中小学(幼儿园)教师招聘考试备考试题及答案详解
- 2026年廊坊市事业单位人员招聘考试备考试题及答案详解
- 2026河南省第三地质勘查院有限公司社会招聘5人笔试备考题库及答案解析
- 2026年福州市街道办人员招聘考试备考试题及答案详解
- 2026年国营东平农场医院医护人员招聘笔试模拟试题及答案解析
- 2026新疆天都饲料有限公司招聘4人笔试参考题库及答案解析
- 2026年临沧市医疗保障系统事业单位人员招聘考试备考试题及答案详解
- 2026年邯郸市气象系统事业单位人员招聘考试备考试题及答案详解
- 2026年低氧训练设备行业分析报告及未来发展趋势报告
- 劳务合同书(完整版)pdf
- 村委会会议签到表
- ARCGIS中提取坡位方法
- 解除党纪处分影响期申请书
- 加油站动火作业安全管理制度
- 电力电子技术第二版张兴课后习题答案
- 人们通过竞争才会取得更大的成功
- LY/T 2103-2013根径立木材积表编制技术规程
- GB/T 9445-2015无损检测人员资格鉴定与认证
- 第五章 井间地震
- 高二期中考试后家长会课件
评论
0/150
提交评论