为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

汇编语言判断能否组成三角形

2017-10-10 14页 doc 85KB 90阅读

用户头像

is_180829

暂无简介

举报
汇编语言判断能否组成三角形汇编语言判断能否组成三角形 江汉大学文理学院 课程设计题目_____三角形判断_____ 部 (系) 信息技术学部 专 业 电子信息工程 姓 名 黄金国 学 号 201106010227 指导教师 罗海庚 2012年 7月 4日 目 录 摘 要 ............................................ 1 1 设计意义及要求 ................................ 2 1.1 设计意义 .................................. ...
汇编语言判断能否组成三角形
汇编语言判断能否组成三角形 江汉大学文理学院 课程设计题目_____三角形判断_____ 部 (系) 信息技术学部 专 业 电子信息工程 姓 名 黄金国 学 号 201106010227 指导教师 罗海庚 2012年 7月 4日 目 录 摘 要 ............................................ 1 1 设计意义及要求 ................................ 2 1.1 设计意义 .................................. 2 1.2 设计要求 .................................. 2 2 设计原理 ...................................... 3 2.1设计思路 ................................... 3 2.2 DOS及其功能调用 ........................... 3 2.3 ASCII码 ................................... 5 3 程序设计 ....................................... 6 3.1 程序流程图 ................................ 6 3.2程序说明 ................................... 7 4 程序调试与运行 ................................ 9 4.1调试过程 ................................... 9 4.2调试中遇到的问题 .......................... 10 心 得 体 会 ..................................... 11 参 考 文 献 ..................................... 12 摘 要 在科技飞速发展的今天。计算机在人们的日常生活,工业生产,科技研发,航空航天领域都有不可替代的作用。而这一切的基础都是计算机。可见计算机的重要性,而计算机的发展速度更是惊人,最初的计算机,体积庞大,结构复杂,只有专业人员才能操作,但是,经过了仅仅几十年的发展,计算机已经被缩小到很微型了,操作也更加简单,结构更加清晰明了,而其中为代表的就是8086系列的微处理器的出现,彻底改变了之前计算机体积庞大的缺憾。但是无论如何发展计算机都是遵循着冯?诺依曼的结构发展的。 汇编语言是微机原理及应用的基础,微机主机及接口所要实现的功能都要通过汇编语言来实现。尽管汇编语言程序设计编程效率偏低,但运行效率高、速度快。因此掌握汇编语言是学好微机原理及接口技术的第一步。 本次课程设计正是通过汇编语言来完成对三个数能否构成三角形的判断,来让我们掌握汇编语言,微机原理和接口的关系。 关键词:汇编语言,计算机发展,微机原理及接口技术 1 1 设计意义及要求 1.1 设计意义 汇编语言是微机原理及应用的基础,微机主机及接口所要实现的功能都要通过汇编语言来实现。尽管汇编语言程序设计编程效率偏低,但运行效率高、速度快。因此掌握汇编语言是学好微机原理及接口技术的第一步。 本次课程设计正是通过汇编语言来完成对三个数能否构成三角形的判断,来让我们掌握汇编语言,微机原理和接口的关系。 1.2 设计要求 初始条件: 采用16位微处理器 8086 CPU以及86系列微型计算机的指令系统; 软件设计平台为多功能微型计算机实验软件MFS中的微机原理实验集成环境MF2KP。 要求完成的主要任务: 1、设计汇编语言程序,实现判断是否能构成三角形的功能,具体功能要求如下: 输入a,b,c 三边后,判断是否能构成三角形,如能构成三角形,输出三角形的周长,否则输出“ERROR”。要求:提示输入三角形三边长度a b c;键盘输入,中间空格隔开; Enter 键结束输入,并换行显示判断结果。 2、根据功能要求绘制程序流程图、编写完整的汇编语言程序并上机调试: 2 2 设计原理 2.1设计思路 本次设计是利用汇编语言来实现判断三个数是否构成三角形的功能。倘若能构成三角形,必定两边之和大于第三边。利用汇编语言中的顺序结构、分支结构、循环结构、子程序以及各种指令语言来完成。首先绘制流程图,根据流程图来编写程序,检查无误后上机调试。 2.2 DOS及其功能调用 DOS不仅为用户提供了许多使用命令,而且还有用户可以直接调用的上百个常用子程序。对这些子程序的调用,称为系统功能调用。这些子程序的功能只要是进行磁盘读/写、控制管理、内存管理、基本输入/输出管理等。在使用时,用户不需要了解各种I/O接口硬件的详细情况就能直接完成对I/O接口的控制和管理。为了使用方便,将所有子程序从1号开始顺序编号,这些编号成为DOS功能调用号。其调用过程为: , DOS功能调用号送AH寄存器 , 如果需要,按要求给定输入参数(有的不需要输入参数) , 写入中断指令“INT 21H” 调用结束,按功能使用其输出参数。 表1 字符I/O系统功能调用 功能号 功能 入口参数 出口参数 01H 带回显的键盘输入 AL=输入字符 06H 直接控制台I/O DL=FF(输入) AL=输入字符 DL=字符(输出) 0AH 字符串缓冲输入 DS:DX=缓冲区首址 02H 字符显示 DL=输出字符 04H 串行口输出字符 DL=输出字符 05H 字符打印 DL=输出字符 09H 字符串显示 DS:DX=缓冲区首址 0DH 初始化键盘 3 1(功能01H 功能描述:从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾。 入口参数:AH,01H,过滤掉控制字符,并回显。 出口参数:AL,输入字符的ASCII码。 例如:读键盘输入一个字符并且回显的程序。 MOV AH,1 INT 21H 2(功能02H 功能描述:向标准输出设备(如:屏幕)输出一个字符。该输出还可被重定向,如果这样做,则将无法判断磁盘是否满。 入口参数:AH,02H,DL,待输出字符的ASCII码。 出口参数:无。 其基本格式如下: MOV AH,2 MOV DL,要显示的字符的ASCII INT 21H 3. 功能09H 功能描述:输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满。 入口参数:AH,09H,DS:DX,待输出字符的地址,待显示的字符串以’$’作为其结束标志,否则会引起屏幕混乱。显示时在字符串结束前加上回车及换行的ASCII码0DH和0AH,可使光标自动换行。 出口参数:无。 其基本格式如下: MOV AH,9 LEA DX,<字符串> INT 21H 4 2.3 ASCII码 由于计算机硬件只能识别二进制数,字母和字符也必须使用二进制编码来表示。目前用来表示字母和字符的二进制编码方式有很多种,最常用的是ASCII码。多用于输入输出设备(如电传打字机),是7位二进制编码。它总共可表示128个符号,包括26个英文大写字母, 26个英文小写字母,0,9共十个数字,32个通用控制字符和34个专用字符。 在计算机中用一个字节存放字符编码,故在ASCII的最高位补0。因此ASCII可表示8位二进制或两位16进制数。本设计所需要的空格的ASCII码为20H,回车及换行的ASCII码0DH和0AH,数字0~9为30H~39H。 5 3 程序设计 3.1 程序流程图 开 始 定义数据段和代 码段及初始化 AX清零 分别输入3个数a、将BX值赋予AX b、c,回车 AX与CX相加存于 将a、b、c ASCIIAX 值转化为数值型 AX与DX相加存于 AX Y a+b与c比 较 JBE 将数字化为十进制 N 显示周长数值 Y b+c与a比 较 JBE 结束 N Y a+c与b比 较 JBE N 显示error 显示“能构成三角 形以及周长” 图1 主程序设计流程图 由于需要通过键盘输入字符,需要调用DOS系统的INT 21H一系列子功能 从键盘输入字符然后显示出来。开始要定义数据段和代码段,接着初始化,通过 6 调用09H号子功能在屏幕上显示“please input three nums a b c:”,回车通过调用子程序对输入的数字进行比较判断能否构成三角形。若能则通过02H号子功能在屏幕上显示“Yes, they can construct a triangle.”并对三个数进行相加所得结果也要通过02H号子功能在屏幕上显示“The girth of the triangle is:”。若不能构成三角形则显示“error,please re-enter”可以继续输入三个数进行判断。 3.2程序说明 1、代码段定义 代码段需要定义预显示的字符,并以‘$’字符结束。还需要定义预输入字符串的缓冲区,缓冲区的第一个字节存放能保存的最大字符数,第二个字节存放实际输入的字节数,遇到回车停止输入。 本设计段码定义如下: STACK SEGMENT STACK DB 400 DUP(?) STACK ENDS DATA SEGMENT STR0 DB 13,10,'please input three nums a b c:','$' STR1 DB 13,10,'Yes, they can construct a triangle.','$' STR2 DB 13,10,'The girth of the triangle is: ','$' STR3 DB 13,10,'error,please re-enter ','$' DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK 2、数值转换 利用0~9数字的ASCII值比本身大30H的关系,将对应的字符转换为十进制。本设计数值转换程序代码如下: MOV CH,10 DIV CH 3、判断能否构成三角形 本次设计针对所给题目进行了改善,程序如下所示,倘若所输入的三个数不能够成三角形,则可以回车继续输入三个数进行进一步判断。 MOV AX,BX 7 ADD AX,CX CMP AX,DX JBE LA1 MOV AX,CX ADD AX,DX CMP AX,BX JBE LA1 MOV AX,DX ADD AX,BX CMP AX,CX JBE LA1 LA1: MOV DX,OFFSET STR3 MOV AH,9 INT 21H JMP A3 4、计算三角形周长 将三个数字相加的结果存放在AX中,用数值转换代码将ASCII首先将AX清零, 码转化为十进制,然后通过02H号子功能在屏幕上显示计算结果。 XOR AX,AX MOV AX,BX ADC AX,CX ADC AX,DX MOV CH,10 DIV CH MOV BL,AH ADD AL,30H MOV DL,AL MOV AH,2 INT 21H ADD BL,30H MOV DL,BL MOV AH,2 INT 21H 8 4 程序调试与运行 4.1调试过程 通过以上步骤在MF2KP软件中进行调试,首先输入源程序,点击汇编后,检查是否存在错误,修改好所有出现的错误后,运行。DOS系统的INT 21H下的09H字功能以“$”为结束符,自动结束字符串的显示,所以运行后屏幕首先显示“please input three nums a b c:”随后输入三个数字 图2 输入任意三个数字 回车后计算机判断这三个数能否构成三角形并计算所构成三角形的周长,显然如图2所示的三个数能构成三角形,且周长应该是12。 图3 显示是否能构成三角形以及周长 如果输入的三个数不能构成三角形,显示如下。出现“error,please re-enter”, 9 此时回车可继续输入三个数进行运算。 图4 不能构成三角形 图5 继续输入三个数字进行判断 4.2调试中遇到的问题 一开始的时候程序汇编不能成功。经过仔细检查后发现,有些程序代码有逻辑上的错误,而且对于输入法和符号都有很高的要求,经过不断排查纠正,最终程序能够顺利运行。此次程序设计主要包括调用DOS系统的INT 21H功能从键盘输入字符然后显示字符,通过调用相应的字程序判断所输入的三个数能否构成三角形。通过编写相应的主程序和FUNC1 PROC、计算周长两个子程序,经反复调试、运行及修改得出满足要求的程序,从而完成此次课程设计。 10 心 得 体 会 这是本学期的第二次课程设计。我个人比较喜欢微机原理这门课程,因为它可以让冷冰冰的机器听话地运行,执行各种指令。刚刚开课之初也是抱着很高的积极性去学的。但是最初接触微机原理这门课时感觉很深奥,很晦涩难懂。因为是和机器打交道,因此要说些机器听得懂的语言,就是所谓的汇编语言,但是汇编语言灵活多变,有各种省略和等效的形式,有较多的指令和要求,而每一条指令又有不同的使用情况,但是经过了一个学期的学习和磨练,我对与微机原理这门课程也越来越熟悉了,本次课设也是一次不可多得的检验自己所学知识的好机会。因此做的比较认真。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 在这次课程设计中,我真正体会到了合作的重要性,遇到很多的问题,当我看书查看资料不能解决时,去找同学讨论收获很大,可以使很多问题迎刃而解,知道问题最终解决。不可否认,本程序存在很多不足和缺点,但通过这次课程设计找出了自己学习上的不足,对以后的学习和生活有很多指导意义,我相信在以后的学习生活工作中我会努力克服这些不足,取得不断的进步。 11 参 考 文 献 [1]《微机原理与接口技术》(基于16位机)电子工业出版社 周佩玲 等编著2005年2月 [2]《微机原理与接口技术》 清华大学出版社,张小鸣 主编2001年9月 [3]《微机原理与汇编语言》电子工业出版社,王钰等编著2001年8月 [4]《汇编语言程序设计》中国水利水电出版社,相伟主编2005年8月 [5]《微型计算机原理》 西安电子科技大学出版社,姚燕南2005年9月 指导教师: 12 建议成绩 指导教师____________ 年 月 日 13 14
/
本文档为【汇编语言判断能否组成三角形】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索