汇编语言程序课程设计
- 格式:docx
- 大小:137.96 KB
- 文档页数:13
80X86汇编语言程序设计教程课程设计一、引言汇编语言是一种底层语言,它直接操作计算机的硬件,可以完成高级语言难以实现的功能。
80X86汇编语言是汇编语言的一种,应用广泛。
本课程设计旨在教授80X86汇编语言程序设计基础知识,帮助学生掌握基本的汇编语言编程技能。
二、课程简介2.1 课程名称80X86汇编语言程序设计教程2.2 课程目标本课程旨在培养学生掌握80X86汇编语言编程技能,能够编写简单的程序,并理解汇编语言的基本原理和应用。
2.3 课程内容1.汇编语言基础知识介绍2.80X86汇编语言指令集3.汇编语言程序设计基础4.实践项目设计2.4 学时安排本课程为一门学期课程,共计36学时,其中理论教学18学时,实践项目设计18学时。
2.5 教材《80X86汇编语言程序设计教程》三、课程教学方法本课程主要采用理论结合实践的教学方法,通过讲授汇编语言的基本原理和操作方式,引导学生理解其实现方式;通过案例实验,帮助学生加深对汇编语言编程技巧的掌握。
四、课程考核方式本课程采用考核的方式来评价学生的学习成果。
考核主要分为两个部分:课程作业和实践项目设计。
4.1 课程作业课程作业主要包括汇编语言程序设计题目,每周布置一到两道题目,学生需在规定时间内完成,作业含量较小,但对于学生的编程能力要求较高。
4.2 实践项目设计实践项目设计要求学生在课程学习期间,进行一至两个小型项目的设计与实现。
具体项目的设计与实现由教师根据学生的实际情况和能力确定。
五、课程大纲5.1 汇编语言基础知识介绍1.汇编语言的概念及特点2.汇编语言的发展历程3.汇编语言的基本组成部分4.汇编语言源程序的格式5.汇编语言编译过程5.2 80X86汇编语言指令集1.80X86汇编语言指令集概述2.数据传送指令3.算术运算指令4.逻辑运算指令5.条件转移指令6.循环指令5.3 汇编语言程序设计基础1.汇编语言程序设计流程2.汇编语言程序调试技巧3.汇编语言程序的优化与调试5.4 实践项目设计1.简单计算器设计2.操作系统引导扇区程序设计六、总结80X86汇编语言是一种底层编程语言,具有强大的控制能力和高效的数据处理能力,应用广泛。
汇编语言程序设计教程教学设计介绍汇编语言程序设计是计算机科学与技术专业中的基础课程之一,它能够帮助学生理解计算机底层的工作原理、计算机运作的效率以及程序设计的实现方法,在日常的编程工作中也具有一定的应用价值。
本文旨在介绍汇编语言程序设计教学的设计方法,包括教学目标、教学内容、教学方法、教学手段以及教学评价等,希望对于教师更好地进行教学理论和实践上的指导和实现有所帮助。
教学目标1.理解汇编语言程序设计的基础知识和理论。
2.学会使用汇编语言进行程序设计和调试。
3.能够熟练掌握汇编语言中的语法和指令,并能够灵活使用。
4.能够编写符合汇编语言规范的程序。
5.增强学生的计算机底层原理知识和程序设计技能,培养他们的计算思维和解决问题的能力。
教学内容本课程的教学内容主要包括以下几个部分:第一部分:汇编语言基础1.汇编语言的概述和历史背景。
2.汇编程序的结构和组成。
3.汇编指令的基本语法和使用方法。
4.汇编程序调试和错误排除方法。
5.汇编程序的编译方法和调试工具。
第二部分:程序流程控制1.条件判断和循环结构的实现方法。
2.跳转指令和子程序的使用方法。
3.过程参数的传递和返回方法。
第三部分:存储和数据处理1.内存的概念、组成和管理方式。
2.数据类型和数据结构的定义和使用方法。
3.数据的输入、输出和处理方法。
第四部分:实战案例分析1.编写简单的数值和字符串计算程序。
2.编写简单的操作系统和应用程序。
教学方法1.应用问题教学法:根据实际应用问题引导学生掌握汇编语言程序设计的基本知识和技能。
2.案例教学法:采用实际应用案例进行教学,让学生更加深入地理解与掌握汇编语言程序设计的基础知识和技能。
3.互动式教学法:采用互动式教学,让学生自身参与,构建自主与自律的学习环境。
教学手段1.板书:教师可以通过板书记录要点、概念、例子,使学生更好地理解和掌握。
2.投影演示:教师可以通过参考文献或自己整理的PPT,包含图文等方式进行演示和讲解。
课程设计报告(本科)课程:汇编语言程序设计学号:姓名:班级:教师:时间:2014.6.3~2014.6.19计算机科学与技术系实验结果与分析:图6 首先运行无错误图7输入1号功能变换图8输入2号功能变换数值图9 产生obj文件图10 输入2号功能实现数制转换图11 输入1号功能实现数制转换附录:源代码十进制与八进制相互转换的程序清单:;DECIOCT;十进制与八进制相互转换;首先选择算法,1为八进制转十进制,2为十进制转八进制;***************************DECioct SEGMENTASSUME CS:DECioct;主程序部分。
main PROC FARstart: MOV DL,3ah ;显示提示附MOV AH,2INT 21hMOV AH,1 ;输入选择数字INT 21hCMP AL,32h ;数字为1时,执行八进制转十进制JE REPEat2 ;数字为2时,执行十进制转八进制REPEat1: CALL octbin ;键盘输入八进制数转为二进制 CALL crlf ;回车并换行CALL binidec ;二进制转十进制CALL crlf ;回车并换行JMP REPEat1 ;重复执行REPEat2: CALL DECibin ;键盘输入十进制数转为二进制CALL crlf ;回车并换行CALL binioct ;二进制转八进制CALL crlf ;回车并换行JMP REPEat2 ;重复执行main ENDP;-----------------------------;十进制转二进制DECibin PROC NEARMOV BX,0 ;将BX清零NEwchar2:MOV AH,1INT 21h ;21号中断输入SUB AL,30h ;ASCII转二进制JL exit2 ;<0则跳转CMP AL,9d ;判断是否>9JG exit2 ;如果大于则不是十进制数 CBW ;字节转为字XCHG AX,BX ;交换寄存器MOV CX,10d ;把10放如CXMUL CX ;AX扩大10倍XCHG AX,BX ;交换寄存器ADD BX,AX ;原数的10倍加上输入数 JMP NEwchar2 ;跳转输入exit2:RETDECibin ENDP;---------------------------------------;二进制转八进制binioct PROC NEARMOV CL,2 ;移位数字2ROL BL,CL ;循环左移2位MOV AL,BL ;把输入的数送入ALAND AL,03h ;将高六位屏蔽ADD AL,30h ;转换为ASCIIMOV DL,AL ;输出ALMOV AH,2INT 21hMOV CH,2 ;剩余显示2位rotate2:MOV CL,3 ;移位数字3ROL BL,CL ;循环左移3位MOV AL,BL ;把输入的数送入ALAND AL,07h ;将高五位屏蔽ADD AL,30h ;转换为ASCIIMOV DL,AL ;输出ALMOV AH,2INT 21hDEC CH ;递减CHJNZ rotate2 ;CH不为0则跳转 RETbinioct ENDP;---------------------------------------;八进制转二进制octbin PROC NEARMOV BX,0 ;BX清零NEwchar1:MOV AH,1 ;输入数字INT 21hSUB AL,30h ;转换为二进制数 JL exit1CMP AL,8d ;如果<8则跳转JL ADD_to1CMP AL,10hJGE exit1ADD_to1:MOV CL,3 ;移位数字3SHL BX,CL ;左移3位MOV AH,0 ;AH清0ADD BX,AX ;把新位移入数字 JMP NEwchar1 ;跳转继续输入exit1:REToctbin ENDP;--------------------------------------;二进制转十进制binidec PROC NEARMOV CX,10000d ;除数为10000 CALL DEC_divMOV CX,1000d ;除数为1000CALL DEC_divMOV CX,100d ;除数为100CALL DEC_divMOV CX,10d ;除数为10CALL DEC_divMOV CX,1d ;除数为1CALL DEC_divRET;---------------------------------------;子程序DEC_div PROC NEARMOV AX,BX ;把二进制数移入AX MOV DX,0 ;DX高八位清零DIV CX ;除数CXMOV BX,DX ;余数移入BXMOV DL,AL ;商移入DLADD DL,30h ;转换为ASCIIMOV AH,2 ;输出十进制数位INT 21hRETDEC_div ENDP;---------------------------------------binidec ENDP;---------------------------------------;回车和换行。
汇编课程设计与学习总结二O 一六年六月课程设计任务安排:Power idea公司从1975年成立一直到1995年的基本情况如下表所示,该数据已在程序中定义好(见图1-1:表1-1:公司基本情况图1-1:程序中数据定义计算data数据段中每一年的人均收入,并将所有数据按照如图1-2所示的格式在屏幕上显示出来。
图1-2:效果图汇编程序语言学习总结(这部分要求:根据这学期学习的课程以及大学期间学习的几种编程语言、单片机以及ARM,通过分析比较对汇编语言进行总结,描述清楚该语言的作用,特点,与其他语言的区别以及将来的主要作用范围。
内容可以结合文字,图表,不少于两页。
(格式要求:宋体,小四,行间距为20磅。
图表的标题为宋体五号在上学期我们专业开设了单片机课程,在学习单片机的过程中,我们就接触到了汇编语言,但那时候没有系统的学习,只知道像mov、jump、inc这样一些常用的简单指令。
而在最后单片机的课程设计中,我们采用的是c语言来编程。
那时候认为汇编语言并没有什么大的作用,汇编语言能做的,c语言也都能做,而且更为简单。
但真正接触这门课后,才发现汇编语言有它自己独特的作用,而且也不是很容易就可以弄懂的。
相比较其他高级语言如C++、java等,电脑等于在迁就人的思维方式。
但学汇编,人却必须要去迁就电脑的思维方式。
要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。
通过这一学期的学习,我对汇编只是有了初步的掌握。
现在我来通过比较汇编语言和几种高级语言的区别来对汇编语言作一个小小的总结。
在我们学过的高级语言,Java和C++都是面向对象语言,它们都能够实现面向对象思想(封装、继承、多态。
C++是在C语言基础上进行扩展而来的一门面向对象的程序设计语言。
相比其他语言,它具有很多优点和特点的,它对面向对象的支持,让我们可以将一个功能模块封装成一个类,对于使用这个功能模块的人,只需调用这个类的方法就可以了,不必关心功能如何实现的,这一点可以在开发大型项目的时候提高开发效率,减少开发周期。
新一代汇编语言程序设计课程设计一、课程设计背景汇编语言作为计算机体系结构的重要组成部分,是计算机组成原理、计算机体系结构等课程的基础教材。
然而,传统的汇编语言已经逐渐失去其实用性,受限于其机器级的特性,很难直接应用于现代计算机的软件开发中。
因此,新一代汇编语言应运而生,它既保留了传统汇编语言的部分特点,又在语言结构、语法规则等方面进行了改进和创新,成为了现代软件开发必不可少的一部分。
课程设计旨在通过实际操作,让学生深入学习新一代汇编语言的特点、语法规则、程序设计方法等,提高学生的程序设计能力和实践能力。
同时,通过课程设计,学生对计算机组成原理、计算机体系结构等课程的知识也能够进行更加深入的理解和掌握。
二、设计目标本课程设计的目标如下:1.掌握新一代汇编语言的特点和语法规则。
2.熟练掌握汇编语言程序设计方法。
3.能够应用新一代汇编语言进行实际软件开发。
4.加深对计算机组成原理、计算机体系结构等课程的理解和掌握。
三、课程内容安排本课程设计共分为三个模块,具体内容安排如下:第一模块:新一代汇编语言语法规则和基本程序设计方法1.新一代汇编语言的特点和语法规则介绍2.汇编语言程序的编写、调试和运行方法3.基本汇编语言程序设计方法4.控制结构和函数的实现第二模块:汇编语言数据结构与算法1.基本数据结构的实现2.常用算法的实现3.高级数据结构和算法的实现第三模块:应用实例和综合设计1.实际应用实例的分析和设计2.综合设计:完整汇编语言系统设计四、实践教学形式本课程设计采用理论教学结合编程实践的形式,以培养学生的实践能力和程序设计能力。
具体实践教学形式如下:1.通过理论讲授汇编语言的语法、程序设计方法等,让学生掌握基本理论知识。
2.通过实例程序的编写和调试,让学生掌握汇编语言程序设计的基本技能。
3.通过独立设计,让学生熟悉应用新一代汇编语言进行实际软件开发的方法。
五、考核方式本课程设计的考核方式包括以下几个方面:1.作业成绩:根据作业完成情况给出成绩,占总成绩的30%。
汇编语言程序设计汇编语言程序设计课程旨在培养学生的编程能力、逻辑思维和解决实际问题的能力。
本课程通过学习汇编语言的基本语法规则和编程技巧,让学生能够理解计算机硬件和软件之间的交互关系。
为了达到这个目标,我们制定了以下教学计划和目标:一、课题1. 汇编语言程序设计2. 课程目标:掌握汇编语言程序设计的基本原理和方法,熟练使用汇编语言编写程序,解决实际问题。
3. 教学时长:共28课时,每周2课时,共4周完成全部课程内容。
二、课前准备1. 教学用具:黑板、投影仪、电脑、汇编语言程序设计教材等。
2. 教学内容:汇编语言程序设计的基本概念、语法规则、编程技巧等。
3. 案例和实践:从实际问题出发,设计案例,引导学生进行实践操作。
三、教学目标1. 了解汇编语言程序设计的基本概念。
2. 掌握汇编语言的语法规则和编程技巧。
3. 能够使用汇编语言编写简单的程序,解决实际问题。
四、教学重点1. 汇编语言程序设计的语法规则。
2. 汇编语言的实际应用。
五、教学难点1. 汇编语言的实际应用。
2. 对于汇编语言程序设计中的复杂问题,如何找到合适的解决方法。
六、课前导入1. 通过介绍汇编语言的背景和重要性,激发学生的学习兴趣。
2. 引导学生对汇编语言程序设计产生浓厚兴趣,激发学生的学习热情。
七、授课环节1. 介绍汇编语言程序设计的基本概念和语法规则。
2. 通过案例分析,让学生掌握汇编语言的编程技巧和实际应用。
3. 组织学生进行编程实践,通过完成一些简单的编程任务,让学生能够熟练使用汇编语言,提高学生的编程能力。
八、作业布置1. 要求学生针对一些实际问题,利用所学的汇编语言编程知识,编写简单的程序来解决。
2. 要求学生复习课堂所学内容,加强对汇编语言程序设计知识的理解和掌握。
九、课后小结1. 总结本次课程的主要内容,强调学生对汇编语言程序设计的应用能力。
2. 鼓励学生深入学习和实践,提出问题和探究更深层次的应用。
汇编语言程序设计第二版课程设计背景汇编语言作为一种底层语言,在计算机领域中扮演着重要的角色。
掌握汇编语言可以更好地理解计算机的工作方式和原理,也可以帮助程序员更好地调试和优化高级语言程序。
本文档将介绍汇编语言程序设计第二版课程设计的内容和要求。
设计目标本次课程设计的主要目标是通过设计并实现一个汇编语言程序来提高学生的汇编语言编程能力。
具体目标包括:•加深学生对汇编语言的理解和应用•熟练使用汇编语言编写简单的程序•掌握调试和优化汇编语言程序的方法•提高学生的逻辑思维和问题解决能力设计内容需求说明设计并实现一个汇编语言程序,满足以下需求:•通过输入两个数字,并输出两个数字之间所有奇数的和•程序需要有明确的输入输出功能•程序需要有一定的用户友好性,可以根据用户的操作给予相应的提示信息设计要求•程序需要使用x86汇编语言编写,使用DOSBox模拟环境运行•程序需要具体的注释说明,方便他人理解•程序需要有较好的容错性,对用户的输入进行合理判断,避免程序出现异常•程序需要有一定的模块化结构,便于程序的修改和扩展•程序需要通过多组数据进行测试,保证其正确性和稳定性设计过程设计过程包括以下步骤:1.确定程序的功能需求及输入输出要求2.根据功能需求,设计程序流程和操作步骤3.按照流程,编写汇编语言程序4.进行程序测试,并对程序进行修改和优化5.撰写课程设计报告风险控制在设计和实现程序过程中,可能存在以下风险:•需求不明确或存在歧义•数据异常或输入不合法•程序设计和实现存在问题•模拟环境不稳定为降低风险,需要采取以下措施:•充分沟通,明确需求,并明确输入输出要求•对用户输入进行预处理,并进行合理的异常处理•通过严谨的编程和测试,确保程序的正确性和稳定性•定期备份数据,以免因意外情况数据丢失或损坏成果展示本次课程设计将会展示一个实现了以上需求的汇编语言程序。
下面是使用DOSBox模拟环境运行的程序截图:程序截图程序截图总结通过本次课程设计,我们深入了解了汇编语言的编程思想和方法,并具有了一定的实践经验。
汇编语言程序设计课程设计指导书一、课程设计的目的本课程设计是《汇编语言程序设计》课程的后继教学环节,其宗旨是使学生通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作,对汇编语言程序设计有更进一步的认识,提高编程技巧和阅读理解复杂程序的能力。
二、课程设计的任务要求根据所给的“Reader.asm”应用程序框架,在此基础上修改和添加功能。
1.基本任务:认真阅读“Reader.asm”源程序,理解程序每一条指令在程序中的作用;用→、←键在窗口内左右移动文本;用PgDn,PgUp键上下快速移动文本(每次移半帧);设计专用键放大、缩小窗口,改变窗口位置。
2.扩展任务:对文本内的Tab字符(ASCII码09H)进行处理:遇到Tab键,下一个字符显示在下一个表站开始处(每个6个字符一个表站);设置状态行,显示当前文件名、文本位置(仿垂直滚动条)。
3.自行设计的其它任务:三、课程设计报告的内容1. 课程设计题目名称、班级号、学号、学生姓名和课程设计起止日期(封面);2. 上海应用技术学院课程设计任务书(下发)3. 课程设计目的和要求;4. 课程设计任务内容;5. 详细设计说明;6. 软件使用说明;7. 课程设计总结;8. 附录:1 参考文献2 程序清单(电子版)。
四、课程设计详细设计说明及其它要求1.分析原“Reader.asm”程序结构:每个模块说明,较大模块程序流程图;2.对你已经实现的功能做详细的说明,并附上流程图及部分程序清单;3.自己对该“文件阅读器”的进一步设想;4.对于有设想但最终未实现的功能的大致编程思路的阐述;5.论述在设计过程中遇到的并且对你具有启发性的问题;6.交课程设计报告手写版,源程序交电子版。
五、评分标准1. 根据平时出勤情况和设计时的工作情况;2. 根据课程设计程序的完成情况,必须有可运行的软件。
3. 根据课程设计报告的质量。
课程设计报告不能抄袭,抄袭判为不及格。
4. 在题目要求之外附加具有实用性的功能。
32位汇编语言程序设计课程设计设计背景汇编语言是一种基于机器指令的低级语言,它直接面向计算机硬件,可以更加高效地控制计算机的运行。
而32位汇编语言是一种针对32位操作系统的汇编语言,它能够更好地支持内存管理和多线程操作等功能。
因此,学习和掌握32位汇编语言的程序设计能力对于计算机科学专业的学生来说是非常重要的。
课程设计目标本次课程设计旨在通过对32位汇编语言的学习和实践,提高学生的汇编语言程序设计能力,并让学生了解和掌握汇编语言在计算机底层的实现原理,培养学生针对计算机系统底层编程的能力和兴趣。
课程设计内容实验一:Hello World本次实验旨在让学生掌握汇编语言程序的开发流程和常见的汇编语句以及输出调试。
具体实验要求如下:1.编写一个汇编程序,输出“Hello World!”到屏幕上。
2.使用软件调试器运行并测试程序,检查程序是否能正常输出。
实验二:计算器本次实验旨在让学生学会如何进行汇编语言程序设计中的算数运算,以及如何与用户进行交互。
具体实验要求如下:1.编写一个汇编程序,实现基本的加减乘除运算,并从屏幕上获取用户输入。
2.在屏幕上展示运算结果,并让用户随时可以选择是否继续进行计算。
3.使用软件调试器运行并测试程序,检查程序是否能正常运行。
实验三:数组排序本次实验旨在让学生学会如何在汇编程序中处理数组,并了解常用的排序算法。
具体实验要求如下:1.编写一个汇编程序,实现对一个固定长度的数字数组进行排序。
2.输出排序后的数组。
3.使用软件调试器运行并测试程序,检查程序是否能正常运行。
课程学习方法和建议1.理论学习要和实践相结合,通过实践才能更好地理解和掌握汇编语言程序设计中的各种语句、操作和流程。
2.软件调试器是汇编程序的重要工具,学生需要熟练掌握其使用方法和调试技巧,以方便快速地找到程序的问题并解决。
3.学生可以通过阅读相关的教科书和参考资料,或者通过搜索互联网资源来扩充自己的知识和提高自己的能力。
8086/8088汇编语言程序设计课程设计设计背景汇编语言是计算机科学与技术专业中非常重要的一门课程,它是高级语言之后的一个阶段。
在本课程中,学生需要掌握8086/8088汇编语言的语法和应用。
为了更好地掌握汇编语言的使用,需要进行一定的课程设计练习。
设计目的本课程设计旨在帮助学生深入了解汇编语言的编写和实践操作,从而更好地掌握该技能。
该课程设计的主要目的包括:•加深学生对汇编语言的理解。
•培养学生的编程思维和动手能力。
•通过实践操作,让学生能够在以后的工作和学习中使用汇编语言编写程序。
设计内容本课程设计的主要内容包括以下几个部分:1. 编写程序学生需要使用8086/8088汇编语言编写程序。
编写过程中,需要注意程序的逻辑和语法。
程序可以有选择的使用一些特定的指令进行优化,以达到更高的执行效率。
2. 调试程序学生需要使用调试软件对编写的程序进行调试,以保证程序的正确性。
在调试过程中,需要注意调试工具的使用方法和操作步骤。
3. 撰写实验报告学生需要撰写课程设计实验报告,该报告需要包括以下主要内容:•设计目的和内容简介•程序设计思路和步骤•调试过程和结果分析•程序运行效果展示•总结和反思设计要求为了完成本课程设计任务,需要满足以下要求:1. 完成程序编写完成程序编写的任务,保证程序的正确性和合理性。
程序逻辑要清晰,格式化整齐,运行效率要高。
程序注释要清晰,要有比较好的可读性。
2. 良好的调试过程良好的调试过程是保证程序正确性的基础。
学生需要使用调试工具对程序进行调试,确保程序的正常运行。
在调试过程中,需要注意操作的步骤和方法。
3. 撰写实验报告实验报告需要各个方面都能全面体现学生的工作。
在撰写实验报告时,请注意实验报告的格式和内容要求,注意语言的规范性和格式的整齐性。
报告需要按时上交。
结束语本课程设计是学生在汇编语言学习的过程中,进行实践的重要环节,通过这个过程,学生能够更加全面的掌握汇编语言编程的技能。
汇编课程设计与学习总结
二 O 一六年六月
课程设计任务安排:
Power idea公司从1975年成立一直到1995年的基本情况如下表所示,该数据已在程序中定义好(见图1-1):
表1-1:公司基本情况
图1-1:程序中数据定义
计算data数据段中每一年的人均收入,并将所有数据按照如图1-2所示的格式在屏幕上显示出来。
图1-2:效果图
汇编程序语言学习总结
(这部分要求:根据这学期学习的课程以及大学期间学习的几种编程语言、单片机以及ARM,通过分析比较对汇编语言进行总结,描述清楚该语言的作用,特点,与其他语言的区别以及将来的主要作用范围。
内容可以结合文字,图表,不少于两页。
)
(格式要求:宋体,小四,行间距为20磅。
图表的标题为宋体五号)
在上学期我们专业开设了单片机课程,在学习单片机的过程中,我们就接触到了汇编语言,但那时候没有系统的学习,只知道像mov、jump、inc这样一些常用的简单指令。
而在最后单片机的课程设计中,我们采用的是c语言来编程。
那时候认为汇编语言并没有什么大的作用,汇编语言能做的,c语言也都能做,而且更为简单。
但真正接触这门课后,才发现汇编语言有它自己独特的作用,而且也不是很容易就可以弄懂的。
相比较其他高级语言如C++、java等,电脑等于在迁就人的思维方式。
但学汇编,人却必须要去迁就电脑的思维方式。
要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。
通过这一学期的学习,我对汇编只是有了初步的掌握。
现在我来通过比较汇编语言和几种高级语言的区别来对汇编语言作一个小小的总结。
在我们学过的高级语言,Java和C++都是面向对象语言,它们都能够实现面向对象思想(封装、继承、多态)。
C++是在C语言基础上进行扩展而来的一门面向对象的程序设计语言。
相比其他语言,它具有很多优点和特点的,它对面向对象的支持,让我们可以将一个功能模块封装成一个类,对于使用这个功能模块的人,只需调用这个类的方法就可以了,不必关心功能如何实现的,这一点可以在开发大型项目的时候提高开发效率,减少开发周期。
同时,可以通过对类进行派生来扩展模块的功能,而不影响原有的功能。
C++的异常处理机制可以很好地对代码的异常进行捕捉,保证了在程序运行时出现错误不至于整个崩溃掉,也为我们对于运行时错误的处理提供了一种有效的途径。
C++程序的依赖性小,对C++代码进行静态连接,就能保证生成的可执行程序在别的电脑上直接运行。
Java语言是一种新的面向对象的程序设计语言,它除了几种基本的数据类型外,大都是类似c++中的对象和方法,程序代码大多体现了类机制,以类的形式组织,由类来定义对象的各种行为。
Java语言与C++类似,如果用户了解C++和面向对象的概念,就可以很快编写出Java 程序;此外,Java又不同于诸如C++语言提供的各种各样的方法,它只提供了基本的方法,这样就减少了编程的复杂性。
Java语言虽然简单,但很高效,它可以用面向对象的方法来描述用户的每一个动作。
Java同样支持类继承,这样也减少了程序设计的复杂性。
Java程序可以在任何平台上运行,如MS-DOS, Windows,Unix等,因此具有很强的移植性。
由于它支持TCP/IP协议,使得用户可以通过浏览器访问到Internet上的各种动态对象。
并且在网络上用户可以交互式地进行各种动作,而多线程技术的引入使得这种交互式操作更为容易。
而汇编语言是面向机器的程序设计语言。
在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
所以汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。
汇编程序把汇编语言翻译成机器语言的过程称为汇编。
汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。
但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。
汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。
汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。
汇编语言有这样几个特点:
1.机器相关性
这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。
使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
2.高速度和高效率
汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等,且占用内存少,执行速度快,是高效的程序设计语言。
3.编写和调试的复杂性
由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,因此在进行程序设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源。
这样,就不可避免地加重了程序员的负担。
与此相同,在程序调试时,一旦程序的运行出了问题,就很难发现。
汇编语言总是被称为是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然是计算机(或微机)底层设计程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。
只是,现在计算机最大的领域为IT软件,也是我们常说的计算机应用软件编程,在熟练的程序员手里,使用汇编语言编写的程序,运行效率与性能比其它语言写的程序相对提高,但是代价是需要更长的时间来优化,如果对计算机原理及编程基础不扎实,反而增加其开发难度,实在是得不偿失,对比2010年前后的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司不可以让一个团队使用汇编语言来编写所有的东西,花上几倍甚至几十倍的时间,不如使用其它语言来完成,只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市场经济下的必然结果。
历史上,汇编语言曾经是非常流行的程序设计语言之一。
但随着软件规模的增长,以及随之而来的对软件开发进度和效率的要求,高级语言逐渐取代了汇编语言。
即便如此,高级语言也不可能完全替代汇编语言的作用。
就拿Linux内核来讲,虽然绝大部分代码是用C语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码。
由于这部分代码与硬件的关系非常密切,即使是C语言也会显得力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。
第一、汇编语言的大部分语句直接对应着机器指令,执行速度快,效率高,代码体积小,在那些存储器容量有限,但需要快速和实时响应的场合比较有用,比如仪器仪表和工业控制设备中。
第二、在系统程序的核心部分,以及与系统硬件频繁打交道的部分
可以使用汇编语言。
比如操作系统的核心程序段、I/O接口电路的初始化程序、外部设备的低层驱动程序,以及频繁调用的子程序、动态连接库、某些高级绘图程序、视频游戏程序等等。
第三、汇编语言可以用于软件的加密和解密、计算机病毒的分析和防治,以及程序的调试和错误分析等各个方面。
第四、通过学习汇编语言,能够加深对计算机原理和操作系统等课程的理解,能够感知、体会和理解机器的逻辑功能。
汇编语言是机器语言的助记符,相对于比枯燥的机器代码易于读写、易于调试和修改,同时优秀的汇编语言设计者经过巧妙的设计,使得汇编语言汇编后的代码比高级语言执行速度更快,占内存空间少等优点。
虽然汇编语言也存在编写复杂程序时明显的局限性,依赖于具体的机型,不能通用,也不能在不同机型之间移植这样一些缺点。
但是学习汇编语言向上可以理解各种软件系统的原理,打好技术理论基础;向下可以掌握硬件系统的原理,打好实践应用基础,所以说汇编语言的学习对于一个初学计算机或者说想真正了解计算机原理的编程人员是非常重要的。