西安邮电大学 汇编语言程序设计竞赛报告
- 格式:doc
- 大小:398.00 KB
- 文档页数:13
第1篇一、前言近年来,随着我国互联网行业的快速发展,程序员人才需求日益旺盛。
为了提高程序员的专业技能,激发创新精神,我国各地纷纷举办程序员比赛。
本次程序员比赛旨在选拔优秀程序员,推动我国软件产业的发展。
以下是本次程序员比赛的总结报告。
二、比赛概述1. 比赛主题本次程序员比赛以“创新、协作、实践”为主题,旨在考察参赛选手的编程能力、团队协作能力和问题解决能力。
2. 比赛时间本次比赛分为初赛、复赛和决赛三个阶段,历时三个月。
3. 比赛形式本次比赛采用线上编程平台进行,参赛选手在规定时间内完成指定任务,提交代码,平台自动评分。
4. 参赛对象本次比赛面向全国范围内具有编程基础的程序员,不限年龄、学历和专业。
5. 比赛规模本次比赛共有来自全国各地2000多名程序员报名参赛,经过初赛、复赛的层层选拔,最终有100名选手进入决赛。
三、比赛成果1. 选拔优秀程序员本次比赛选拔出了一批具有较高编程能力和创新精神的优秀程序员,为我国软件产业输送了新鲜血液。
2. 促进技术创新比赛中涌现出许多创新性的解决方案,推动了我国软件产业的发展。
3. 增强团队协作能力比赛要求参赛选手以团队形式参赛,增强了选手们的团队协作能力。
4. 提高程序员技能比赛过程中,选手们通过解决实际问题,提高了自己的编程技能。
四、比赛亮点1. 严谨的评审机制本次比赛邀请业内知名专家担任评委,确保了比赛的公平、公正。
2. 实用的比赛题目比赛题目贴近实际工作,有助于参赛选手提升解决实际问题的能力。
3. 灵活的参赛方式比赛采用线上编程平台,方便参赛选手随时随地参赛。
4. 激烈的竞争氛围比赛中,选手们充分发挥自己的才华,展开了激烈的竞争,为观众呈现了一场精彩的编程盛宴。
五、存在问题及改进措施1. 问题(1)部分选手对比赛规则不够了解,导致参赛效果不佳。
(2)比赛题目难度较高,部分选手难以在规定时间内完成。
(3)评委在评分过程中存在主观因素,可能导致评分结果不够客观。
第1篇一、前言随着信息技术的飞速发展,编程已成为现代社会不可或缺的一项技能。
为了激发广大编程爱好者的创新精神,提高我国编程水平,培养高素质的编程人才,近年来,我国各地纷纷举办编程大赛。
本文将针对某次编程大赛进行总结,分析大赛的筹备、实施、成果等方面,以期为今后类似活动的举办提供借鉴。
二、大赛背景1. 编程大赛在我国的发展近年来,我国编程大赛蓬勃发展,已成为推动编程教育、培养编程人才的重要途径。
编程大赛不仅为广大编程爱好者提供了一个展示才华的平台,还促进了我国编程产业的繁荣。
2. 大赛宗旨本次编程大赛旨在激发广大编程爱好者的创新精神,提高我国编程水平,培养高素质的编程人才,推动我国编程产业的发展。
三、大赛筹备1. 组织机构本次大赛由我国某知名IT企业、某知名高校联合举办,成立了由企业代表、高校教师、行业专家组成的组委会,负责大赛的组织、实施和评审工作。
2. 大赛规则(1)参赛对象:全国范围内年龄在18-35岁的编程爱好者。
(2)比赛形式:线上编程比赛,分为初赛和决赛两个阶段。
(3)比赛内容:C/C++、Python、Java等编程语言。
(4)奖项设置:一等奖1名,二等奖2名,三等奖3名,优秀奖若干。
3. 宣传推广(1)通过官方网站、社交媒体、合作媒体等渠道发布大赛信息。
(2)邀请知名编程博主、行业专家担任大赛评委,提升大赛影响力。
(3)举办线上宣讲会,解答参赛者疑问。
四、大赛实施1. 初赛(1)报名:参赛者通过官方网站报名,提交个人信息及参赛作品。
(2)评审:组委会组织专家对参赛作品进行评审,评选出优秀作品进入决赛。
(3)公布结果:在规定时间内公布初赛结果,晋级决赛的选手进入决赛阶段。
2. 决赛(1)比赛形式:线上编程比赛,选手在规定时间内完成编程任务。
(2)评审:决赛评审由组委会组织专家进行,对选手的编程能力、创新能力、团队合作等方面进行综合评估。
(3)颁奖:根据评审结果,颁发相应奖项。
五、大赛成果1. 参赛人数本次大赛吸引了全国近万名编程爱好者报名参加,其中初赛参赛人数达到5000余人。
【关键字】报告汇编语言程序设计报告计算机学院2011/6/7题目要求分支程序设计:1、编写程序,键入学生成绩(百分制),按A、B、C、D显示在屏幕上。
子程序设计:2、给定一个数组存放5个小写字母,用地址表传递方法编写子程序,将其转换成大写字母,并显示在屏幕上。
循环程序设计:3、设有一段文字,编写一段程序查找字母a出现的次数,并显示在屏幕上。
DOS功能调用:4、在图形方式下,在屏幕中央绘制一个用“*”表示的等腰三角形。
5、编写一个生成ASCII码表的程序,并显示在屏幕上。
6、根据提示输入任意年份,编写判断闰年的程序,如果是闰年,则在屏幕上显示“Y”,否则显示“N”。
7、显示杨辉三角形。
要求:(1)从键盘接收正整数n;(2)屏幕显示杨辉三角形,显示n行信息;编程思路:1.在数据段设置提示信息,成绩ABCD的显示信息,并预留空间。
利用DOS中断,取得输入的字符,输入字符的ASCII值在30H-39H之间为‘0-9’,不是则报错,值存入SCORE中,将SCORE的高位分别与9,8,7,6相比,跳转到设置好的代码区,输出对应成绩(A,B,C,D).若为3位数,则跳到A区,输出A.2. 在数据段设置ADDRESS存放数据偏移量和COUNT计数器利用DOS中断,取得输入的字符串存入DX中,偏移量存入STRING,并存入ADDRESS中。
COUNT存入ADDRESS+2地址中,调用子程序TURN,利用SI指针与ADDRESS配合将每个字母由大写转为小写。
3. 在数据段设置STRING用于存放键盘输入字符,COUNT存放字符个数,利用DOS中断,输入字符串存入STRING.编写CHECK模块用于检查输入的字符是否为a,循环执行CHECK模块,为a 则BL+1,不为a,SI+1继续检查,直至CX=0,最后输出结果。
4.堆栈段预留128字节空间存放*.设置SI控制空格数,BX为输出*个数.设置3层循环,分别输出空格数,*数,回车.首先将保护CX行数,将其压入栈中,外层循环按CX列数,输出每行之前的空格数,之后根据BX输出*,此时一行输入完,输出回车换行后,BX+2即*数+2,CX出栈,加入外循环,输出下一行信息。
第1篇一、前言近年来,随着我国信息化建设的不断推进,编程技术已成为我国经济社会发展的重要支撑。
为了激发广大青年学生的创新精神,提高我国编程人才的培养质量,我校于近日成功举办了编程比赛活动。
本次活动旨在为同学们提供一个展示才华、交流学习的平台,激发同学们对编程的兴趣,培养同学们的团队合作精神。
以下是本次编程比赛活动的总结。
二、活动背景随着互联网、大数据、人工智能等技术的快速发展,编程已成为现代社会不可或缺的基本技能。
为提高我国编程人才的培养质量,我国政府高度重视编程教育,积极推动编程教育的普及和发展。
在此背景下,我校举办编程比赛活动,旨在为广大青年学生提供一个展示编程才华的舞台,激发同学们对编程的兴趣,培养同学们的团队合作精神。
三、活动组织1. 活动策划:本次活动由我校教务处、计算机科学与技术学院联合举办,旨在提高同学们的编程能力,培养创新精神。
2. 活动宣传:通过校园广播、海报、微信公众号等多种渠道进行宣传,让更多同学了解活动信息。
3. 活动报名:活动报名采取自愿原则,面向全校学生开放,吸引了众多编程爱好者报名参加。
4. 活动评委:邀请校内具有丰富编程经验的教师和校外行业专家担任评委,确保比赛的公正性。
四、活动内容1. 比赛形式:本次比赛分为个人赛和团队赛两种形式,参赛选手可根据自身情况选择参赛形式。
2. 比赛题目:比赛题目分为基础题和进阶题,旨在考察参赛选手的编程基础和创新能力。
3. 比赛流程:比赛分为初赛、复赛和决赛三个阶段。
初赛为线上比赛,复赛和决赛为线下比赛。
4. 比赛时间:初赛时间为一天,复赛和决赛时间为两天。
五、活动成果1. 参赛人数:本次比赛共吸引了200余名同学报名参加,其中个人赛150人,团队赛50支队伍。
2. 成绩展示:经过激烈的角逐,最终评选出个人赛一等奖2名、二等奖4名、三等奖6名;团队赛一等奖2支队伍、二等奖3支队伍、三等奖5支队伍。
3. 活动效果:本次比赛充分展示了同学们的编程才华,激发了同学们对编程的兴趣,提高了同学们的团队合作精神。
汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是计算机中最基本的语言,通常用于处理硬件相关问题。
在这个实验中,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
以下是我们的实验报告。
正文:1. 实验环境我们使用的实验环境是Intel 8086微处理器与高级汇编语言。
微处理器使用的是PCB-512主板,而高级汇编语言是MASM。
2. 实验目的我们的实验目的主要是学习汇编语言的基础知识和编程技巧,包括了汇编语言的寄存器、指令、内存管理等方面的知识。
我们的另一个目的是掌握汇编语言的常用编程技巧,能够独立完成一些简单的汇编程序。
3. 实验内容我们的实验内容主要包括以下几点:(1)学习汇编语言的基础知识,包括寄存器、指令、内存管理等方面的知识。
(2)掌握汇编语言的常用编程技巧,包括数据输入输出、运算、跳转等基本操作。
(3)实践用汇编语言编写程序,如计算器、菜单等实用程序。
(4)了解8086微处理器的结构和原理。
4. 实验过程在这个实验过程中,我们完成了以下几个程序:(1)计算器计算器是一个简单的程序,主要用于实现两个数之间的加、减、乘、除等基本运算。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
(2)菜单菜单是一个实用程序,主要用于展示一个简单的菜单并实现用户选择相关功能的功能。
我们使用了汇编语言中的跳转指令、输入输出指令等实现了这个程序。
5. 实验结果在我们的实验中,我们成功完成了上述两个程序。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
6. 实验总结在这个实验过程中,我们学习汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
我们通过编写计算器和菜单等简单实用程序,加深了对汇编语言的理解和认识。
我们认为这个实验对我们今后的学习和工作都有很大的帮助。
结论:通过这个实验,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
一、前言近日,我参加了某编程比赛,虽然最终并未获得理想的奖项,但这次比赛让我收获颇丰。
在此,我将对自己在比赛中的表现进行反思总结,以便在未来的编程学习中不断进步。
二、比赛过程回顾1. 竞赛准备在比赛前,我认真研究了比赛规则和题目要求,对涉及的知识点进行了梳理。
同时,我还参加了模拟赛,熟悉比赛环境和流程。
2. 比赛过程比赛当天,我按照预定的计划进行解题。
在解题过程中,我遇到了一些难题,但凭借自己的努力,最终完成了大部分题目。
然而,在最后关头,由于时间紧张,我未能将所有题目完成。
三、反思总结1. 知识储备不足在比赛中,我发现自己在某些知识点上存在不足,导致解题过程中遇到困难。
例如,在算法和数据结构方面,我还需要加强对各种算法的理解和运用。
2. 时间管理能力有待提高比赛过程中,我发现自己时间管理能力不足,导致在最后关头未能完成所有题目。
在今后的学习中,我需要提高自己的时间规划能力,合理安排时间,确保在比赛中发挥出最佳水平。
3. 团队协作意识薄弱虽然这次比赛是个人赛,但团队协作在编程中同样重要。
在比赛中,我发现自己缺乏与队友沟通协作的意识。
今后,我需要加强与他人的交流,提高团队协作能力。
4. 心理素质需加强在比赛过程中,我遇到了一些困难,导致心理压力增大。
这让我意识到,在今后的学习中,我需要提高自己的心理素质,保持良好的心态,以应对各种挑战。
四、改进措施1. 加强知识储备针对比赛中暴露的知识点不足,我将在今后的学习中,有针对性地加强对算法、数据结构、编程语言等方面的学习,提高自己的编程能力。
2. 提高时间管理能力为了提高时间管理能力,我将在学习过程中,合理安排时间,确保在关键时刻能够充分发挥自己的实力。
3. 增强团队协作意识在今后的学习中,我将积极参与团队项目,提高自己的团队协作能力,为团队的成功贡献力量。
4. 培养良好的心理素质为了提高心理素质,我将在生活中保持乐观的心态,学会调整自己的情绪,以应对各种挑战。
第1篇一、前言随着科技的飞速发展,编程已经成为当代大学生必备的一项技能。
在大学期间,我们通过学习编程,不仅提高了自身的逻辑思维能力,也拓宽了职业发展的道路。
本报告将对我大学期间的编程学习进行总结,分析学习过程中的收获与不足,并对未来编程学习提出展望。
二、学习背景与目标1. 学习背景随着我国互联网产业的蓬勃发展,编程人才需求日益旺盛。
为了适应时代发展的需要,我在大学期间选择了计算机科学与技术专业,系统地学习了编程知识。
2. 学习目标(1)掌握编程语言的基本语法和常用算法;(2)具备独立编写程序、调试和优化的能力;(3)了解软件工程的基本原理和方法;(4)培养良好的编程习惯和团队协作精神。
三、学习内容与成果1. 编程语言(1)C语言:学习了基本语法、数据结构、函数、指针等知识,能够编写简单的C 语言程序。
(2)Java语言:掌握了面向对象编程思想,熟悉Java的基本语法、集合框架、多线程等知识,能够编写Java应用程序。
(3)Python语言:了解了Python的基本语法、标准库、第三方库等知识,能够快速实现数据处理、Web开发等任务。
2. 软件开发(1)熟悉软件工程的基本原理和方法,包括需求分析、设计、编码、测试、维护等环节。
(2)掌握了使用集成开发环境(IDE)进行编程,如Visual Studio、Eclipse、PyCharm等。
(3)具备一定的项目经验,参与过多个小型项目,如校园信息管理系统、在线考试系统等。
3. 算法与数据结构(1)学习了常见算法,如排序、查找、图论、动态规划等。
(2)熟悉常见数据结构,如数组、链表、栈、队列、树、图等。
(3)能够根据实际问题选择合适的算法和数据结构。
4. 成果展示(1)在大学期间,我的编程成绩一直名列前茅,多次获得奖学金。
(2)在课外,我积极参与编程竞赛,曾获得全国大学生程序设计竞赛省级一等奖。
(3)我的个人博客上发表了多篇编程学习心得和项目经验分享文章。
第1篇一、实验目的通过本次在线编程实验,旨在提高我的编程能力,加深对编程语言的理解,熟悉编程环境的使用,并培养良好的编程习惯。
同时,通过实际编程练习,解决实际问题,提升我的逻辑思维和问题解决能力。
二、实验内容本次实验选择了电大在线编程平台提供的C语言编程课程,主要包括以下内容:1. C语言基本语法;2. 数据类型、变量和运算符;3. 控制结构(分支和循环);4. 函数的定义和调用;5. 数组、指针和字符串操作;6. 文件操作。
三、实验步骤1. 准备工作:登录电大在线编程平台,选择C语言编程课程,熟悉编程环境和操作界面。
2. 编写代码:根据实验指导书,逐个完成实验任务,编写相应的C语言程序。
3. 调试程序:使用调试工具,检查代码中的错误,修正语法错误和逻辑错误。
4. 运行程序:成功编译并运行程序,观察输出结果,确保程序功能符合预期。
5. 总结与反思:对实验过程中遇到的问题进行总结,分析原因,提出改进措施。
四、实验结果与分析1. C语言基本语法:通过实验,我掌握了C语言的基本语法,包括数据类型、变量、运算符等。
2. 控制结构:实验中,我学会了使用if语句、switch语句进行分支控制,以及for循环、while循环进行循环控制。
3. 函数:通过编写和调用函数,我了解了函数的定义、参数传递和返回值等概念。
4. 数组、指针和字符串操作:实验中,我掌握了数组的定义、初始化、访问和操作方法,了解了指针的概念和用法,以及字符串操作函数。
5. 文件操作:通过实验,我学会了使用文件操作函数,实现文件的读写操作。
五、实验总结通过本次在线编程实验,我收获颇丰。
以下是我对本次实验的总结:1. 编程能力得到提高:通过实际编程练习,我对C语言有了更深入的了解,编程能力得到提升。
2. 问题解决能力增强:在实验过程中,我遇到了各种问题,通过查阅资料、请教同学和老师,我学会了如何分析和解决实际问题。
3. 良好的编程习惯:在实验过程中,我养成了良好的编程习惯,如规范命名、注释代码、代码复用等。
西安邮电大学汇编语言程序设计竞赛报告专业班级通工1206学生姓名王炜学号03121167时间2014年11月24日一、设计题目《小型多任务管理系统》二、设计内容应用8086cpu汇编语言,设计任务管理系统,对多个任务进行管理和调度,能够实现任务间的切换,保存上下文信息。
运行任务时可从屏幕处看到任务结果。
三、需求分析1、系统完整功能在屏幕显示3个子窗口,他们的行列坐标如下:左窗口用于实现当键入任意字母时,可将其全部转换为小写字母;右窗口用于实现当键入任意字母时,可将其全部转换为大写字母;下窗口用于显示功能提示信息。
光标首先定位于左窗口第一行行首(5,10)处,可根据左右键的输入改变光标定位,以便分时使用左右窗口。
当光标处于左(右)窗口处,键入任意字母同步显示在光标位置处,若按Enter键,其转换结果将显示在窗口中央处,按任意键清屏,光标回到第一行行首(5,10)处,可重新输入字母进行转换。
按ESC键返回到DOS界面。
2、系统测试截图四、概要设计1、方案设计系统思路简单明确,主要运用BISO调用,用到宏定义较为方便的处理问题。
把一些基本功能编写成宏,在宏调用可高效的执行程序。
系统主要分为光标定位、清屏、接受字符并判断、在屏幕上显示字符、屏幕上显示转换结果等模块。
结构框图2、模块功能说明(1)多窗口显示:在代码段中调用四次宏scroll,分别设置好总窗口,左窗口,右窗口,下窗口。
(2)光标定位:用int10h的3号中断得到光标位置,通过与窗口的坐标比较确定光标位置(3)清屏:用scroll刷新需要清屏的窗口(4)显示字符:左右窗口分别用int10h的0E号中断显示光标处字符,用int16h的9号中断显示leftbuf和rightbuf的字符。
窗口用int16h 的9号中断显示data段的mainbuf字符。
(5)接受字符并判断:用int16h的0号中断接受字符,通过判断扫描码确定字符。
五、详细设计及运行结果1、程序运行流程2、程序中使用的功能调用INT 10H:02H 功能:用文本光标设置光标位置入口参数:AH =02HBH=页号DH/DL=行/列出口参数:无03H 功能:在文本坐标下,光标各种信息入口参数:AH = 03HBH=页号出口参数:CH=光标起始行CL=光标结束行DH/DL=行/列06H 功能:屏幕初始化入口参数:AH = 03HAL= 0 初始化窗口BH=卷入行属性CH=光标起始行CL=光标结束行CH/CL=左上角行/列号DH/DL=右上角行/列号出口参数: 无0EH 功能: 显示字符入口参数:AH = 0EHAL=字符BH=页码BL=前景色出口参数:无INT 16H:00H 功能: 从键盘读字符入口参数:AH =00H出口参数:AH =扫描码AL=字符码3、程序及必要注释scroll macro ulrow,ulc ol,lrrow,lrcol,att,function ;设置或上卷窗口(由function决定)MOV bh,0MOV ah,6hMOV al,functionMOV ch,ulrowMOV cl,ulcolMOV dh,lrrowMOV dl,lrcolMOV bh,attint 10hendmpos_curse macro xx,yy ;设置光标在(x,y)位置MOV bh,0MOV ah,2mov dh,xxMOV dl,yyint 10hendmget_char macro clx,cly,crx,crylocalagain,toleft,toright,inleft,inright,judge,runleft,runright,showleftagain:mov ah,00H ;从键盘读字符,al为ASCII码,ah为扫描码int 16Hcmp ah,01H ;esc,则跳转到主程序的exitje temp1jne temp2temp1:jmp exittemp2:cmp ah,4BH ;若为←键,跳转到leftje toleftcmp ah,4DH ;若为→键,则跳转到rightje torightcmp ah,1CH ;若为Enter键,跳转到judgeje judge;若为普通字符mov ah,0EH ;在当前光标位置处显示字符int 10Hmov ah,03H ;读取光标位置int 10H ;dh是行,dl是列cmp dl,28H ;与左右窗口之间的列坐标位置比较jb inleft ;小于40,表示在左窗口ja inrighttoleft:pos_curse 5,clyjmp againtoright:pos_curse 5,cryjmp againinleft:inc clyor al,00100000Bmov ds:[si+06H],alinc sipos_curse 5,clyjmp againinright:inc cryand al,11011111Bmov ds:[di+16H],alinc dipos_curse 5,cryjmp againjudge:mov ah,03H ;读取光标位置int 10H ;dh是行,dl是列cmp dl,28H ;与左右窗口之间的列坐标位置比较jb runleft ;小于40,表示在左窗口ja runrightrunleft:mov byte ptr ds:[si+06H],'$'mov si,0;此处调用左窗口程序pos_curse 0AH,0FHlea dx, leftbufmov ah, 9int 21h ; output string at ds:dxmov ah, 1 ;等待按键int 21hscroll 5h,0ah,0fh,1eh,1fh,0 ;重置左窗口mov cly,0AHjmp toleftrunright:mov byte ptr ds:[di+16H],'$'mov di,0;此处调用右窗口程序pos_curse 0AH,37Hlea dx, rightbufmov ah, 9int 21hmov ah, 1 ;等待按键int 21hscroll 5h,32h,0fh,46h,1fh,0mov cry,32Hjmp torightendmdata segmentlx db 05H ;初始时刻左窗口左上角(5,10)ly db 0AHrx db 05H ;初始时刻右窗口左上角(5,50)ry db 32Hdwx db 12H ;初始时刻下窗口左上角(18,15)dwy db 0FHleftbuf db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;06Hrightbuf db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;16Hmainbuf1 db 'Transform capital letters and lower case letters!$';123456789012345678901234567890123456789012345 67890mainbuf2 db 'You can press <- or -> to change between left-win$'mainbuf3 db '-dows and right-windows If you want to exit,you c$'mainbuf4 db '-an press Esc.Now press any key to see the result$' data endsstack segmentdw 8 dup(0) ;暂存寄存器stack endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,ax;设置堆栈段地址和偏移地址mov ax,stackmov ss,axmov sp,10h;初始化窗口urow ucol lrow lcol attscroll 0,0,18h,4fh,70h,0 ;function为0 设置三个窗口scroll 5h,0ah,0fh,1eh,1fh,0scroll 5h,32h,0fh,46h,1fh,0scroll 12h,0fh,16h,41h,1fh,0;显示界面语句pos_curse 12H,0FHlea dx,mainbuf1mov ah,09Hint 21Hpos_curse 13H,0FHlea dx,mainbuf2mov ah,09Hint 21Hpos_curse 14H,0FHlea dx,mainbuf3mov ah,09Hint 21Hpos_curse 15H,0FHlea dx,mainbuf4mov ah,09Hint 21Hpos_curse lx,lyget_char lx,ly,rx,ryexit:mov ax,4C00Hint 21Hcode endsend start4、运行结果六、调试情况,设计技巧及体会1、任务完成情况设计系统主要是功能是在多窗口条件下完成多项任务,与预期效果基本一致。
一、设计内容与设计要求1.设计内容:通过本周的课程设计,学生能够巩固所学的基础知识,并能够使学生加倍熟练运用汇编程序设计语言来把握综合汇编程序设计的方式和进程,和为设计其它应用软件提供帮忙,进而提高学生的软件设计能力。
一、编制一计算竞赛成绩的程序,要求完成以下功能:(1) 9名评委,每一个评委给分范围为0~10(整数);(2) 9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精准到小数点二位);(3)将得分在光标位置处显示出来。
二、编制一程序,要求接收从键盘输入的一个班的学生成绩,并寄存于30字的grade 数组中,各数据的格式为:学号,成绩1,成绩2,…,成绩5然后依照grade中的学生成绩,把学生名次填入rank数据组中,并显示出来,格式为:学号,名次3、利用INT 1CH(大约每秒中断18.2次)编写一个中断驻留程序,要求在屏幕的右上角显示运算机中当前系统时刻,显示格式为时:分:秒:1/100秒4、输入一个菱形的两条对角线长,在屏幕上用‘*’号画出一个彩色的菱形。
五、设置图形方式并显示彩条,要求:选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次,一直到整个屏幕都显示出彩条2.设计要求:把握结构化程序设计的主体思想,以自顶向下慢慢求精的方式编制程序解决一些实际的问题,为以后编写软件积存一些典型的案例处置体会。
1.设计正确,方案合理。
2.界面友好,利用方便。
3.程序精炼,结构清楚。
4.设计报告5000字以上,含程序设计说明,用户利用说明,源程序清单及程序框图。
5.上机演示。
6.按学号顺序选课题号,并在规定的时刻内独自完成相关课题的汇编源程序编写、调整和运行。
源程序及编译生成各文件均保留在软盘中;7.按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;二、进度安排第 1 周:礼拜1礼拜2礼拜3礼拜4附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
西安邮电大学汇编语言程序设计竞赛报告专业班级通工1206学生姓名王炜学号03121167时间2014年11月24日一、设计题目《小型多任务管理系统》二、设计内容应用8086cpu汇编语言,设计任务管理系统,对多个任务进行管理和调度,能够实现任务间的切换,保存上下文信息。
运行任务时可从屏幕处看到任务结果。
三、需求分析1、系统完整功能在屏幕显示3个子窗口,他们的行列坐标如下:左窗口用于实现当键入任意字母时,可将其全部转换为小写字母;右窗口用于实现当键入任意字母时,可将其全部转换为大写字母;下窗口用于显示功能提示信息。
光标首先定位于左窗口第一行行首(5,10)处,可根据左右键的输入改变光标定位,以便分时使用左右窗口。
当光标处于左(右)窗口处,键入任意字母同步显示在光标位置处,若按Enter键,其转换结果将显示在窗口中央处,按任意键清屏,光标回到第一行行首(5,10)处,可重新输入字母进行转换。
按ESC键返回到DOS界面。
2、系统测试截图四、概要设计1、方案设计系统思路简单明确,主要运用BISO调用,用到宏定义较为方便的处理问题。
把一些基本功能编写成宏,在宏调用可高效的执行程序。
系统主要分为光标定位、清屏、接受字符并判断、在屏幕上显示字符、屏幕上显示转换结果等模块。
结构框图2、模块功能说明(1)多窗口显示:在代码段中调用四次宏scroll,分别设置好总窗口,左窗口,右窗口,下窗口。
(2)光标定位:用int10h的3号中断得到光标位置,通过与窗口的坐标比较确定光标位置(3)清屏:用scroll刷新需要清屏的窗口(4)显示字符:左右窗口分别用int10h的0E号中断显示光标处字符,用int16h的9号中断显示leftbuf和rightbuf的字符。
窗口用int16h 的9号中断显示data段的mainbuf字符。
(5)接受字符并判断:用int16h的0号中断接受字符,通过判断扫描码确定字符。
五、详细设计及运行结果1、程序运行流程2、程序中使用的功能调用INT 10H:02H 功能:用文本光标设置光标位置入口参数:AH =02HBH=页号DH/DL=行/列出口参数:无03H 功能:在文本坐标下,光标各种信息入口参数:AH = 03HBH=页号出口参数:CH=光标起始行CL=光标结束行DH/DL=行/列06H 功能:屏幕初始化入口参数:AH = 03HAL= 0 初始化窗口BH=卷入行属性CH=光标起始行CL=光标结束行CH/CL=左上角行/列号DH/DL=右上角行/列号出口参数: 无0EH 功能: 显示字符入口参数:AH = 0EHAL=字符BH=页码BL=前景色出口参数:无INT 16H:00H 功能: 从键盘读字符入口参数:AH =00H出口参数:AH =扫描码AL=字符码3、程序及必要注释scroll macro ulrow,ulc ol,lrrow,lrcol,att,function ;设置或上卷窗口(由function决定)MOV bh,0MOV ah,6hMOV al,functionMOV ch,ulrowMOV cl,ulcolMOV dh,lrrowMOV dl,lrcolMOV bh,attint 10hendmpos_curse macro xx,yy ;设置光标在(x,y)位置MOV bh,0MOV ah,2mov dh,xxMOV dl,yyint 10hendmget_char macro clx,cly,crx,crylocalagain,toleft,toright,inleft,inright,judge,runleft,runright,showleftagain:mov ah,00H ;从键盘读字符,al为ASCII码,ah为扫描码int 16Hcmp ah,01H ;esc,则跳转到主程序的exitje temp1jne temp2temp1:jmp exittemp2:cmp ah,4BH ;若为←键,跳转到leftje toleftcmp ah,4DH ;若为→键,则跳转到rightje torightcmp ah,1CH ;若为Enter键,跳转到judgeje judge;若为普通字符mov ah,0EH ;在当前光标位置处显示字符int 10Hmov ah,03H ;读取光标位置int 10H ;dh是行,dl是列cmp dl,28H ;与左右窗口之间的列坐标位置比较jb inleft ;小于40,表示在左窗口ja inrighttoleft:pos_curse 5,clyjmp againtoright:pos_curse 5,cryjmp againinleft:inc clyor al,00100000Bmov ds:[si+06H],alinc sipos_curse 5,clyjmp againinright:inc cryand al,11011111Bmov ds:[di+16H],alinc dipos_curse 5,cryjmp againjudge:mov ah,03H ;读取光标位置int 10H ;dh是行,dl是列cmp dl,28H ;与左右窗口之间的列坐标位置比较jb runleft ;小于40,表示在左窗口ja runrightrunleft:mov byte ptr ds:[si+06H],'$'mov si,0;此处调用左窗口程序pos_curse 0AH,0FHlea dx, leftbufmov ah, 9int 21h ; output string at ds:dxmov ah, 1 ;等待按键int 21hscroll 5h,0ah,0fh,1eh,1fh,0 ;重置左窗口mov cly,0AHjmp toleftrunright:mov byte ptr ds:[di+16H],'$'mov di,0;此处调用右窗口程序pos_curse 0AH,37Hlea dx, rightbufmov ah, 9int 21hmov ah, 1 ;等待按键int 21hscroll 5h,32h,0fh,46h,1fh,0mov cry,32Hjmp torightendmdata segmentlx db 05H ;初始时刻左窗口左上角(5,10)ly db 0AHrx db 05H ;初始时刻右窗口左上角(5,50)ry db 32Hdwx db 12H ;初始时刻下窗口左上角(18,15)dwy db 0FHleftbuf db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;06Hrightbuf db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;16Hmainbuf1 db 'Transform capital letters and lower case letters!$';123456789012345678901234567890123456789012345 67890mainbuf2 db 'You can press <- or -> to change between left-win$'mainbuf3 db '-dows and right-windows If you want to exit,you c$'mainbuf4 db '-an press Esc.Now press any key to see the result$' data endsstack segmentdw 8 dup(0) ;暂存寄存器stack endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,ax;设置堆栈段地址和偏移地址mov ax,stackmov ss,axmov sp,10h;初始化窗口urow ucol lrow lcol attscroll 0,0,18h,4fh,70h,0 ;function为0 设置三个窗口scroll 5h,0ah,0fh,1eh,1fh,0scroll 5h,32h,0fh,46h,1fh,0scroll 12h,0fh,16h,41h,1fh,0;显示界面语句pos_curse 12H,0FHlea dx,mainbuf1mov ah,09Hint 21Hpos_curse 13H,0FHlea dx,mainbuf2mov ah,09Hint 21Hpos_curse 14H,0FHlea dx,mainbuf3mov ah,09Hint 21Hpos_curse 15H,0FHlea dx,mainbuf4mov ah,09Hint 21Hpos_curse lx,lyget_char lx,ly,rx,ryexit:mov ax,4C00Hint 21Hcode endsend start4、运行结果六、调试情况,设计技巧及体会1、任务完成情况设计系统主要是功能是在多窗口条件下完成多项任务,与预期效果基本一致。
但这些指令并非学习过程中用到过的,许多指令功能不清楚,需要一点一点地查阅,还要从众多指令中选择正确的指令实现要求的功能,在相关指令使用过程中还要注意其使用方法。
在经过多次调试之后,可以在任意窗口中自由键入字符,按左右键来回切换以便使用左右窗口的不同功能。
在窗口中按下Enter键即可显示转换结果,继续按任意键清屏,重新使用系统功能。
2、心得体会此次竞赛设计并不简单,在程序编写过程中使用到多方面知识,在程序执行过程中,寄存器中的值会发生变化,有些值需要保存,有些值需要根据条件做适当更改,都需要严格控制;在条件判断、程序跳转时,在何时执行哪段程序,及执行后跳转到哪条指令,在逻辑上都要十分清晰,且在实现时要注意条件控制。
这次程序设计所使用的指令功能调用与平时使用的不一样,但这并不是我们放弃不做的理由,反而是我们应该寻求方法解决问题的动力。
我们以学习的知识有限,遇到的问题却是多种多样的,我们不能保证所有的知识都学习过了,但我们能够在日常的学习过程中学会如何去学习,掌握学习的方法。
有了较强的学习能力,才能在遇到新问题、新事物时,能够有效的学习相关知识,也才能有效的解决问题。