《汇编语言课程设计-pdf.doc》由会员分享,可在线阅读,更多相关《汇编语言课程设计-pdf.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date汇编语言课程设计-pdf汇编语言课程设计-pdf 汇编语言课程设计 题目:中断技术程序设计 姓名:、大川 学号:、 班级:12计算机应用技术(1)班 指导老师:、 日期: 2013年12月13日 - 目 录一、汇编语言 1、汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符Memoni)代替机器指令的操作码,用地址符号(Sy
2、mbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。简介汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。每一种处理器都有自己可以识别的一整套指令,称为指令集。处理器执行指令时,根据不同的
3、指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态如图所示,在电路中,每条机器指令都表现为一组电信号,通过一排导线进入处1 理器。这些电信号有的呈高电平,有的呈低电平,哪些为高,哪些为低,取决于不同的机器指令。如果把高电平记为“1”,低电平记为“0”,那么,不同的机器指令将表现为不同的二进制序列,由于它们的无规律性,这就使得机器指令难以理解、书写和记忆人类最容易接受自己每天都使用的自然语言。为了使机器指令的书写和理解变得容易,需要借鉴自然语言的优点,为此就引入了汇编语言。汇编语言使用符号来代表不同的机器指令,而这些符号非常接近于自然语言的要素。基本
4、上,汇编语言里的每一条指令,都对应着处理器的一条机器指令。汇编语言包括两个部分:语法部分和编译器。语法部分提供与机器指令相对应的助记符,方便指令的书写和阅读。当然,汇编语言的符号可以被人类接受,但不能被处理器识别,为此,还要由汇编语言编译器将这些助记符转换成机器指令。根据应用领域的不同,处理器的种类繁多,比如用于工业控制和嵌入式计算的Z80、MC68000和MCS-51、广泛应用于个人计算机的INTELx86系列,以及基于ARM体系结构的处理器,包括苹果公司在内的大企业都是ARM的客户。事实上,今天的ARM是最受欢迎的32位嵌入式处理器,而且,今天的ARM处理器比INTEL奔腾系列卖得还多,基
5、本上是3:1的比例。不同的处理器有不同的指令集。正是因为这个原因,每一种处理器都会有自己专属的汇编语言语法规则和编译器。即使是同一种类型的处理器,也可能拥有不同的汇编语言编译器。一个明显的例子是INTEL x86系列的处理器,围绕它就开发出好多种编译器来,如MASM、NASM、FASM、TASM和AT&T等。而且,这每一种编译器,都使用不同的语法。2、优缺点优点 1、因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。3、
6、目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛。4、缺点1、汇编语言是面向机器的,处于整个计算机语言层次结构的底层,故被视为一种低级语言,通常是为特定的计算机或系列计算机专门设计的。因此,不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性; 5、难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试; 6、使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器
7、进行优化,开发效率很低,周期长且单调。3应用历史上,汇编语言曾经是非常流行的程序设计语言之一。随着软件规模的增长,以及随之而来的对软件开发进度和效率的要求,高级语言逐渐取代了汇编语言。但即便如此,高级语言也不可能完全替代汇编语言的作用。就拿Linux内核来讲,虽然绝大部分代码是用C语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码。由于这部分代码与硬件的关系非常密切,即使是C语言也会显得力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。二、汇编语言的特点 一方面,汇编语言指令是用一些具有相应含义的助忆符来表达的,所以,它要比机器语言容易掌握和运用,但另一方面,它要直接使用
8、CPU的资源,相对高级程序设计语言来说,它又显得难掌握。汇编语言程序归纳起来大概有以下几个主要特性。 1、与机器相关性汇编语言指令是机器指令的一种符号表示,而不同类型的CPU有不同的机器指令系统,也就有不同的汇编语言,所以,汇编语言程序与机器有着密切的关系。由于汇编语言程序与机器的相关性,所以,除了同系列、不同型号CPU之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如:小型机和微机等)CPU之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。 2、执行的高效率正因为汇编语言有“与机器相关性”的特性,程序员用汇编语言编写程序时,可充分发挥自己的
9、聪明才智,对机器内部的各种资源进行合理的安排,让它们始终处于最佳的使用状态,这样做的最终效果就是:程序的执行代码短,执行速度快。现在,高级语言的编译程序在进行寄存器分配和目标代码生成时,也都有一定程度的优化(在后续课程编译原理的有关章节会有详细介绍),但由于所使用的“优化策略”要适应各种不同的情况,所以,这些优化策略只能在宏观上,不可能在微观上、细节上进行优化。而用汇编语言编写程序几乎是程序员直接在写执行代码,程序员可以在程序的每个具体细节上进行优化,这也是汇编语言程序执行高效率的原因之一。 3、编写程序的复杂性汇编语言是一种面向机器的语言,其汇编指令与机器指令基本上一一对应,所以,汇编指令也
10、同机器指令一样具有功能单一、具体的特点。要想完成某件工作(如计算:A+B+C等),就必须安排CPU的每步工作(如:先计算A+B,再把C加到前者的结果上)。另外,在编写汇编语言程序时,还要考虑机器资源的限制、汇编指令的细节和限制等等。由于汇编语言程序要安排运算的每一个细节,这就使得编写汇编语言程序比较繁琐、复杂。一个简单的计算公式或计算方法,也要用一系列汇编指令一步一步来实现。 4、调试的复杂性在通常情况下,调试汇编语言程序要比调试高级语言程序困难,其主要原因有四: 汇编语言指令涉及到机器资源的细节,在调试过程中,要清楚每个资源的变化情况; 程序员在编写汇编语言程序时,为了提高资源的利用率,可以
11、使用各种实现技巧,而这些技巧完全有可能破坏程序的可读性。三、课程设计的目的 培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。为将来从事专业工作打下基础,培良好的职业道德和严谨的工作作风。 综合运用汇编语言的理论知识进行中断处理程序设计,通过理论推导得出相应结论,通过修改中断向量表,实现自己的中断,在DOS环境下,能够每隔一段时间中断一次,并记录次数。即在DOS环境上显示次数。所使用的软件主要有记事本、宏汇编6.0等。四、课程设计的要求要求:编写一个中断处理程序,要求在主程序运行过程中,每隔10秒响铃一次,并记录响铃次数。同时在屏幕上显示信息次数,按键后恢
12、复原状。(1) 学会DOS的使用,掌握程序设计方法。(2)掌握汇编语言的基本概念、基本理论和基本方法。注意事项:(3)必须由中断来实现本设计。(4)每次响铃时间间隔必须相等。(5)具备初步的独立分析和解决问题的能力;(6)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能;(7)提高综合运用所学的理论知识和方法的能力;(8)训练用系统的观点和软件开发一般规范进行软件开发,培养科学的工作方法和作风;(9)设计的题目要求达到一定工作量,并具有一定的深度和难度;五、课程设计报告内容5.1设计思想本设计通过修改中断向量表,将自己的中断程序写入中断向量表。然后通过调用该中断功能号来实现每隔10秒
13、系统每调用一次该中断并响一次铃,而且在屏幕上显示中断次数,按回车键结束显示。5、2设计方案 在本次课程设计的中断处理程序中,我们运用了寄存器和计数器、中断指令INT1CH,在时钟每中断一次并计一次数时,先将各个工作寄存器的内容入栈,然后次数计数器就开始计数并转换成ASCII显示。其次,扬声器发音、次数计数器在延时、关闭中断,最后中断返回。5、3设计步骤 a.分析问题 对于接受的任务要进行认真的分析,研究所给定的条件,分析最后应达到的目标,找出解决问题的规律,选择解题的方法,完成实际问题。 b.设计算法 即设计出解题的方法和具体步骤。 c.编写程序根据得到的算法,用一种高级语言编写出源程序。并通
14、过测试。 d .对源程序进行编辑、编译和连接 e .运行程序,分析结果运行可执行程序,得到运行结果。能得到运行结果并不意味着程序正确,要对结果进行分析,看它是否合理。不合理要对程序进行调试,即通过上机发现和排除程序中的故障的过程。 f.编写程序文档许多程序是提供给别人使用的,如同正式的产品应当提供产品说明书一样,正式提供给用户使用的程序,必须向用户提供程序说明书。内容应包括:程序名称、程序功能、运行环境、程序的装入和启动、需要输入的数据,以及使用注意事项等。5.4流程图: 设置中断向量 清屏 开始 返回中断 允许中断 延 时 关中断 恢复中断向量 延时各工作寄存器内容入栈 扬声器发音次数计数器
15、加1转换成ASCII显示5.5程序源代码:=DATAS SEGMENT org 2000hcount dw 1mess db 0dh,0ah,$buf db 1 dup(1)asc db ?,?,$DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX mov al,1ch mov ah,35h int 21h push es push bx push ds mov dx,offset ring mov ax,seg ring mov ds,ax mov al,3ch mov ah,14h in
16、t 21h pop ds in al,21h and al,ofeh out 21h,al sti mov di,1000delay: mov si,offfhdelay1: dec si jnz delay pop ds pop ax mov al,1ch mov ah,25h int 21h jmp startring proc push ds push ax push cx push al mov ds,datas mov ds,ax sti dec count jnz exit mov dx,offset mess mov ah,9 int 21h mov al,buf xor al,
17、ah mov dl,10 div dl or al,30h mov asc,al or ah,30h lea dx,asc mov ah,9 int 21h mov dx,300h in al,61h and al,ofchsound: xor al,02h out 61h,al mov cx,oaffhwait1: loop wait1 dec al jnz sound mov count,181 inc bufexit:cli pop dx pop cx pop ds pop ax iretring endpCODES END END START= 5.6运行结果:六、 总结: 通过本次课
18、程设计让我充分了解了汇编在实际软件开发中的作用和地位。在这次课程设计过程中我们把课堂上的知识充分运用了还是不能完成实际软件开发。这说明程序开发是不能够停留在书本上的,想要把程序作好,必须要不断通过各种途径掌握更多更好的知识,并且最重要的是要将获得的知识运用到实际编程中,要学以致用。本次课程设计是自由分组、自由选题。 两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去做一件事情,又如何完成一件事情的能力。在设计过程中,与同学分工设计、相互探讨、相互学习。使我学会了合作,学会了宽容,学会了理解。 课程设计是我们专业课程知识综合应用的实践训练,也是我们迈向社会,从事职
19、业前一个必不少的过程。通过这次课程设计,我深深体会到“千里之行始于足下”这句千古名言的真正含义。今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会中奋力前进打下坚实的基础在这次课程设计过程中,体现出自己单独设计学生管理系统,综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。虽然说在设计过程中遇到了诸多的问题但是通过和同学的一起讨论,慢慢的解决了一些存在的问题,但是本次课程设计不仅加深了同学间的感情,也加强了我的团队合作精神。并且激发了我今后努力学习的兴趣。 我们可以充分根据我们的兴趣和长处,选择题目,所以这次课程设计是非常顺利的。这次让我们体会到了团队通力合作 的快乐和强大力量。我们几个人按各自分配的任务,做好各个小块后,再把它们合并起来,这样程序才得以完成。一个星期的时间并不是太长。但团队的合作使任务如时完成。在编程中我们遇到了很多问题和麻烦,但我没有气馁、没有放弃,做不来了,信息在做。最后我们都将他们解决了。这就是所谓的团结就是力量、坚持就是胜利啊。