汇编课程设计报告
汇编语言第三版课程设计
汇编语言第三版课程设计一、设计目的和意义汇编语言是计算机科学中必备的基础知识,通过学习汇编语言可以深入理解计算机硬件的运作机理和指令的执行过程,为高级编程语言的学习奠定了坚实的基础。
本次课程设计旨在实现一个简单的汇编程序,通过实践操作、编写程序来掌握汇编语言的基本知识和操作。
二、设计内容1. 思路概述本次课程设计实现一个简单的汇编程序,包括以下3个模块:1.输入模块:通过用户输入来获取数据,包括运算符、操作数等;2.运算模块:对输入的数据进行处理,并输出运算结果;3.输出模块:将结果输出到屏幕上。
2. 输入模块设计1.定义变量:input db 10 ; 输入的运算符或操作数len db 0 ; 记录输入的运算符或操作数的长度2.获取用户输入:mov ah, 00hint 16h ; 等待用户输入的运算符或操作数mov [input+len], alinc len3. 运算模块设计1.定义变量:num1 db 0 ; 存放第一个操作数num2 db 0 ; 存放第二个操作数operator db 0 ; 存放运算符result db 0 ; 存放运算结果2.提取运算符和操作数:mov si, lenmov ah, 0mov [operator], byte[input]add si, 1mov al, byte [input+1]sub al, '0'mov [num1], aladd si, 1mov al, byte [input+2]sub al, '0'mov [num2], al3.进行运算:cmp [operator], '+'je addcmp [operator], '-'je subadd:mov al, [num1]add al, [num2]mov [result], aljmp donesub:mov al, [num1]sub al, [num2]mov [result], aldone:4. 输出模块设计mov ah, 02h ; 设置字符属性mov dl, [result] ; 输出计算结果add dl, '0'int 21h ; 输出结果三、总结本次课程设计通过实现一个简单的汇编程序,掌握了汇编语言的基本知识和操作。
汇编语言课程设计动画设计
汇编语言课程设计动画设计一、课程目标知识目标:1. 让学生掌握汇编语言的基本概念和原理,理解汇编语言与计算机硬件的紧密联系。
2. 使学生了解动画设计的基本原理,掌握汇编语言在动画设计中的应用方法。
3. 帮助学生掌握汇编语言编程技巧,提高解决实际问题的能力。
技能目标:1. 培养学生运用汇编语言编写简单动画程序的能力。
2. 培养学生运用汇编语言进行程序调试和优化的能力。
3. 提高学生分析问题和解决问题的能力,培养创新思维和团队协作精神。
情感态度价值观目标:1. 培养学生对计算机编程和动画设计的兴趣,激发学习热情。
2. 培养学生勇于尝试、不断探索的精神,增强自信心。
3. 使学生认识到汇编语言在计算机科学中的地位和作用,提高社会责任感。
课程性质分析:本课程为信息技术课程,旨在让学生掌握汇编语言编程技能,培养其在动画设计领域的实际应用能力。
学生特点分析:学生为高中生,具备一定的计算机操作基础和编程知识,对新鲜事物充满好奇,但可能对汇编语言较为陌生。
教学要求:1. 理论与实践相结合,注重培养学生的实际操作能力。
2. 创设情境,激发学生的学习兴趣和主动性。
3. 注重分层教学,关注学生个体差异,提高全体学生的编程素养。
二、教学内容1. 汇编语言基础知识:介绍汇编语言的基本概念、语法和指令系统,重点讲解与动画设计相关的寄存器、内存操作等内容。
- 教材章节:第一章 汇编语言概述,第二章 指令系统与语法- 内容列举:数据类型、寄存器、指令格式、寻址方式等2. 动画设计原理:讲解动画设计的基本原理,如帧动画、逐行绘制等,分析汇编语言在动画设计中的应用。
- 教材章节:第三章 动画设计基础- 内容列举:动画原理、帧动画、逐行绘制、颜色表示等3. 汇编语言编程实践:通过实例教学,让学生掌握汇编语言编程技巧,学会编写简单动画程序。
- 教材章节:第四章 汇编语言编程实践- 内容列举:汇编语言编程环境、编写源程序、编译与链接、程序调试与优化等4. 动画设计实例分析:分析经典动画设计实例,让学生了解汇编语言在实际动画制作中的应用。
王爽《汇编语言》课程设计一
课程设计(一)一、有除法溢出的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。
汇编课程设计报告
- 3 -编密码概述汇编语言:是用英文缩写形式的助记符书写指令。
汇编语言是一种面向CPU指令系统的程序语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址。
用汇编语言编写程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程成为汇编,完成汇编任务的程序称为汇编程序。
所以我在MASM汇编程序中进行汇编,通过相应的代码来调用相应的指令实现编密码一、设计要求(小标题一律用宋体小四加粗) 要求:按照以下规律编密码:1.字母A 变为E,a 变为e即是字母变成其后面的第4 个字母。
2.但Ww变Aa,Xx 变Bb,Yy 变Cc,Zz 变为Dd.3.非字母不变如1234567890,!@$4.并可以循环转换5.例如“123CHINA@”变为“123GLMRE@二、设计思想首先,先定义两个缓存区,一个用来存放输入的密码(BUF2),一个用来存放变换后的密码(BUF3)。
先输入一个十位数内的密码,然后一一对一个个字符进行判断。
先判断ascall 是否小于41H,如果是则不是字母那就不变换直接转到read1,存入BUF3。
如果大于41H 在判断是否大于61H即判断是不是小写的,如果小于的话在判断大于5bH吗?如果大于则不是字母那就不变换直接转到read1,存入BUF3。
如果小于的话,在判断是不是大于w的ascall,如果大于就转到read3,减22在,存入buf3.否则转到read4,加4在存入BUF3。
如果大于等于61H的话,同样的道理,判断是否大于W,如果大于在判断大于7AH吗。
判断是不是字母,如果不是那就不变换直接转到read1,存入BUF3。
否则转到read3减22,在存入BUF3。
如果没有大于77H,直接转到read4,加4在存入BUF3。
最后将变换后的密码输出来。
输出后并将其转到qing,既将BUF2和BUF3缓存区的数据清空,在回到start1,重新输入一个字符串并对它进行编密码转换。
cop8000汇编课程设计
cop8000汇编课程设计一、课程目标知识目标:1. 理解并掌握COB8000汇编语言的基本概念和指令系统;2. 学会使用汇编语言进行程序设计和调试;3. 掌握汇编语言中的寄存器、内存寻址方式及其应用;4. 了解汇编语言与硬件的密切关系,理解程序执行的底层原理。
技能目标:1. 能够运用汇编语言编写简单的程序,实现基础的计算和控制功能;2. 能够进行汇编程序的调试和优化,提高程序执行效率;3. 能够分析并解决汇编程序中常见的问题,提升编程技能。
情感态度价值观目标:1. 培养学生对计算机底层原理的兴趣,激发学习积极性;2. 培养学生的团队合作意识,学会在编程过程中相互交流、协作;3. 培养学生严谨、细心的编程习惯,提高对程序质量的追求。
课程性质:本课程为计算机科学与技术专业选修课程,侧重于汇编语言的实践应用和底层原理探究。
学生特点:学生已具备一定的计算机基础和编程能力,对底层原理有一定了解,但汇编语言学习经验不足。
教学要求:结合课程性质和学生特点,注重理论与实践相结合,以实例教学为主,引导学生掌握汇编语言的核心知识,提高编程实践能力。
在教学过程中,关注学生的学习反馈,适时调整教学策略,确保课程目标的达成。
通过本课程的学习,使学生能够独立完成简单的汇编程序设计,为后续相关课程打下坚实基础。
二、教学内容1. 汇编语言概述:介绍汇编语言的发展历程、特点及应用场景,引导学生了解汇编语言的重要性。
- 教材章节:第一章 汇编语言概述2. COB8000汇编指令系统:讲解汇编指令的分类、格式及功能,重点掌握常用指令的使用方法。
- 教材章节:第二章 COB8000汇编指令系统3. 寄存器与内存寻址:介绍寄存器的分类、用途,讲解内存寻址方式,为程序设计打下基础。
- 教材章节:第三章 寄存器与内存寻址4. 汇编语言程序设计:通过实例讲解汇编程序的结构、编写方法和调试技巧,提高学生的编程实践能力。
- 教材章节:第四章 汇编语言程序设计5. 汇编程序调试与优化:分析汇编程序中常见的问题,介绍调试方法和优化策略,提升程序质量。
汇编求平均值课程设计
汇编求平均值课程设计一、课程目标知识目标:1. 让学生掌握汇编语言中平均值计算的基本算法。
2. 使学生理解汇编语言中的寄存器使用、运算指令和数据存储等知识。
3. 引导学生运用汇编语言解决实际问题,如求一组数据的平均值。
技能目标:1. 培养学生运用汇编语言进行数据处理和分析的能力。
2. 提高学生编写、调试汇编程序的能力。
3. 培养学生的逻辑思维能力和问题解决能力。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发学习热情。
2. 培养学生的团队协作精神,学会分享、交流编程经验。
3. 引导学生认识到编程在生活中的实际应用,增强实践意识。
课程性质:本课程为计算机科学与技术学科的相关课程,旨在让学生掌握汇编语言的基本知识,培养编程能力和实际应用能力。
学生特点:学生处于高年级阶段,已具备一定的计算机编程基础,具有较强的学习能力和探究精神。
教学要求:结合学生特点,注重理论与实践相结合,提高学生的编程能力和问题解决能力。
通过本课程的学习,使学生能够独立完成汇编语言程序的设计与实现。
二、教学内容1. 汇编语言基础知识回顾:寄存器、指令系统、数据表示和存储。
2. 汇编语言程序结构:段定义、数据段、代码段、堆栈段。
3. 平均值计算算法原理:介绍算术平均值的概念,分析算法步骤。
4. 汇编语言实现平均值计算:- 数据定义:如何定义数据段,声明需要计算的平均值数据。
- 算法实现:使用汇编指令进行累加、除法运算等。
- 结果存储:将计算结果存储到寄存器或内存单元。
5. 程序调试与优化:分析汇编程序执行流程,调试常见错误,优化程序性能。
6. 实际应用案例分析:分析实际场景中的平均值计算问题,并进行编程实现。
教材章节关联:- 《汇编语言程序设计》第四章:汇编语言基本指令和寄存器使用。
- 《汇编语言程序设计》第五章:汇编语言程序结构和程序设计方法。
- 《汇编语言程序设计》附录:调试工具和调试技巧。
教学内容安排和进度:- 课时1:汇编语言基础知识回顾。
实验五汇编语言程序设计实验(一)
实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。
2、掌握循环程序的设计。
3、掌握汇编语言主程序与子程序的调用和参数传递。
4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。
二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。
要求统计字符串用子程序完成。
data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。
2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。
写出操作步骤,程序清单,程序注释,实验现象。
汉诺塔汇编课程设计
汉诺塔 汇编课程设计一、课程目标知识目标:1. 学生能理解汉诺塔问题的起源、规则及其数学原理。
2. 学生能掌握汇编语言的基本指令,并运用其编写简单的汉诺塔程序。
3. 学生能理解汉诺塔问题与递归思想的关系,并运用汇编语言实现递归算法。
技能目标:1. 学生能够运用汇编语言进行程序设计,具备基本的编程能力。
2. 学生能够通过汉诺塔问题的实践,培养逻辑思维和问题分析解决能力。
3. 学生能够通过小组合作,提高团队协作和沟通能力。
情感态度价值观目标:1. 学生对计算机科学产生兴趣,树立学习信心,形成积极的学习态度。
2. 学生在解决问题的过程中,培养面对困难、勇于挑战的精神。
3. 学生能够认识到编程在生活中的应用,理解科技对社会发展的推动作用。
课程性质:本课程为计算机科学与技术学科的一节实践课程,结合汉诺塔问题,让学生在动手实践中掌握汇编语言编程。
学生特点:本课程针对的是高年级学生,他们在之前的学习中已经掌握了计算机基础知识和简单的编程技能,具备一定的逻辑思维能力。
教学要求:教师需要引导学生通过汉诺塔问题,深入了解汇编语言编程,培养其编程能力和问题解决能力,同时注重培养学生的团队合作精神和积极的学习态度。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容本节教学内容主要包括以下几部分:1. 汉诺塔问题背景知识介绍:讲解汉诺塔问题的起源、规则及其数学原理,引导学生了解问题背景,激发学习兴趣。
2. 汇编语言基础知识回顾:简要回顾汇编语言的基本概念、指令系统,为学生编写汉诺塔程序奠定基础。
3. 汉诺塔程序设计:- 编写汉诺塔的非递归算法:介绍汉诺塔的非递归解法,引导学生运用汇编语言实现。
- 编写汉诺塔的递归算法:讲解递归思想在汉诺塔问题中的应用,指导学生编写递归程序。
4. 编程实践与讨论:- 分组进行编程实践,让学生在实践中掌握汇编语言编程,提高问题解决能力。
- 小组讨论,分享编程经验,培养学生的沟通能力和团队合作精神。
课程设计报告(通用6篇)
课程设计报告课程设计报告(通用6篇)在学习、工作生活中,需要使用报告的情况越来越多,要注意报告在写作时具有一定的格式。
相信很多朋友都对写报告感到非常苦恼吧,以下是小编为大家整理的课程设计报告,欢迎阅读与收藏。
课程设计报告篇1一、设计目的经过一系列硬件课程的学习及相关实验后,做一个综合的系统性的设计,对计算机硬件设计有一个整体的认识,可以进一步提高实践动手能力。
二、所用设备TDN—CM++实验教学系统一台,PC微机一台,排线若干三、设计思想1、确定搭建一台8位模型机,指令系统系统有10条,涉及输入,输出,加,减,自增,自减,与,传送,跳转,停机等指令。
2、根据所要设计的指令,确定各种信息的传送路径,以及实现这些传送所需的微指令。
3、根据数据通路,确定指令系统中每条指令的执行流程。
4、根据执行流程,确定好机器指令之后,确定相对应的微指令地址,需要多条微指令来完成的机器指令,要准确无误的确定每条微指令的后续地址。
5、设计好指令后,将指令加载,检测该指令是否可以达到预计功能。
四、设计总结经过了三天的实践学习,在老师的悉心指导和搭档的默契配合下终于完成了硬件课程实验,从中受益匪浅。
实验首先要做的事情就是接线,对于已经做过微机实验的我们,器件箱并不陌生,但也熟知连线的重要性,连每根线都必须十分细心,因为每根都影响着整个设备的运行。
于是,我跟我的搭档分工合作,她读图我连线,为了避免连错,我每根线都以红线为起始位,保持规律性,这样也方便出错后检查。
在我俩默契的配合下,我们很快就完成了连线操作,后来测试时却发现数据显示一直不变,经过检查才发现原来数据线少插了一根。
还好就这么一根问题,因为很多同学在连线这块就花费了大量的时间了,大大降低了效率,所以说小问题也不能忽视。
连线正确后,接下来就是编写微指令了,由于对指令的格式不是很熟悉,所以在了解指令格式和工作流程上花费了些时间。
编写的指令有两种,一个是操作码,一个是微指令。
四则运算汇编语言程序设计
安徽工程大学《汇编语言程序设计》大作业报告班级: XXXXX 学号: XXXXXXXX 完成人: XXXXXXX任课老师: XXXXXXX 时间: XXXXXXXXXX《汇编语言程序设计》大作业任务书大作业题目:四则运算程序程序功能要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
1.设计目标运用汇编语言,制作一个计算的程序,实现简单计算器的一般功能,能够在DOS界面下进行简单的加、减、乘、除的简单计算。
程序应有操作提示、输入和输出。
自动闪烁光标,并提示输入信息。
输入正确的数值等符号后可以进行正确的运算,程序计算其结果值并输出。
程序无需查错功能,所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为+、-、*、/,最后结果以十进制数表示。
且程序主界面需为一个由‘*’组成边框的矩形窗口。
2.软件设计2.1程序设计的基本思想主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。
如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。
计算显示完毕后,按提示选择是否要继续计算,不选择继续则结束。
对屏幕上输入字符串的接受,为INPUT语句段,见源代码,主要是将数字和运算符分开存放。
MATCH子程序,子程序内有三次跳转,将运算符选择正确的语句进行计算。
由于操作符只有+、-、*、/,没有涉及到括号,不用考虑括号的匹配问题。
流程图如下:图1 主模块流程图子模块:完成对数据的进一步加工处理,转换格式并得出结果。
首先根据输入调用对应的“+”、“-”、“*”、“/”四个函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几个模块服务的,大致的流程图如下图2:图2 子模块流程图3.系统调试3.1测试目标(1)在屏幕上显示一个由‘*’组成边框的矩形窗口;(2)自动闪烁光标,并提示输入信息;(3)能够完成单项表达式的输入、显示和运算;(4)编制并调试出程序。
Intel汇编语言程序设计第五版课程设计
Intel汇编语言程序设计第五版课程设计一、前言汇编语言编程作为计算机科学专业的一门基础课程,对于学生深入理解计算机底层技术,提高计算机编程能力具有重要的作用。
本文档为Intel汇编语言程序设计第五版课程设计的报告,旨在总结课程学习成果,展示编写的程序和分析设计思路。
二、程序设计1. 程序功能本次课程设计要求编写一个基于Intel汇编语言的计算器程序,可以进行简单的四则运算(加减乘除)并能够处理整数和小数。
程序应该具有友好的用户界面和自动错误检测功能,避免用户输入或计算出错。
2. 程序设计思路根据课程要求,本次程序的设计采用基于Intel汇编语言的实现。
在选择汇编语言的同时,考虑到程序设计的功能和界面友好度,我们决定采用Win32控制台应用程序开发,以实现计算器程序的基本功能和友好用户界面。
1. 界面设计我们使用了Windows API和MASM汇编语言开发环境,以实现程序的界面和交互功能。
在实现从用户处获取输入的过程中,我们采用Windows API中的ReadConsole函数,从控制台读取用户输入,并将其存储到有限长度的缓冲区中。
该函数将用户输入的每个字符读入缓冲区,直到空格、回车键或达到缓冲区长度才终止。
随后,我们使用字符串操作函数,比如strcmp和atof(将字符串转换成浮点数)来判断用户输入的内容并进行处理。
2. 运算功能实现计算器程序运算功能的实现是本次程序设计的核心部分。
在处理用户输入之后,我们使用算术逻辑单元(ALU)实现四则运算和浮点数的处理。
其中,加法、减法、乘法和除法分别用add,sub,mul和div执行,并使用fild、faddp、fmulp和fdivp来处理浮点数。
对于除法操作,程序需要进行除数是否为零和求余的判断,并进行错误提示。
3. 可执行的程序使用MASM编译器、Linker、和Windows SDK开发环境编译、链接程序代码,得到了可执行文件Calc.exe。
汇编语言编写乐曲课程设计
汇编语言编写乐曲课程设计一、课程目标知识目标:1. 学生能够理解汇编语言的基本概念,掌握其语法结构和指令集;2. 学生能够运用汇编语言编写简单的乐曲程序,并了解其在音乐制作中的应用;3. 学生了解计算机音乐的基本原理,如音阶、音长、音量等,并能够通过汇编语言实现乐曲的基本控制。
技能目标:1. 学生掌握汇编语言的编程技巧,能够独立编写简单的乐曲程序;2. 学生通过实践操作,培养解决问题的能力和逻辑思维能力;3. 学生能够运用所学知识,结合音乐创作需求,设计出具有个性化的汇编语言乐曲。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣,提高学习主动性和积极性;2. 学生通过创作乐曲,培养创新精神和团队协作意识;3. 学生在创作过程中,体验计算机科学与艺术的结合,提升审美素养。
课程性质:本课程为选修课,旨在让学生在掌握汇编语言基础知识的基础上,运用所学创作乐曲,提高学生的实践能力和创新能力。
学生特点:学生处于高年级阶段,已具备一定的计算机编程基础和音乐素养,对新鲜事物充满好奇心,具备一定的自主学习能力。
教学要求:教师应注重理论与实践相结合,引导学生通过实践探索,培养其编程能力和音乐创作能力。
同时,关注学生的个体差异,因材施教,激发学生的学习兴趣和潜能。
通过本课程的学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。
二、教学内容本课程教学内容分为三个部分:第一部分:汇编语言基础1. 汇编语言概述:了解汇编语言的发展历程、特点及应用领域;2. 计算机组成原理:学习计算机硬件组成,理解汇编语言与硬件的关系;3. 指令集与语法:掌握汇编语言的基本指令、寄存器、操作数等概念,学习汇编语言的语法结构。
第二部分:汇编语言编程技巧1. 程序结构:学习汇编语言程序的基本结构,掌握汇编程序的编写、编译和链接过程;2. 控制语句:学习汇编语言的条件判断、循环等控制语句;3. 子程序:了解子程序的概念,学会编写和调用子程序。
汇编课程设计 四位无符号十进制数乘法程序概要
华北科技学院课程设计说明书课程名称:汇编语言班级 : 计算机 B08-1 姓名 : __王松 _ 学号:__ 200807014101 __ 设计题目 :__编写两个四位无符号十进制数乘法程序设计时间 : 2010/6/21 至 2010/7/2 指导教师 :李冬艳评语 :_____________________________________________________________________________________________________________________________________________________________________________________________________ 评阅成绩评阅教师 :一、课程设计目的进行程序设计方法和技能的基本训练, 巩固在课堂上学到的有关程序设计的基本知识和基本方法, 通过实际动手能力的培养, 进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
二、课程设计要求1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。
2.遵循模块化、结构化的程序设计方法。
3. 要求程序必须正确。
4. 程序简明易懂,多运用输入输出提示,出错信息及必要的注释。
5. 要求程序结构合理,语句使用得当。
6. 适当追求编程技巧和程序运行效率。
三、课程设计题目 :编写两个四位无符号十进制数乘法程序四、课题分析由于题目要求从外设输入输出数据, 而在内存中用二进制数形式实现乘法, 所以涉及到代码转换问题。
步骤如下:从键盘输入两个十进制乘数(ASCII 码→分别转换成二进制形式→二进制数乘→把二进制乘积转换成十进制数的 ASCII 码形式→输出到屏幕。
五、流程图:六、程序源代码:Code SegmentAssume CS:Code,DS:CodeCR equ 000DHLF equ 000AHKBBack equ 0008H; -----------------------------------------; 功能:显示指定地址(Str_Addr的字符串; 入口:; Str_Addr=字符串地址(要求在数据段Output MACRO Str_Addrlea dx,Str_Addrmov ah,9int 21hEndM; -----------------------------------------; 功能:输出回车换行Output_CTLF proc Nearpush axpush dxmov ah,02hmov dl,0dhint 21hmov dl,0ahint 21hpop dxpop axretOutput_CTLF endp; -----------------------------------------; 功能:取光标位置; 入口:无; 出口:DH=行号, DL=列号GetCursor Proc Near PUSH AXPUSH BXPUSH CXXOR BX,BXMOV AH,3INT 10HMOV Cursor_Row,DH MOV Cursor_Col,DL POP CXPOP BXPOP AXRETCursor_Row DB ? Cursor_Col DB ? GetCursor EndP; -----------------------------------------; 功能:置光标位置; 入口:Cursor_Row=行坐标 ; Cursor_Col: 列坐标SetCursor Proc NearPUSH CXPUSH BXPUSH AXMOV DH,Cursor_RowMOV DL,Cursor_ColXOR BX,BXMOV AH,2INT 10HPOP AXPOP BXPOP CXRETSetCursor EndP; -----------------------------------------; 功能:键盘输入一个 N 位的十进制数字,将其转换成二进制数并保存在指定的内存单元。
汇编语言程序设计基于arm体系结构课程设计
汇编语言程序设计基于arm体系结构课程设计介绍汇编语言是一种底层的计算机语言,它直接与计算机硬件进行交互,可以对计算机进行更精细、更高效的控制。
在ARM体系结构中,汇编语言也起着至关重要的作用。
因此,学习ARM汇编语言编程是每个计算机科学专业学生必备的技能之一。
本课程设计旨在帮助学生掌握汇编语言在ARM体系结构中的应用,同时提高学生对计算机底层原理的理解与掌握。
在本课程设计中,我们将使用现代汇编语言,设计并实现一些实用的程序,包括算法、文件操作、输入输出等。
课程设计要求1. 基本要求本课程设计的基本要求是学生利用ARM汇编语言编写一个完整的程序,包括以下要求:•确定程序的主题和目标,设计算法并实现。
•实现程序的控制流程,包括输入输出、文件操作等。
•使用ARM汇编语言编写程序,并测试程序的正确性。
2. 提高要求为了挑战学生的编程能力,本课程设计还有一些额外的提高要求:•对程序进行性能优化,提高程序的效率。
•实现程序的图形化界面。
•尝试使用ARM汇编语言编写操作系统或驱动程序。
课程设计内容本课程设计包括以下几个部分:1. 算法设计与实现在此部分中,学生需要根据自己所选的主题,设计算法并实现。
选择一个好的算法可以帮助你更好地掌握汇编语言的编程技巧和思维方式。
2. 程序控制流程在此部分中,学生需要实现程序的控制流程,包括输入输出、文件操作、流程控制等。
这是程序实现的关键步骤之一,学生需要掌握汇编语言的底层控制逻辑。
3. 程序性能优化在此部分中,学生需要对程序进行性能优化,提高程序的效率。
学生需要了解ARM体系结构中的CPU指令集,并通过对程序的优化来提高程序的性能。
4. 程序图形化界面在此部分中,学生可以尝试使用其他语言或者库来实现程序的图形化界面。
这有助于学生了解汇编语言的局限性,以及不同编程语言之间的差异。
5. 操作系统或驱动程序实现在此部分中,学生可以尝试使用ARM汇编语言实现操作系统或驱动程序。
汇编语言课程设计报告——实现加减乘除四则运算的计算器
汇编语言课程设计报告( 2011 -- 2012 年度第 2 学期)实现加减乘除四则运算的计算器专业 计算机科学与技术 学生姓名班级学号指导教师完成日期目录目录错误!未定义书签。
1 概述错误!未定义书签。
设计目的错误!未定义书签。
设计内容错误!未定义书签。
2 系统需求分析错误!未定义书签。
系统目标错误!未定义书签。
主体功能错误!未定义书签。
开发环境错误!未定义书签。
3 系统概要设计错误!未定义书签。
系统的功能模块划分错误!未定义书签。
系统流程图错误!未定义书签。
4系统详细设计错误!未定义书签。
5 测试错误!未定义书签。
测试方案错误!未定义书签。
测试结果错误!未定义书签。
6 小结错误!未定义书签。
参考文献错误!未定义书签。
附录错误!未定义书签。
附录源程序清单错误!未定义书签。
实现加减乘除四则运算的计算器1 概述设计目的本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。
设计内容能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:c:\tasm>js 3+252 系统需求分析系统目标本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
比如,十进制数的加减乘除四则运算。
我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。
此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北科技学院课程设计说明书专业: 网络工程课程名称:汇编语言课程设计班级: B092姓名: 陈文森学号: 200907024238 设计题目: 有序表的插入、删除、查询程序设计时间: 2011-12-05 至2011-12-16评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩: 评阅教师: 杜杏菁《汇编语言》课程设计问题陈述及其需求分析问题陈述有序表的插入、删除,查询程序1.要求:掌握表处理程序的设计方法,学习有序表的插入,删除操作2.内容:在数据区有若干个数,要求进行排序,并从屏幕上显示,然后再从键盘输入一个数,从表中查找,若找到,给出所在位置,否则按顺序将该数插入到表中相应位置,并给出表的长度,或者删除一个数据。
功能需求分析1.无序表的输入。
2.无序表经排列变有序表。
3.有序表的查找。
4.有序表的插入。
5.有序表的删除6.退出。
总体设计功能结构图设计依据程序的功能需求,描述该系统功能的结构图如下:有序表的插入、删除、查询1.无序表的输入2.无序表的变换3.有序表的查找4.有序表的插入5.有序表的删除6.退出主程序的流程图如下: input子程序流程图如下:Arrange 子程序流程图:Arrange 子程序CX ←数字个数AX<Buf[si]?AX ←Buf[si]NCX=CX-1 SI=SI+2YXchg AX ,Buf[si]CX=0?NCX=CX-1 SI=SI+2Y输入的个数-1输入的个数减后为0?NYRET 返回Search子程序流程图: Insert子程序流程图:Search子程序CX←输入个数+1AX←NUM[DI]CX=0或AX=Buf[si]?P=P+1 SI=SI+2Y N输入要查找的数输出结果RET返回Insert子程序输入要查找的数CX←输入个数+1AX←NUM[DI]AX<Buf[si]?在Buf[si]中插入AX将后面的数都后移NY直接插入输出插入后结果RET返回Delete 子程序流程图:① ② ③ ④Delete 子程序保存被操作的数字 CX ←K AX ←Num[DI] CX=0?AX=Buf[DI]SI=SI+2 CX=CX-1NY显示计数(即位置)过程Call display 子程序AX=k ?删除DI=1?N交换buf[di+2]与buf[di]的值YN YNY① ② ③ ④DI=DI+2交换Buf[di+2]与Buf[di]的值CX=CX-1CX=0?DI=DI+2SUB K ,1Call Chang 子程序RET 返回Y N详细设计模块简介依据程序的功能模块的划分,各模块定义如下:(1)主界面菜单。
模块名:menu;模块描述:通过此模块可以在菜单中选择想要跳转到的子程序界面中去,并差错检查输入的非1-6号功能的字符字母数字。
(2)输入无序表模块名:input;模块描述:按1跳跃到input子程序。
根据文字提示,输入要排序的数字个数,并再之后出现的提示后输入要输入的数字,程序自带空格,无需手动分隔。
完成后可按空格键返回主程序菜单界面。
(3)无序表的排序模块名:arrange;模块描述:按2跳跃到排序子程序。
程序用使用冒泡排序将输入的数字由小到大排列并显示。
(4)查找模块名:find;模块描述:按3跳跃到查找子程序。
输入要查找的数字,程序调用change子程序将ASC Ⅱ码中的数值转换,并循环比较。
(5)插入新的数字模块名:insert;模块描述:按4跳跃到插入子程序。
输入要插入的数,循环比较buf中的数值与输入数值之间的大小,若最大则在最后插入,否则在比要插入数值大的数前插入,并将后面的数移位。
(6)有序表的删除模块名:delete;模块描述:按5跳跃到删除子程序。
输入要删除的数,循环比较,若找到则删除,并将后面的数向前移位,若未找到,则提示出错。
(7)退出程序模块名:exit;模块描述:按6跳跃到退出子程序。
用int 21h 中断的结束语句结束程序。
编码和测试学生档案管理系统的源代码见附件4。
1、程序运行结果如图5所示。
(汇编显示结果为英文)图1 主界面2、在主菜单下输入选项“1”,则出现如图2所示模块1界面。
测试实例如图。
图2 模块1界面完成数字的输入后,程序显示出所输入的全部信息。
结束后输入任意键,程序回到主菜单。
3、在主菜单下输入2,则界面如图3。
显示的是有序的排列。
图3 模块24、在主菜单下输入3,则界面如图4。
这是查找有序表中没有的数字。
图4 模块3这是查找有序表中存在的数字。
图5 模块3 5、在主菜单下输入4,则界面如图6。
图6 模块46、在主菜单下输入5,则界面如图7。
要删除时的界面。
图7 模块5删除后显示的界面图8 模块57、在主菜单下输入6,则界面如图8。
心得体会和收获:对我而言,这次的汇编综合实验总体来说确实很好,因为它综合了前面几乎所有我所学到的知识,帮助我重新巩固了一遍旧有的知识,同时也扩充了那些我并未学到的,或者说并未牢记的一些东西,下面我详细说一说我的收获:这次我的程序没有全部是自己编写的,因为书本上有类似的程序,而它里面的一些程序无论在应用上还是在间接性上,都要强于我所编写的代码,所以,我拿了一点它的程序并且我也尝试修改过,但是失败的次数居多,因为它的一些主要程序是环环相扣的,但正是因为这些失败,使我在以后编写类似程序的时候也记住了这种方法,无论是使用DUP定义,取输入的个数,用$填充,冒泡排序还是它这种紧凑紧密的算法,这些我都熟记在心了,而我自己编写的程序部分也涵盖了之前所学的所有知识,输入输出,LOOP 循环,子程序,清屏等等,通过这次自己编写一个相对而言比较长的代码的,我更新了原有的知识,也使自己更加的谨慎,一些原本因为不熟练出现的小错误,现在也不会再犯了。
这次的综合实验我收获很多。
附录datas segmentstr0 db' $'str1 db' 1 input 2 arrange $'str2 db' $'str4 db' 3 find 4 insert $'str5 db' $'str6 db' 5 delete 6 exit $'str7 db' $'str8 db'the number has been found$'str9 db'the number has not been found!$'str10 db'the number you delete is not exit$'str11 db' $'str12 db'error!$'str13 db'*************************************************$'str14 db'the number already inserted!$'str15 db'the new arrange is: $'str16 db'input the number again:$'str17 db'please input the number:$'str18 db'press space to return menu and choose the next step!:$'str19 db'how many numbers you want arrange:$'str20 db'the position : $'str23 db'the length of the arrange is: $'str24 db'delete the number!$'str25 db'please input the number you want to delete:$'str26 db'where you want to chance:$'buf dw 50 dup(?)num dw 2 dup(?)num1 dw 2 dup(?)k dw?p dw?q dw?datas ends;*********************************************************************** ********huiche macromov ah,2mov dl,0dhint 21hmov ah,2int 21hendm;*********************************************************************** ********xs macro x;显示宏mov ah,09hlea dx,xint 21hendm;*********************************************************************** ********bij macro m,n;比较宏cmp al,mje nendm;*********************************************************************** ********diy macro yhuichexs str18mov ah,1int 21hcmp al,20hje yxs str12huicheendm;*********************************************************************** ********codes segmentassume cs:codes,ds:datas,es:datas;main proc farstart:mov ax,datasmov ds,axmov es,axzcx: call clear_screencall menu;调用显示菜单子程序int 21hsub al,30hcall check;调用差错检验子程序 BIJ 1h,shuziBIJ 2h,paixuBIJ 3h,chazhaoBIJ 4h,charuBIJ 5h,shanchuBIJ 6h,tuichushuzi:call clear_screencall input;调用输入数字子程序jmp zcxpaixu:call clear_screencall arrange;调用排序显示子程序 jmp zcxchazhao:call clear_screenpush dxxs str17huichecall changehuichemov si,0mov num[si],bx;保存被操作的数字 jmp let1pop dxlet1:huichecall search;调用查找子程序jmp zcxcharu: call clear_screenpush dxxs str17huichecall changehuichemov num[si],bx;保存被操作的数字jmp let2pop dxlet2:huichecall insert;调用插入子程序jmp zcxshanchu:call clear_screencall delete;调用删除子程序jmp zcxtuichu:mov ah,4chint 21h;main endp;*********************************************************************** ********clear_screen proc near;清屏子程序push axpush bxpush cxpush dxmov ah,2mov dh,0mov dl,0int 10hmov ah,6mov al,0mov bh,7mov cx,0mov dh,24mov dl,79int 10hmov dx,0mov bh,0mov ah,2int 10hpop dxpop cxpop axretclear_screen endp;*********************************************************************** ********menu proc near;显示菜单子程序xs str0;调用宏huichexs str11huichexs str1huichexs str2huichexs str4huichexs str5huichexs str6huichexs str7huichexs str13huichexs str11huichexs str26retmenu endp;*********************************************************************** ********change proc near;字符向数字转化子程序即输入数字过程mov bx,0mov cx,2new: push cxmov ah,1int 21hchar:sub al,30hjl err0cmp al,9cbwxchg ax,bxmov cx,10mul cxxchg ax,bxadd bx,axpop cxloop newjmp r0err0:huichexs str12huichexs str16mov ah,1int 21hjmp charr0: retchange endpchang proc near;数字向字符转化子程序即显示数列过程push cxpush dxmov cx,kmov di,2lp6: mov ax,buf[di];按插入后的次序显示mov bl,10div bladd al,30hmov dl,almov bl,ahmov ah,2int 21hadd bl,30hmov dl,blmov ah,2int 21hmov dl,20hint 21hadd di,2loop lp6pop dxpop cxretchang endp;*********************************************************************** ********display proc near;显示数字子程序mov bl,10div bladd al,30hmov dl,almov bl,ahmov ah,2int 21hadd bl,30hmov dl,blmov ah,2int 21hmov dl,20hmov ah,2int 21hretdisplay endp;*********************************************************************** ********check proc near;差错检验子程序cm: cmp al,1jb errocmp al,6ja errojmp rerro:huichexs str12huichemov ah,7int 21hsub al,30hjmp cmr: retcheck endp;*********************************************************************** ********input proc near ;输入数字子程序mov cx,50;清空buf存储单元,以便重复利用mov di,0ll: mov buf[di],0add di,2loop llxs str19call change;调用字符与数字转换子程序huichexs str17huichemov cx,bx;bx存放数字个数mov k,bx;保护存放数字个数的bxmov si,0l1: push cxl2: mov ah,1int 21hsub al,30hjl err1cmp al,9jg err1mov ah,0mov bl,10mul blmov bx,axmov ah,1int 21hsub al,30hjl err1cmp al,9mov ah,0add bx,axmov ah,2;显示空格mov dl,20hint 21hmov buf[si],bxadd si,2pop cxloop l1jmp donerr1:huichexs str12huichexs str16huichejmp l2don :diy r1jmp donr1: retinput endp;*********************************************************************** ********arrange proc near;排序子程序mov cx,klp2: mov di,cxmov si,0lp3: mov ax,buf[si]cmp ax,buf[si+2]jb lp4xchg ax,buf[si+2]mov buf[si],axlp4: add si,2loop lp3mov cx,diloop lp2xs str15huichecall chang;调用数字向字符转化子程序re1: diy ru1ru1: retarrange endp;*********************************************************************** ********search proc near;查找子程序mov si,0mov di,0mov dx,0mov p,dx;计数mov cx,kinc cxmov ax,num[di]se1: cmp ax,buf[si]je seaadd si,2inc ploop se1xs str9jmp rt1sea: xs str8huichexs str20mov ax,p;显示计数(即位置)过程call display;调用显示数字子程序rt1: diy rt2rt2: retsearch endp;*********************************************************************** ********insert proc near;插入子程序mov si,0mov di,kadd di,kmov ax,num[si]cmp1:cmp buf[di],axjle insqmov bx,buf[di]mov buf[di+2],bxsub di,2jmp cmp1insq: mov buf[di+2],axadd k,1xs str14huichexs str15huichecall chang;调用显示数列子程序huichexs str23mov ax,k;显示数列长度call displayre2:diy ru2ru2: retinsert endp;*********************************************************************** ********delete proc near;删除子程序xs str15huichecall changhuichexs str25;输入要删除的数huichecall changehuichemov si,0mov num[si],bx;保存被操作的数字mov si,0;查找过程mov di,0mov dx,0mov q,dx;计数mov cx,kinc cxmov ax,num[di]se2: cmp ax,buf[si]je sea1add si,2inc qloop se2xs str9jmp rt3sea1: xs str8huichexs str20mov ax,q;显示计数(即位置)过程push axcall display;调用显示数字子程序huichexs str24huichexs str15pop axcmp ax,kje bu2mov cx,k;删除过程sub cx,qmov di,axcmp di,1je bu3bu1: add di,2mov bx,buf[di+2]mov buf[di],bxloop bu1jmp bu2bu3: mov bx,buf[di+2]mov buf[di],bxadd di,2loop bu3bu2:sub k,1call changrt3: diy rt4rt4: retdelete endp;*********************************************************************** ********codes endsend start。