汇编语言课程设计 pdf

合集下载

汇编语言课程设计

汇编语言课程设计

«汇编语言》课程设计、题目1.简单的计算器2.字典3.“ Pc”钢琴二、目的:本次课程设计的目的是提高学生分析问题、解决问题的能力以及实际动手能力,进一步加深学生对汇编语言程序设计基本理论的理解, 使学生熟练掌握汇编语言程序上机调试的方法技巧、结构化程序设计技术及高级汇编语言技术,能编写较复杂的应用程序,为学习后继课程打下扎实的基础。

三、已知技术参数和设计要求:1. 编写一个有符号多位十进制数的四则运算计算器程序,所输入的算式如下例所示:—278+ 32 =—132——12=11 *—32=—1234/—18= 要求程序能接收键入的算式,在接收到‘='号时,计算并以有符号十进制数的形式显示结果,然后允许用户继续键入算式。

如果键入算式后再键入‘ . ',则显示结果并结束整个程序。

(‘/'为整除)2. 已知一个由英语单词组成的字符串已按字典序排好,每个单词以空格符为结束,该串的首二字节为16 位无符号二进制数,用以说明串的长度。

试编程能从键盘上输入单词(以空格字符为结束),若字符串中没有该单词,则将该单词插入该串适当的位置,使其仍保持字典序,并修改串长度,显示单词在串中位置及串长度;若字符串中有该单词,则显示字符串中所有包含该单词的单词,及其在字符串中的位置。

3. 编写程序,程序运行时使PC机成为一架可弹奏的“钢琴”。

当按下数字键0~9时, 发出6,7, 1 ,2,3,4,5,6,7,i ,十个音调,按‘ . '则退出“钢琴”状态。

总体要求1)程序结构清晰,相对独立的功能应尽量用子程序实现2)有较多提示信息,以方便用户使用3)能检测用户输入的错误,并作相应处理4)每个程序应作较多测试,以证明程序的正确性实验一:源代码:DATA SEGMENTSIG DB 00H ;用来记录要进行的运算NUM1 DW 0 ;用来记录输入的第一个数NUM2 DW 0 ;用来记录输入的第二个数X DB 10 ; 当输入的下一个数字时,大小为前一个数需要乘 10 DATA ENDS ; 再加上当前的数CODE SEGMENTMAIN PROC FARJMP MAINT3L1: CMP AL,2EHJZ quit; 当输入的字符为” .”时转去 quit ,即程序运行结束CMP CX,1JNZ L2ASSUME CS:CODE,DS:DATASTART: MAINT1: MOV AH,1 ; INT 21H MAINT3: CMP AL,30H JL L1 CMP AL,3DH JZ MAINT2 CALL BIN CMP DX,1JNZ L5 NEG BXMOV DX,0 L5: CMP CX,1JZ L3 MOV NUM2,BX ; JMP MAINT3 L3: 输入要运算的算式 ;和 0作比较 ; 小于 0 时转去 L1 ;当输入”=”时转去MAINT2进行计算结果 ;调用子程序BIN ,计算数值真实大小 ;当DX 为1使需对BX 进行取反 ; 恢复 DX CX 不等于1时记录当前输入的第二个数MOV NUM1,BX; 记录当前输入的第一个数MOV SIG,AL MOV CX,2 ;当CX不等于1时,即为当前要进行的运算JMP MAINT1L2: CMP AL,2DHJNZ MAINT1MOV DX,1JMP MAINT1 quit: MOV AH,4CHINT 21HMAINT2:CMP SIG,'+'JNZ S1MOV AX,NUM1MOV BX,NUM2ADD AX,BXJMP MAINT4S1: CMP SIG,'-'JNZ S2MOV AX,NUM1SUB AX,NUM2JMP MAINT4S2: CMP SIG,'*'JNZ S3MOV AX,NUM1MOV DX,0IMUL NUM2JMP MAINT4S3: MOV AX,NUM1MOV BX,NUM2IDIV BLCBWMAINT4:MOV BP,SP TESTAX,8000HJZ OUT2 MOVBX,AX MOV DL,'-' ;返回MINT1继续输入算式; 程序运行结束;SIG 为” +”时进行加法操作;SIG 为”- ”时进行减法操作;SIG 为” * ”时进行乘法操作; 否则进行除法运算; 当数为负数时进行取反操作INT 21HMOV AX,BXNEG AX ;取AX的反; 不断乘以10OUT2: DIV XMOV BL,AHMOV BH,0PUSH BXMOV AH,0CMP AL,0JNZ OUT2OUT3: POP DX ; 输出所求的结果; 因为显示的是ascall 码,所以需加上30H ADD DL,30HMOV AH,2INT 21H; 当bp 和sp 指向同一位置时输出结束CMP BP,SPJNZ OUT3MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HJMP START ;返回START进行下一轮计算MAIN ENDPBIN PROC NEAR ; 子程序BIN 用来转换输入的数字大小,即计算数值; 的真实大小PUSH DXMOV BX,0INC CXSUB AL,30HCBWXCHG AX,BXMOV DX,10MUL DXXCHG AX,BXBINT1: MOV AH,1INT 21HCMP AL,30H ; 判断输入的字符是否为数值JL EXITCMP AL,3DHJZ EXIT ; 当输入的字符不为字符时退出子程序SUB AL,30HBIN CBWXCHG AX,BXMOV DX,10 ;同过乘10 相加得到真实数值MUL DXXCHG AX,BXADD BX,AXJMP BINT1EXIT: POP DXRETBIN ENDPCODE ENDSEND START 运行结果:DATA SEGMENT;DICTIONARY 字典字符串,首两个字节为16位无符号二进制数,说明字符串长 度。

汇编语言课课程设计

汇编语言课课程设计

汇编语言课课程设计一、教学目标本课程的教学目标是使学生掌握汇编语言的基本语法、指令集、程序设计方法和相关概念,培养学生运用汇编语言进行程序设计的能力。

具体目标如下:1.知识目标:–掌握汇编语言的基本语法和规则。

–熟悉汇编语言的指令集,包括数据传输、算术运算、逻辑运算、控制流等。

–了解汇编语言与硬件的关系,理解程序执行的过程。

2.技能目标:–能够使用汇编语言编写简单的程序,实现数据的输入输出、计算等功能。

–能够阅读和理解汇编语言程序,进行程序调试和优化。

–能够运用汇编语言进行硬件编程和系统开发。

3.情感态度价值观目标:–培养学生对汇编语言编程的兴趣,提高学生对计算机科学的热爱。

–培养学生解决问题的能力,培养学生的创新精神和团队合作意识。

二、教学内容根据教学目标,本课程的教学内容主要包括以下几个方面:1.汇编语言的基本语法和规则,包括数据类型、寄存器、指令格式等。

2.汇编语言的指令集,包括数据传输指令、算术运算指令、逻辑运算指令、控制流指令等。

3.汇编语言与硬件的关系,包括寄存器文件、程序计数器、栈等硬件部件的工作原理。

4.汇编语言程序的设计方法,包括程序的编写、调试和优化。

5.汇编语言在硬件编程和系统开发中的应用。

三、教学方法为了实现教学目标,本课程将采用多种教学方法,包括:1.讲授法:通过教师的讲解,使学生掌握汇编语言的基本概念和语法规则。

2.案例分析法:通过分析典型的汇编语言程序,使学生理解程序的设计方法和编程技巧。

3.实验法:通过上机实验,使学生亲自动手编写和调试汇编语言程序,提高学生的编程能力。

4.讨论法:通过小组讨论,激发学生的思考,培养学生的团队合作意识和创新能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:选用权威、实用的汇编语言教材,作为学生学习的主要参考资料。

2.参考书:提供相关的汇编语言编程书籍,供学生深入学习和参考。

3.多媒体资料:制作课件、教学视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。

王爽《汇编语言》课程设计一

王爽《汇编语言》课程设计一

课程设计(一)一、有除法溢出的dtoc子程序为:dtoc: push cxs:mov cx,10call divdw ;进行16位除法,被除数低16位存放在ax中,高16位存放在dx中,除数为10,存放在cx中,并调用不会产生溢出的除法运算的子程序divdwadd cx,30h ;将余数加上30h,就得到十进制数码字符对应的ASCII 码mov [si],cx ;将十进制数码字符对应的ASCII码存放在数据段中inc sipush ax ;保存此时的axadd ax,dx ;商是由ax和dx中的数据组合而成,为了判断商是否为0 mov cx,ax ;将商的高16位和低16位加起来,送给cxpop ax ;恢复axjcxz ok ;若商为0,则结束子程序jmp short sok: mov byte ptr [si],0 ;在字符串的结尾添个0call back ;调用把字符串反过来的子程序backpop cxretdivdw:mov bx,axmov ax,dxmov dx,0div cxpush axmov ax,bxdiv cxmov cx,dxpop dxretback:push dipush cxmov cx,simov di,0s1:mov al,[di]mov ah,0push axinc diloop s1mov di,0mov cx,sis2:pop axmov [di],alinc diloop s2pop cx二、课程设计首先,定义数据的时候,定义了一个栈段,在data段的开始定义了一个有10字节的空间,用来把数据转换成十进制形式的字符串,后面的总收入、雇员数、人均收入均为dword数据,方便后面统一来进行循环处理。

其次,刚开始的时候,用一个循环来计算人均收入,并把得到的数据放在data段中(在data段中定义了21个为0的dword数据用来存放人均收入)。

再次,在总体思路上,就是先定义一个32*21个字节的table段,把分别用子程序dtoc 把每个用二进制存放的数据转换成对应的十进制字符串,把字符串存放到table段中相应的位置,通过四个循环能把所有数据对应的字符串存放到table段中,这时的table 段中的存储模式与要求显示在屏幕上的模式一样,所以可以用一个双重循环将table 中的内容一个字节一个字节地复制到显示缓冲区的偶地址上,奇地址存放字符的颜色属性白色07h。

汇编语言的课程设计

汇编语言的课程设计

汇编语言的课程设计一、教学目标本课程的教学目标是使学生掌握汇编语言的基本概念、语法和程序设计方法,培养学生运用汇编语言进行程序设计的能力。

具体目标如下:1.知识目标:(1)了解汇编语言的基本概念和特点;(2)掌握汇编语言的语法规则,包括数据类型、指令系统、程序结构等;(3)熟悉汇编语言的编程技巧,如寄存器分配、内存管理等;(4)了解汇编语言与机器语言的关系及汇编过程。

2.技能目标:(1)能够使用汇编语言编写简单的程序,如计算器、排序等;(2)能够阅读并理解汇编语言程序;(3)能够对汇编语言程序进行调试和优化。

3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情;(2)培养学生勇于探索、善于合作的科学精神;(3)培养学生严谨治学、追求卓越的学习态度。

二、教学内容本课程的教学内容主要包括以下几个部分:1.汇编语言的基本概念和特点;2.汇编语言的语法规则,包括数据类型、指令系统、程序结构等;3.汇编语言的编程技巧,如寄存器分配、内存管理等;4.汇编语言与机器语言的关系及汇编过程;5.汇编语言程序的设计与调试。

教学大纲安排如下:第1-2课时:汇编语言的基本概念和特点;第3-4课时:汇编语言的语法规则;第5-6课时:汇编语言的编程技巧;第7-8课时:汇编语言与机器语言的关系及汇编过程;第9-10课时:汇编语言程序的设计与调试。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解汇编语言的基本概念、语法规则和编程技巧;2.案例分析法:分析典型的汇编语言程序,使学生更好地理解编程思想;3.实验法:让学生动手编写和调试汇编语言程序,提高实际操作能力;4.讨论法:分组讨论问题,培养学生的合作精神和沟通能力。

四、教学资源本课程所需教学资源包括:1.教材:《汇编语言程序设计》;2.参考书:《汇编语言教程》、《汇编语言实践》;3.多媒体资料:课件、教学视频等;4.实验设备:计算机、汇编语言编程环境。

汇编语言课程设计

汇编语言课程设计

课程设计报告课程名称:汇编语言程序设计课题名称:系统时间显示姓名:阚鹏班级:信息与计算科学082班指导老师:邢远秀老师报告日期:2010年第一章前言1.1设计背景课程设计的主要目的是提高实践能力,包括对硬件的理解分析能力和汇编语言的编程能力。

与其他课程不同的是,本课程对硬件有较高的依赖性,因此课程设计的灵活性受到了一定的限制,最好有相应的实验平台支持(尤其是硬件部分),本次课程设计主要是汇编语言部分的练习,通过这部分的练习,学生应该熟悉汇编语言的寻址方式和指令系统,掌握BIOS和DOS系统的功能调用,编制较大程序时的基本方法和熟悉宏汇编的编程环境。

使学生既具备完备的理论知识,也能够解决实际学习中碰到的问题。

1.2基本功能要求1.显示系统时间,把系统时间根据不同的提示输入,用不同的背景颜色和前景颜色显示于不同的位置。

2.注意把系统时间放在以【0b800】开始的显存地址中第二章程序设计2.1题目设计的主要问题和解决方法···························································一:基本流程:1:输出提示“阚鹏制作的程序”(效果最好是滚动的出项)------>3“清屏”4提示:输出依次输入的(设置光标,输出提示的字符串,接受字符,处理)--------->5屏幕接受四个输入的数据-------->·6定义宏(输入的有四个量)注意:还是用过程实现---》7循环提示输入即可二:问题:1:字体的问题,是否可以放大2:输出结果能否滚动三:技巧处理:1:对流动时间,采用调用一次系统时间,之后采取延时程序,每次延时计时为一秒(没有可行性)2:对中断的重定义四:难点:对于输出时,位置和时间的选择的输出的方式是怎么样?方法有如下的几种:(优缺点在以后补充,已经分析完全了)方案1:打印选择的菜单,进行选择缺点:选择的选项很少,极大的限制了输出结果的完美程度优点:操作很简单方案2:自己输入显示的颜色和位置,宏定义可以不?完全可以(颜色的输入实现数字变址地址与输出提示的一致)构建的数组时这样的处理情况:用每个字符组表示位置,内含多种前景颜色(这样造成了空间的浪费),还是采用分开存储的方式进行,然后用宏定义函数进行先对的取舍优点:输出结果很完美,满足使用的要求缺点:需要输入的数据相对来讲是有一定的复杂度的,但对小型的输入来讲是可以接受的方案3:输出的位置随着鼠标的位置变化而变化优点:很大程度上满足了要求,但是只能满足其中之一的要求,不能够完全满足用户的要求缺点:操作是非常复杂的最终结论:方案2 综合操作的复杂度和可执行情况来讲,只是可以接受的操作,同时它的输入也是在接受范围之内图2.4.12.3设计的不足和需要改进的地方通过努力,其实问题还是有很多很是困扰自己1:关于中断的重定义2:关于部分的寻址方式的理解和细节的把握3:难点是系统时间的动态处理第三章课程设计小结现在我来总结一下这周所学的内容以及我的心得体会。

汇编语言课程设计2

汇编语言课程设计2

汇编语言 课程设计2一、课程目标知识目标:1. 让学生掌握汇编语言的基本概念,包括寄存器、指令、寻址方式等;2. 培养学生运用汇编语言进行程序设计的能力,能够编写简单的汇编程序;3. 使学生了解汇编语言与硬件的关系,理解计算机的工作原理。

技能目标:1. 培养学生运用汇编语言进行问题分析、程序设计和调试的能力;2. 培养学生熟练使用汇编语言开发工具,如汇编器、链接器等;3. 培养学生具备一定的计算机硬件操作能力,能够进行基本的汇编指令执行过程分析。

情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发学习汇编语言的积极性;2. 培养学生具备良好的编程习惯,注重程序的可读性和效率;3. 培养学生具备团队协作意识,能够在小组合作中发挥各自优势,共同解决问题。

课程性质分析:本课程为计算机科学与技术专业核心课程,旨在培养学生的计算机底层编程能力,加深对计算机硬件和软件的深入理解。

学生特点分析:学生具备一定的计算机基础和编程能力,但可能对汇编语言较为陌生,需要从基本概念入手,逐步引导学生掌握汇编语言编程技巧。

教学要求:1. 结合实际案例,注重理论与实践相结合,提高学生的实际操作能力;2. 采用任务驱动法,引导学生主动探究,培养学生的自主学习能力;3. 强化实践环节,注重个体差异,提供针对性的辅导和指导。

二、教学内容1. 汇编语言基础知识:- 寄存器概念与分类- 指令系统与指令格式- 常用汇编指令及其功能- 数据表示与寻址方式2. 汇编语言程序设计:- 程序结构及伪指令- 汇编程序编写与调试方法- 简单程序设计实例分析- 子程序设计与调用3. 汇编语言与硬件的关系:- 计算机硬件工作原理概述- 指令执行过程分析- 中断与异常处理- 存储器组织与管理4. 实践环节:- 使用汇编语言开发工具进行程序编写与调试- 常见汇编程序案例分析- 小组项目:设计并实现一个简单的汇编程序教学内容安排与进度:第一周:汇编语言基础知识(1-2章)第二周:汇编语言程序设计(3-4章)第三周:汇编语言与硬件的关系(5-6章)第四周:实践环节(7章)教材章节关联:1. 汇编语言基础知识:对应教材第1-2章内容2. 汇编语言程序设计:对应教材第3-4章内容3. 汇编语言与硬件的关系:对应教材第5-6章内容4. 实践环节:对应教材第7章内容教学内容确保科学性和系统性,结合实际案例,使学生能够循序渐进地掌握汇编语言知识,提高编程能力。

汇编语言课程设计

汇编语言课程设计

汇编语言课程设计1. 引言汇编语言是一种底层的编程语言,相比高级语言,它更接近计算机底层硬件。

学习汇编可以帮助我们深入理解计算机底层实现原理,对于提高我们的计算机编程能力有很大帮助。

本文将介绍我所设计的汇编语言课程项目。

2. 项目背景本项目的背景是我所在的大学计算机科学专业的汇编语言课程设计。

该课程设计的目的是让学生完成一个简单的汇编语言程序,对汇编语言编程有一个初步了解。

3. 项目内容我设计的汇编语言课程项目是一个简单的计算器程序。

该程序能够实现加减乘除四种基本运算。

该计算器程序将用户输入的两个数进行四则运算,并将结果输出。

程序具体实现过程如下:1.用户输入两个数2.用户输入运算符(+、-、*、/)3.程序进行相应的运算4.将运算结果输出4. 程序实现细节4.1 输入部分在IBM PC或IBM兼容机上的汇编程序中,BIOS提供了一个10号中断,用于从键盘读取单个字符。

可以使用该中断来实现从键盘输入数值和运算符。

具体来说,在程序中使用int 10h指令调用10号中断,该指令会将读取到的字符放入到AL寄存器中。

例如,要读取输入的第一个数,可以使用下面的汇编代码:xor ax, axmov ah, 0int 16h ;等待按键mov bh, 10 ;设置缓冲区大小为10lea di, num1 ;设置存放用户输入的缓冲区mov ch, 0 ;初始化输入计数器read_num:mov ah, 0 ;再次调用int 16hint 16h ;读取单个字符到AL寄存器cmp al, 0dh ;判断是否为回车键je read_num_donecmp al, 20h ;判断是否为空格je read_numcmp al, 30hjb read_numcmp al, 39hja read_nummov [di], al ;添加输入inc di ;移动指针inc ch ;计数cmp ch, bh ;缓冲区是否满了jne read_numread_num_done:mov [di], 0 ;字符串结束该代码段可以实现从键盘读取用户输入的第一个数,并存储到num1字符串中。

汇编语言第二版课程设计

汇编语言第二版课程设计

汇编语言第二版课程设计课程背景汇编语言是一门底层编程语言,它直接操作计算机底层硬件。

因此,它对于计算机专业学生是一门非常重要的课程。

在本课程设计中,我们选用《汇编语言》第二版作为教材,通过具体的课程设计来帮助学生更好地掌握汇编语言的基础知识和应用。

课程目标通过本课程设计的学习和实践,学生应该能够:1.掌握汇编语言的基础语法和常用指令;2.熟悉汇编程序的调试和优化过程;3.初步了解CPU的基本工作原理;4.能够实现一些简单的应用程序。

课程内容第一讲:汇编语言基础本讲主要介绍汇编语言的基本语法和常用指令,包括寄存器、内存、运算符、标志寄存器等内容。

通过实例代码的编写和调试,让学生逐步熟悉汇编语言的基本使用方法。

第二讲:条件分支与循环本讲主要介绍条件分支和循环语句的使用方法。

通过实际应用场景的模拟,让学生深入了解条件分支和循环语句的实现原理。

第三讲:子程序本讲主要介绍子程序的概念和使用方法。

通过实例代码的编写和调试,让学生了解如何进行程序模块化设计,提高程序的复用性和可维护性。

第四讲:中断与异常本讲主要介绍中断和异常的概念和使用方法。

通过实例代码的编写和调试,让学生了解中断和异常的实现机制,提高程序的可靠性和稳定性。

课程实验课程实验是本课程的重要组成部分,通过实际操作让学生巩固所学的知识。

本课程设计中,我们安排了三个实验:1.编写一个能够实现加、减、乘、除四种基本运算的计算器程序;2.编写一个能够将任意大写字母转换成小写字母的程序;3.编写一个能够实现简单计算器、机器翻译和音乐播放器的操作系统。

考核方式本课程以实验报告和期末考试相结合的方式进行考核。

实验报告占总成绩的70%。

期末考试占总成绩的30%。

实验报告和期末考试的具体要求将在课程教学过程中发布。

总结通过本课程的学习和实践,学生能够掌握汇编语言的基础知识和应用方法,提高编程能力和代码质量。

本课程的设计旨在让学生逐步实现一个简单的操作系统,帮助他们更好地理解计算机底层的工作原理和实现过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言课程设计题目:中断技术程序设计姓名:、大川学号:、、、、、、、、、班级:12计算机应用技术(1)班指导老师:、、、、日期:2013年12月13日目录一、汇编语言1、汇编语言(Assembly Language)是面向机器的程序设计语言。

在汇编语言中,用助记符Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。

使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。

汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。

因此,有时候人们也把汇编语言称为组合语言。

简介汇编语言是直接面向处理器(Processor)的程序设计语言。

处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。

每一种处理器都有自己可以识别的一整套指令,称为指令集。

处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态如图所示,在电路中,每条机器指令都表现为一组电信号,通过一排导线进入处[1] 理器。

这些电信号有的呈高电平,有的呈低电平,哪些为高,哪些为低,取决于不同的机器指令。

如果把高电平记为“1”,低电平记为“0”,那么,不同的机器指令将表现为不同的二进制序列,由于它们的无规律性,这就使得机器指令难以理解、书写和记忆人类最容易接受自己每天都使用的自然语言。

为了使机器指令的书写和理解变得容易,需要借鉴自然语言的优点,为此就引入了汇编语言。

汇编语言使用符号来代表不同的机器指令,而这些符号非常接近于自然语言的要素。

基本上,汇编语言里的每一条指令,都对应着处理器的一条机器指令。

汇编语言包括两个部分:语法部分和编译器。

语法部分提供与机器指令相对应的助记符,方便指令的书写和阅读。

当然,汇编语言的符号可以被人类接受,但不能被处理器识别,为此,还要由汇编语言编译器将这些助记符转换成机器指令。

根据应用领域的不同,处理器的种类繁多,比如用于工业控制和嵌入式计算的Z80、MC68000和MCS-51、广泛应用于个人计算机的INTELx86系列,以及基于ARM体系结构的处理器,包括苹果公司在内的大企业都是ARM的客户。

事实上,今天的ARM是最受欢迎的32位嵌入式处理器,而且,今天的ARM处理器比INTEL奔腾系列卖得还多,基本上是3:1的比例。

不同的处理器有不同的指令集。

正是因为这个原因,每一种处理器都会有自己专属的汇编语言语法规则和编译器。

即使是同一种类型的处理器,也可能拥有不同的汇编语言编译器。

一个明显的例子是INTEL x86系列的处理器,围绕它就开发出好多种编译器来,如MASM、NASM、FASM、TASM和AT&T等。

而且,这每一种编译器,都使用不同的语法。

2、优缺点优点1、因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

使用汇编语言,可以访问所有能够被访问的软、硬件资源。

3、目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛。

4、缺点1、汇编语言是面向机器的,处于整个计算机语言层次结构的底层,故被视为一种低级语言,通常是为特定的计算机或系列计算机专门设计的。

因此,不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性;5、难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试;6、使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。

3应用历史上,汇编语言曾经是非常流行的程序设计语言之一。

随着软件规模的增长,以及随之而来的对软件开发进度和效率的要求,高级语言逐渐取代了汇编语言。

但即便如此,高级语言也不可能完全替代汇编语言的作用。

就拿Linux内核来讲,虽然绝大部分代码是用C语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码。

由于这部分代码与硬件的关系非常密切,即使是C语言也会显得力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。

二、汇编语言的特点一方面,汇编语言指令是用一些具有相应含义的助忆符来表达的,所以,它要比机器语言容易掌握和运用,但另一方面,它要直接使用CPU的资源,相对高级程序设计语言来说,它又显得难掌握。

汇编语言程序归纳起来大概有以下几个主要特性。

1、与机器相关性汇编语言指令是机器指令的一种符号表示,而不同类型的CPU有不同的机器指令系统,也就有不同的汇编语言,所以,汇编语言程序与机器有着密切的关系。

由于汇编语言程序与机器的相关性,所以,除了同系列、不同型号CPU之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如:小型机和微机等)CPU 之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。

2、执行的高效率正因为汇编语言有“与机器相关性”的特性,程序员用汇编语言编写程序时,可充分发挥自己的聪明才智,对机器内部的各种资源进行合理的安排,让它们始终处于最佳的使用状态,这样做的最终效果就是:程序的执行代码短,执行速度快。

现在,高级语言的编译程序在进行寄存器分配和目标代码生成时,也都有一定程度的优化(在后续课程《编译原理》的有关章节会有详细介绍),但由于所使用的“优化策略”要适应各种不同的情况,所以,这些优化策略只能在宏观上,不可能在微观上、细节上进行优化。

而用汇编语言编写程序几乎是程序员直接在写执行代码,程序员可以在程序的每个具体细节上进行优化,这也是汇编语言程序执行高效率的原因之一。

3、编写程序的复杂性汇编语言是一种面向机器的语言,其汇编指令与机器指令基本上一一对应,所以,汇编指令也同机器指令一样具有功能单一、具体的特点。

要想完成某件工作(如计算:A+B+C等),就必须安排CPU的每步工作(如:先计算A+B,再把C加到前者的结果上)。

另外,在编写汇编语言程序时,还要考虑机器资源的限制、汇编指令的细节和限制等等。

由于汇编语言程序要安排运算的每一个细节,这就使得编写汇编语言程序比较繁琐、复杂。

一个简单的计算公式或计算方法,也要用一系列汇编指令一步一步来实现。

4、调试的复杂性在通常情况下,调试汇编语言程序要比调试高级语言程序困难,其主要原因有四:汇编语言指令涉及到机器资源的细节,在调试过程中,要清楚每个资源的变化情况;程序员在编写汇编语言程序时,为了提高资源的利用率,可以使用各种实现技巧,而这些技巧完全有可能破坏程序的可读性。

三、课程设计的目的培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。

为将来从事专业工作打下基础,培良好的职业道德和严谨的工作作风。

综合运用汇编语言的理论知识进行中断处理程序设计,通过理论推导得出相应结论,通过修改中断向量表,实现自己的中断,在DOS环境下,能够每隔一段时间中断一次,并记录次数。

即在DOS环境上显示次数。

所使用的软件主要有记事本、宏汇编6.0等。

四、课程设计的要求要求:编写一个中断处理程序,要求在主程序运行过程中,每隔10秒响铃一次,并记录响铃次数。

同时在屏幕上显示信息次数,按键后恢复原状。

(1)学会DOS的使用,掌握程序设计方法。

(2)掌握汇编语言的基本概念、基本理论和基本方法。

注意事项:(3)必须由中断来实现本设计。

(4)每次响铃时间间隔必须相等。

(5)具备初步的独立分析和解决问题的能力;(6)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能;(7)提高综合运用所学的理论知识和方法的能力;(8)训练用系统的观点和软件开发一般规范进行软件开发,培养科学的工作方法和作风;(9)设计的题目要求达到一定工作量,并具有一定的深度和难度;五、课程设计报告内容5.1设计思想本设计通过修改中断向量表,将自己的中断程序写入中断向量表。

然后通过调用该中断功能号来实现每隔10秒系统每调用一次该中断并响一次铃,而且在屏幕上显示中断次数,按回车键结束显示。

5、2设计方案在本次课程设计的中断处理程序中,我们运用了寄存器和计数器、中断指令INT1CH,在时钟每中断一次并计一次数时,先将各个工作寄存器的内容入栈,然后次数计数器就开始计数并转换成ASCII显示。

其次,扬声器发音、次数计数器在延时、关闭中断,最后中断返回。

5、3设计步骤a.分析问题对于接受的任务要进行认真的分析,研究所给定的条件,分析最后应达到的目标,找出解决问题的规律,选择解题的方法,完成实际问题。

b.设计算法即设计出解题的方法和具体步骤。

c.编写程序根据得到的算法,用一种高级语言编写出源程序。

并通过测试。

d .对源程序进行编辑、编译和连接e .运行程序,分析结果运行可执行程序,得到运行结果。

能得到运行结果并不意味着程序正确,要对结果进行分析,看它是否合理。

不合理要对程序进行调试,即通过上机发现和排除程序中的故障的过程。

f.编写程序文档许多程序是提供给别人使用的,如同正式的产品应当提供产品说明书一样,正式提供给用户使用的程序,必须向用户提供程序说明书。

内容应包括:程序名称、程序功能、运行环境、程序的装入和启动、需要输入的数据,以及使用注意事项等。

5.4流程图:5.5程序源代码:============================================================ DATAS SEGMENTorg 2000hcount dw 1mess db 0dh,0ah,'$'buf db 1 dup(1)asc db?,?,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXmov al,1chmov ah,35hint 21hpush espush bxpush dsmov dx,offset ringmov ax,seg ringmov ds,axmov al,3chmov ah,14hint 21hpop dsin al,21hand al,ofehout 21h,alstimov di,1000delay: mov si,offfhdelay1: dec sijnz delaypop dspop axmov al,1chmov ah,25hint 21hjmp startring procpush dspush axpush cxpush almov ds,datasmov ds,axstidec countjnz exitmov dx,offset messmov ah,9int 21hmov al,bufxor al,ahmov dl,10div dlor al,30hmov asc,alor ah,30hlea dx,ascmov ah,9int 21hmov dx,300hin al,61hand al,ofchsound: xor al,02hout 61h,almov cx,oaffhwait1: loop wait1dec aljnz soundmov count,181inc bufexit:clipop dxpop cxpop dspop axiretring endpCODES ENDEND START============================================================= 5.6运行结果:六、总结:通过本次课程设计让我充分了解了汇编在实际软件开发中的作用和地位。

相关文档
最新文档