汇编语言判断能否组成三角形_第1页
汇编语言判断能否组成三角形_第2页
汇编语言判断能否组成三角形_第3页
汇编语言判断能否组成三角形_第4页
汇编语言判断能否组成三角形_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 参 考 文 献 .

2、 12 1 摘 要在科技飞速发展的今天。计算机在人们的日常生活,工业生产,科技研发,航空航天领域都有不可替代的作用。而这一切的基础都是计算机。 可见计算机的重要性,而计算机的发展速度更是惊人,最初的计算机,体积庞大,结构复杂,只有专业人员才能操作, 但是,经过了仅仅几十年的发展, 计算机已经被缩小到很微型了,操作也更加简单,结构更加清晰明了,而其中为代表的就是8086 系列的微处理器的出现, 彻底改变了之前计算机体积庞大的缺憾。但是无论如何发展计算机都是遵循着冯诺依曼的结构发展的。汇编语言是微机原理及应用的基础, 微机主机及接口所要实现的功能都要通过汇编语言来实现。 尽管汇编语言程序设计编程效

3、率偏低,但运行效率高、 速度快。因此掌握汇编语言是学好微机原理及接口技术的第一步。本次课程设计正是通过汇编语言来完成对三个数能否构成三角形的判断,来让我们掌握汇编语言,微机原理和接口的关系。关键词:汇编语言,计算机发展,微机原理及接口技术2 1 设计意义及要求1.1 设计意义汇编语言是微机原理及应用的基础, 微机主机及接口所要实现的功能都要通过汇编语言来实现。 尽管汇编语言程序设计编程效率偏低,但运行效率高、 速度快。因此掌握汇编语言是学好微机原理及接口技术的第一步。本次课程设计正是通过汇编语言来完成对三个数能否构成三角形的判断,来让我们掌握汇编语言,微机原理和接口的关系。1.2 设计要求初始

4、条件:采用 16 位微处理器 8086 cpu以及 86 系列微型计算机的指令系统;软件设计平台为多功能微型计算机实验软件mfs中的微机原理实验集成环境 mf2kp 。要求完成的主要任务 :1、设计汇编语言程序,实现判断是否能构成三角形的功能,具体功能要求如下:输入 a,b,c 三边后,判断是否能构成三角形,如能构成三角形,输出三角形的周长,否则输出“error” 。要求:提示输入三角形三边长度a b c ;键盘输入,中间空格隔开; enter 键结束输入,并换行显示判断结果。2、根据功能要求绘制程序流程图、编写完整的汇编语言程序并上机调试:3 2 设计原理2.1 设计思路本次设计是利用汇编语

5、言来实现判断三个数是否构成三角形的功能。倘若能构成三角形,必定两边之和大于第三边。 利用汇编语言中的顺序结构、 分支结构、循环结构、 子程序以及各种指令语言来完成。首先绘制流程图, 根据流程图来编写程序,检查无误后上机调试。2.2 dos 及其功能调用dos 不仅为用户提供了许多使用命令,而且还有用户可以直接调用的上百个常用子程序。 对这些子程序的调用, 称为系统功能调用。 这些子程序的功能只要是进行磁盘读 / 写、控制管理、内存管理、基本输入/ 输出管理等。在使用时,用户不需要了解各种 i/o 接口硬件的详细情况就能直接完成对i/o 接口的控制和管理。为了使用方便, 将所有子程序从 1 号开

6、始顺序编号, 这些编号成为 dos 功能调用号。其调用过程为:dos 功能调用号送 ah寄存器如果需要,按要求给定输入参数(有的不需要输入参数)写入中断指令“ int 21h”调用结束,按功能使用其输出参数。表 1 字符 i/o 系统功能调用功能号功能入口参数出口参数01h 带回显的键盘输入al= 输入字符06h 直接控制台 i/o dl=ff(输入)dl=字符(输出)al= 输入字符0ah 字符串缓冲输入ds:dx=缓冲区首址02h 字符显示dl=输出字符04h 串行口输出字符dl=输出字符05h 字符打印dl=输出字符09h 字符串显示ds:dx=缓冲区首址0dh 初始化键盘4 1功能 0

7、1h 功能描述:从标准输入设备 ( 如:键盘 ) 读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾。入口参数: ah 01h ,过滤掉控制字符,并回显。出口参数: al输入字符的 ascii 码。例如:读键盘输入一个字符并且回显的程序。mov ah,1 int 21h 2功能 02h 功能描述:向标准输出设备 ( 如:屏幕)输出一个字符。 该输出还可被重定向,如果这样做,则将无法判断磁盘是否满。入口参数: ah 02h ,dl待输出字符的 ascii 码。出口参数:无。其基本格式如下:mov ah,2 mov d

8、l, 要显示的字符的 ascii int 21h 3. 功能 09h 功能描述:输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满。入口参数: ah 09h ,ds:dx 待输出字符的地址 , 待显示的字符串以 $作为其结束标志 , 否则会引起屏幕混乱。显示时在字符串结束前加上回车及换行的ascii 码 0dh和 0ah ,可使光标自动换行。出口参数:无。其基本格式如下:mov ah,9 lea dx, int 21h 5 2.3 ascii码由于计算机硬件只能识别二进制数, 字母和字符也必须使用二进制编码来表示。目前用来表示字母和字符的二进制编码方式有很多种,最常

9、用的是ascii码。多用于输入输出设备(如电传打字机),是 7 位二进制编码。它总共可表示128 个符号,包括 26个英文大写字母,26 个英文小写字母, 09 共十个数字,32 个通用控制字符和34个专用字符。在计算机中用一个字节存放字符编码, 故在 ascii 的最高位补 0。 因此 ascii可表示 8 位二进制或两位 16 进制数。本设计所需要的空格的ascii 码为 20h,回车及换行的 ascii 码 0dh 和 0ah,数字 09 为 30h39h。6 3 程序设计3.1 程序流程图图 1 主程序设计流程图由于需要通过键盘输入字符,需要调用dos系统的 int 21h 一系列子功

10、能从键盘输入字符然后显示出来。开始要定义数据段和代码段,接着初始化, 通过开始定义数据段和代码段及初始化分别输入 3 个数 a、b、c,回车将 a、b、c ascii值转化为数值型a+b 与 c比较 jbe b+c 与 a比较 jbe a+c 与 b比较 jbe 显示“能构成三角形以及周长”显示 error y y y ax 清零将 bx 值赋予 ax ax 与 cx 相加存于ax ax 与 dx 相加存于ax 将数字化为十进制显示周长数值结束n n n 7 调用 09h 号子功能在屏幕上显示“please input three nums a b c: ” ,回车通过调用子程序对输入的数字进

11、行比较判断能否构成三角形。若能则通过02h 号子功能在屏幕上显示“ yes, they can construct a triangle. ”并对三个数进行相加所得结果也要通过 02h 号子功能在屏幕上显示“the girth of the triangle is:” 。若不能构成三角形则显示“ error,please re-enter ”可以继续输入三个数进行判断。3.2 程序说明1、代码段定义代码段需要定义预显示的字符,并以$字符结束。还需要定义预输入字符串的缓冲区,缓冲区的第一个字节存放能保存的最大字符数,第二个字节存放实际输入的字节数,遇到回车停止输入。本设计段码定义如下:stack

12、 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、数值转换利

13、用 09 数字的 ascii 值比本身大 30h的关系,将对应的字符转换为十进制。 本设计数值转换程序代码如下:mov ch,10 div ch 3、判断能否构成三角形本次设计针对所给题目进行了改善,程序如下所示, 倘若所输入的三个数不能够成三角形,则可以回车继续输入三个数进行进一步判断。mov ax,bx 8 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 21

14、h jmp a3 4、计算三角形周长首先将 ax清零,将三个数字相加的结果存放在ax中,用数值转换代码将ascii码转化为十进制,然后通过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 9 4 程序调试与运行4.1 调试过程通过以上步骤在 mf2kp 软件中进行调试,首先输入源程序,点击汇编后,检查是否存在错误,修改好所有出

15、现的错误后,运行。dos 系统的 int 21h 下的 09h 字功能以“ $”为结束符,自动结束字符串的显示,所以运行后屏幕首先显示“ please input three nums a b c: ”随后输入三个数字图 2 输入任意三个数字回车后计算机判断这三个数能否构成三角形并计算所构成三角形的周长,显然如图 2 所示的三个数能构成三角形,且周长应该是12。图 3 显示是否能构成三角形以及周长如果输入的三个数不能构成三角形,显示如下。出现“error,please re-enter ”,10 此时回车可继续输入三个数进行运算。图 4 不能构成三角形图 5 继续输入三个数字进行判断4.2 调

16、试中遇到的问题一开始的时候程序汇编不能成功。经过仔细检查后发现,有些程序代码有逻辑上的错误, 而且对于输入法和符号都有很高的要求,经过不断排查纠正, 最终程序能够顺利运行。此次程序设计主要包括调用dos 系统的 int 21h 功能从键盘输入字符然后显示字符, 通过调用相应的字程序判断所输入的三个数能否构成三角形。通过编写相应的主程序和func1 proc、计算周长两个子程序,经反复调试、运行及修改得出满足要求的程序,从而完成此次课程设计。11 心 得 体 会这是本学期的第二次课程设计。 我个人比较喜欢微机原理这门课程,因为它可以让冷冰冰的机器听话地运行,执行各种指令。 刚刚开课之初也是抱着很

17、高的积极性去学的。 但是最初接触微机原理这门课时感觉很深奥,很晦涩难懂。 因为是和机器打交道, 因此要说些机器听得懂的语言,就是所谓的汇编语言, 但是汇编语言灵活多变, 有各种省略和等效的形式, 有较多的指令和要求, 而每一条指令又有不同的使用情况, 但是经过了一个学期的学习和磨练,我对与微机原理这门课程也越来越熟悉了, 本次课设也是一次不可多得的检验自己所学知识的好机会。因此做的比较认真。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务, 从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题, 可以说得是困难重重, 这毕竟第一次做的, 难免会遇到过各种各样的问题, 同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在这次课程设计中,我真正体会到了合作的重要性,遇到很多的问题,当我看书查看资料不能解决时,去找同学讨论收获很大,可以使很多问题迎刃而解,知道问题最终解决。 不可否认, 本程序存在很多不足和缺点,但通过这次课程设计找出了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论