汇编课程设计
汇编语言第三版课程设计
汇编语言第三版课程设计一、设计目的和意义汇编语言是计算机科学中必备的基础知识,通过学习汇编语言可以深入理解计算机硬件的运作机理和指令的执行过程,为高级编程语言的学习奠定了坚实的基础。
本次课程设计旨在实现一个简单的汇编程序,通过实践操作、编写程序来掌握汇编语言的基本知识和操作。
二、设计内容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 ; 输出结果三、总结本次课程设计通过实现一个简单的汇编程序,掌握了汇编语言的基本知识和操作。
单片机(汇编语言)秒表课程设计设计
题目名称:秒表电路设计姓名:班级:学号:指导教师:日期:2016年7月13日《单片机原理及接口技术课程设计》教学大纲课程代码:课程名称:单片机原理及接口技术课程设计周数: 2 学分:1.0学分一、课程设计的性质、任务与目的单片机原理及接口技术课程设计是在学生学习完理论课和实验课的基础上开设的,通过完成一个涉及MCS-51或其他系列单片机多种资源应用并具有综合功能的设计与编程应用,使学生能够将课堂上学到的理论知识与实际应用结合起来,同时在软件编程、仿真调试及相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的设计开发工作打下一定的基础。
本课程设计的主要目的如下:1、增进对单片机的感性认识,加深对单片机理论知识的理解,掌握单片机内部功能模块(如定时/计数器、中断、片内外存贮器、I/O口、串行口等)的应用;2、掌握单片机应用系统的软硬件设计过程及实现方法,为以后设计和实现单片机应用系统打下良好基础;3、提高综合应用所学理论知识独立分析和解决实际问题的能力。
二、本课程设计的基本理论本课程设计的基本理论是单片机原理及接口技术的基本理论,主要包括单片机的硬件结构原理、指令系统、汇编语言、中断系统、定时/计数器、串行接口、I/O接口等。
在学习掌握单片机原理及接口技术课程的前提下,利用实验室提供的单片机实验条件或基于仿真软件,采用汇编语言或C51编程,设计实现一个具体的单片机应用系统项目,熟悉单片机系统设计开发的完整过程。
三、课程设计的方式与基本要求课程设计的方式:每个班级学生按2~3人分为一组,以组为单位进行课程设计(也可一人独立进行),课程设计的题目从教师给定的题目中选取,也可以是指导教师审核通过的学生自选题目。
基本要求:每组选定题目后,按题目要求,首先进行方案论证,通过查阅资料、集体讨论,确定设计方案;然后进行具体的硬件和软件设计;完成设计后,进行硬件/软件调试;最后撰写课程设计报告。
汇编语言课程设计判断大于或小于零
《汇编语言》课程设计系别:计算机系专业:计算机科学与技术年级: 2 0 0 8级学号:080201**姓名:钟***指导教师:翟***成绩:________________2010 年7 月 2 日一、目录一、目录 ---------------------------- 1二、课程设计目的和要求 ---------------- 2三、总体设计 --------------------- 2四、详细设计 --------------------- 21、流程图 ------------------------ 32、源代码 ------------------------ 4五、测试结果 -------------------------- 5六、课程设计心得与体会 ---------------- 6七、参考文献 --------------------------- 7二、课程设计目的和要求运用本课程学习的关于汇编语言的语句,程序结构知识、编程方法、子过程(过程)的定义及调用、系统功能调用及输入输出数据等内容。
进一步加深对汇编语言的理解和提高程序设计技能。
1.选题。
每人从给定的题目中选择一个作为自己的课程设计题目,要求独立完成;也可自选题目,交指导教师审查同意后方可进行设计。
2.分析课程设计题目的要求,编写需求分析说明书3.画出主要代码的流程图4.编写代码,调试代码使其能正确运行5.设计完成后提交课程设计报告(打印稿及电子稿)、可执行文件、源代码三、总体设计判断输入字符的范围1)屏幕出现输入字符提示;2)判断输入字符的范围;1)当用户输入字符小于零时程序返回:-1。
2)当用户输入字符大于零时程序返回:1。
四、详细设计1、流程图图-012、源代码DATAS SEGMENTW DB 0DH,0AH,'PLEASE INPUT NUMBER:$'RESULT DB 0DH,0AH,'RESULT:$'BUFFER DB 8DB ?DB 8 DUP(?) ;数据段定义缓冲区DATAS ENDSSTACKS SEGMENTDB 256 DUP(?)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXL: MOV DX,OFFSET W ;显示提示语:PLEASE INPUT NUMBER: MOV AH,9INT 21HMOV DX,OFFSET BUFFER ;输入字符串MOV AH,0AHINT 21Hmov bx,offset buffermov al,[bx+2] ;取符号位cmp al,'-' ;判断je a1 ;相等跳转a1JMP a2 ;跳转a2a1:MOV DX,OFFSET RESULTMOV AH,09HINT 21Hmov dl,'-'mov ah,02hint 21hmov dl,'1'mov ah,02hint 21hjmp exita2:MOV DX,OFFSET RESULTMOV AH,09HINT 21Hmov dl,'1'mov ah,02hint 21hjmp exitEXIT:jmp LMOV AH,4CH ;返回dos ,结束INT 21HCODES ENDSEND START五、测试结果图02 主程序界面图03 输入字符大于零图04 输入字符小于零六、课程设计心得与体会通过这次课程设计使我对汇编语言的语句,程序结构知识、编程方法、数据的定义及使用、系统功能调用及输入输出数据等内容有了进一步深刻的了解,同时还加深了对汇编语言的理解,提高程序设计技能。
(汇编代码)微机原理课程设计之TANK坦克大战
测试游戏功能是否正常
检查游戏性能是否达标
调试游戏中的错误和问题
优化游戏性能和体验
游戏测试:成功运 行,无严重错误
调试过程:定位并 修复了若干问题
测试结果:性能稳 定,符合预期
结论:游戏测试和 调试工作顺利完成
游戏优化和改进
优化算法:采用更高效的算法,减 少计算量,提高游戏运行速度。
完 成 TA N K 坦 克 大 战 游 戏 的 程 序设计和实现
学会使用汇编语言进行编程
掌握游戏的基本规则和玩法
游戏规则和玩法
游戏目标:击败所有敌人,保护基地 角色设定:玩家扮演坦克,有生命值和弹药量限制 武器装备:多种武器可供选择,不同武器有不同的攻击力和射程 游戏地图:多个关卡,每个关卡有不同的地形和敌人配置
添加标题
游戏状态管理:游戏状态包括开始、进行中和结束三个状态。在开 始状态下,玩家可以开始游戏;在进行中状态下,玩家可以操作坦 克移动和射击;在结束状态下,游戏结束并给出评价。
添加标题
游戏角色行为:游戏角色包括玩家坦克和敌方坦克。玩家坦克的行 为包括移动和射击;敌方坦克的行为包括移动和攻击。
游戏界面布局:简洁明了,易于操作 角色设计:形象生动,符合游戏主题 场景设计:丰富多样,增加游戏趣味性 特效设计:绚丽多彩,提升游戏体验感
添加标题
添加标题
添加标题
添加标题
敌方角色:游戏中的敌方坦克种类多 样,包括轻型坦克、重型坦克、自行 火炮等,具有不同的攻击和防御能力, 对玩家构成威胁。
游戏辅助角色:游戏中的一些辅助角 色,如地图、弹药补给点等,为玩家 提供地图信息和弹药补给服务,帮助 玩家更好地进行游戏。
游戏程序设计和实 现
游戏整体架构:包 括游戏的主要功能 模块和各模块之间 的关系
汇编语言课程设计四则运算计算器
*******************实践教学*******************兰州理工大学技术工程学院2013年春季学期汇编语言实训课程设计题目:四则运算计算器专业班级:计算机科学与技术姓名:___郭利强_____学号: 11730108指导教师:刘树群成绩:计算机科学与技术专业(11级)汇编语言实训课程设计任务书题目:四则运算计算器班级: 11计算机科学与技术1班学生姓名:郭利强学号: 11730108 题目类型:软件工程(R)指导教师:刘树群一.题目简介四则运算计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。
通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对汇编语言基本语言要素和流程结构的理解,针对汇编语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
二.设计任务1、查阅文献资料,一般在5篇以上;2、要求可以进行四则运算;3、完成软件结构设计和算法设计;4、完成系统的软件开发和测试工作;5、撰写设计说明书;6、做好答辩工作。
三.主要内容、功能及技术指标1、实现功能及指标:①使用Win32的窗口程序模式,实现四则运算程序的设计与开发;②界面友好。
2、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。
在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。
最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。
3、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过200行,否则要进一步划分。
4、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
汇编语言课程设计动画设计
汇编语言课程设计动画设计一、课程目标知识目标: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。
汇编语言课程设计
Ⅰ设计题1:利用汇编语言开发一个能实现两个十六进制数加、减、乘、除运算的运算器。
1.功能模块如下:①主模块A:能接受从键盘输入的两个十六进制数,调用相应的程序模块进行相应的计算,并将计算结果以十六进制数输出。
②子模块B:实现两个十六进制数相加。
③子模块C:实现两个十六进制数相减。
④子模块D:实现两个十六进制数相乘。
⑤子模块E:实现两个十六进制数相除。
2.总体架构如下:模块的有关说明:“输入”和“输出”模块为公用子程序,输入模块内要调用ASCII 码转换二进制子程序,以便把键盘输入的ASCII码转换为可计算的二进制数据;输出模块可调用两个通用的转换模块:二~十六进制转换子程序和转换ASCII码子程序,这两个模块作为子程序存入子程序库中。
这几个程序模块之间的关系如下:3. 设计要求:①要有系统运行时的进入界面及相关的菜单项。
②要完成指定的功能要求。
③要符合测试的要求。
4.报告撰写Ⅱ设计过程2.1 输入模块设计;模块B程序;程序名:INNUM;功能输入2个数PUBLIC INNUMEXTRN STR1:BYTE,INA:BYTE,STR2:BYTE,ERROR:BYTECODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODEINNUM PROC NEARPUSH AXPUSH DXMOV DX,OFFSET STR1MOV AH,9INT 21HMOV AH,1INT 21HCALL ATOBMOV INA,ALMOV DX,OFFSET STR2MOV AH,9INT 21HMOV AH,1INT 21HCALL ATOBMOV INA+1,ALPOP DXPOP AXRETINNUM ENDP;ATOB子程序功能:将输入的十六进制ACAII码转换为对应的数据;入口:寄存器AL,从键盘接受的十六进制ASCII码;出口:寄存器AL,转换后的数据ATOB PROC NEARPUSH DXCMP AL,'0'JB LERRJA L01SUB AL,30HJMP L00L01: CMP AL,'A'JB LERRCMP AL,'F'JA L02SUB AL,37HJMP L00L02: CMP AL,'a'JB LERRCMP AL,'f'JA LERRSUB AL,57HJMP L00LERR: MOV DX,OFFSET ERRORMOV AH,9INT 21HMOV AH,4CHINT 21HL00: POP DXRETATOB ENDPCODE ENDSEND2.2 输出模块设计;模块B程序;程序名:OUTNUM;功能输出结果PUBLIC OUTNUMEXTRN STR3:BYTE,STR:BYTE EXTRN BINHEX:NEARCODE SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CODEOUTNUM PROCPUSH AXMOV DX,OFFSET STR3MOV AH,9INT 21HCALL BINHEXMOV DX,OFFSET STRMOV AH,9INT 21HPOP DXPOP AXRETOUTNUM ENDPCODE ENDSEND2.3 数制转换模块设计;二十六进制转换子程序;程序名:BINHEX,ASM;功能:二十六进制转换子程序;子程序名:BINHEX;入口:OUTA存放要转换的16位运算结果数据;调用子程序BINHEX:2-16转换子程序;出口:STR存放要显示数据的ASCII码PUBLIC BINHEXEXTRN OUTA:WORD,STR:BYTEEXTRN HEXD:NEARCODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODEBINHEX PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV DX,OUTAMOV BX,OFFSET STRMOV CX,4LL: ROL DX,1ROL DX,1ROL DX,1MOV AL,DLCALL HEXDMOV [BX],ALLOOP LLPOP DXPOP CXPOP BXPOP AXRETBINHEX ENDPCODE ENDSEND2.4 转换ASCII模块设计;转换ASCII子程序;程序名:HEXD,ASM;功能:转换ASCII子程序;子程序名:HEXD;入口:AL寄存器低4位存放要转换的数据;出口:AL寄存器存放转换后的十六进制字符ASCII码 PUBLIC HEXDCODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODEHEXD PROCAND AL,0FHCMP AL,0AHJB L1ADD AL,07HL1: ADD AL,30HRETHEXD ENDPCODE ENDSEND2.5 加法模块设计;模块B加法程序;程序名:ADDOPT.ASM;两数相加子程序;入口:INA存两个数;出口OUTA存运算结果PUBLIC ADDOPT ;声明ADDOPT是公共标识符EXTRN OUTA:WORD,INA:BYTE ;声明外部标识符CODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODEADDOPT PROCPUSH AXXOR AX,AXMOV AL,INAADD AL,INA+1ADC AH,0MOV OUTA,AXPOP AXRETADDOPT ENDPCODE ENDSEND2.6 减法模块设计;模块C减法程序;程序名:SUBOPT.ASM;两数相减子程序;入口:INA存两个数;出口:OUTA存运算结果PUBLIC SUBOPT ;声明SUBOPT是公共标识符EXTRN OUTA:WORD,INA:BYTE ;声明外部标识符CODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODESUBOPT PROCPUSH AXXOR AX,AXMOV AL,INASUB AL,INA+1SBB AH,0MOV OUTA,AXPOP AXRETSUBOPT ENDPCODE ENDSEND2.7 乘法模块设计;模块D乘法程序;程序名MULOPT.ASM;两数相乘子程序;入口:INA存两个数;出口:OUTA存运算结果PUBLIC MULOPT ;声明MULOPT是公共标识符EXTRN OUTA:WORD,INA:BYTE ;声明外部标识符CODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODEMULOPT PROCPUSH AXXOR AX,AXMOV AL,INAMOV CL,INA+1MUL CLMOV OUTA,AXPOP AXRETMULOPT ENDPCODE ENDSEND2.8 除法模块设计;模块E除法程序;程序名DIVOPT.ASM;两数相除子程序;入口:INA存两个数;出口:OUTA存运算结果PUBLIC DIVOPT ;声明DIVOPT是公共标识符EXTRN OUTA:WORD,INA:BYTE ;声明外部标识符CODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODEDIVOPT PROCPUSH AXXOR AX,AXMOV AL,INAMOV CL,INA+1DIV CLMOV OUTA,AXPOP AXRETDIVOPT ENDPCODE ENDSEND2.9 主程序模块设计;模块A程序(主程序);程序名:ZHSY.ASM;功能:显示菜单,接收从键盘输入的两个16进制数;调用相应的程序模块执行相应的计算,计算结果以16进制数输出DATA SEGMENT PARA PUBLIC 'DATA' ;数据段为PUBLIC型,便于其他模块调用STR0 DB " Arithmetic proram ",0DH,0AH,'$'N EQU $-STR0 ;N为字符串STR0的长度DB " * * * * * * * * * * * * * * * ",0DH,0AH,'$'DB " 1.Addition ",0DH,0AH,'$'DB " 2.Subtration ",0DH,0AH,'$'DB " 3.Multiplication ",0DH,0AH,'$'DB " 4.Division ",0DH,0AH,'$'DB " 0.Exit ",0DH,0AH,'$'DB " * * * * * * * * * * * * * * * ",0DH,0AH,'$'DB "Input your choise:",'$'ERROR DB 0DH,0AH,"Input error,again enter:",'$'STR1 DB 0DH,0AH,"Input a hex number:",'$'STR2 DB 0DH,0AH,"Input a hex number again:",'$'STR3 DB 0DH,0AH,"The operation result is:",'$'INA DB ?,? ;存用户输入的两个8位二进制数据OUTA DW ? ;存16位运算结果数据STR DB 4 DUP(?),0DH,0AH,'$'DATA ENDSPUBLIC STR1,STR2,STR3,INA,OUTA,STR,ERROR ;声明公共标识符EXTRN INNUM:NEAREXTRN OUTNUM:NEAREXTRN ADDOPT:NEAREXTRN SUBOPT:NEAREXTRN MULOPT:NEAREXTRN DIVOPT:NEARCODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXOP0: MOV CX,9 ;循环9次,显示9行显示OP1: MOV BX,OFFSET STR0MENU: MOV DX,BX ;显示菜单MOV AH,9INT 21HADD BX,NLOOP MENUMOV AH,1 ;要求用户输入选择INT 21HCMP AL,'1'JE ADDOPCMP AL,'2'JE SUBOPCMP AL,'3'JE MULOPCMP AL,'4'JE DIVOPCMP AL,'0'JE EXITMOV DX,OFFSET ERROR ;选择错,要求用户重新输入MOV AH,9INT 21HJMP OP0 ;返回菜单EXIT: MOV AH,4CHINT 21HJMP EXITADDOP:CALL INNUM ;调用输入数据子程序CALL ADDOPT ;调用加法子程序CALL OUTNUM ;调用输出结果子程序JMP OP0 ;返回主菜单SUBOP:CALL INNUM ;调用输入数据子程序CALL SUBOPT ;调用减法子程序CALL OUTNUM ;调用输出结果子程序JMP OP0 ;返回主菜单MULOP:CALL INNUM ;调用输入数据子程序CALL MULOPT ;调用乘法子程序CALL OUTNUM ;调用输出结果子程序JMP OP0 ;返回主菜单DIVOP:CALL INNUM ;调用输入数据子程序CALL DIVOPT ;调用除法子程序CALL OUTNUM ;调用输出结果子程序JMP OP0 ;返回主菜单CODE ENDSEND START3.1 建立目标文件将各个模块分别汇编为.OBJ文件3.2 连接功能模块将各模块A.OBJ,JIA.OBJ,JIAN.OBJ、CHENG.OBJ,CHUT.OBJ,IN.OBJ,OUT.OBJ,HEXD.OBJ,BINHEX.OBJ相连接为一个可执行程序A.EXE3.4 运行系统功能运用DEBUG命令调试A.EXE,调试时注意T命令或P命令及G命令的应用。
(整合汇编)课程设计心得体会15篇
课程设计心得体会15篇课程设计心得体会1一。
课程定义反映了定义者的基本观点和取向,每一种课程定义的背后都有其成文或不成文的理论基础。
:(广义)课程是指所有学科(教学科目)的总和,或学生在教师指导下各种活动的总和(狭义):是指一门学科或一类活动。
学科课程也称“分科课程”,是由一系列不同类别的学科或学术领域以及与之相应的各种间接经验组成的课程二。
课程设计到目前为止,国内外的课程理论工作者可谓众说纷纭,没有一致的认识与理解。
而课程设计的基础是研究任何事物的产生和发展,从多方面探讨其产生或发展的基础和原因,也是研究事物的根本所在。
学科课程与活动课程的区别:第一,从目的上讲,学科课程主要向学生传递人类长期创造和积累起来的种族经验的精华;活动课程则主要让学生获得包括直接经验和直接感知的新信息在内的个体教育经验。
第二,从编排方式上讲,学科课程重视学科知识逻辑的系统性,活动课程则强调各种有意义的学生活动的系统性。
第三,从教学方式上讲,学科课程主要是以教师为主导去认识人类种族经验;而活动课课程主要以学生自主的交往为主获取直接经验。
第四,在评价方面,学科课程强调终结性评价,侧重考查学生的学习结果;而活动课程则重视过程性评价,侧重考查学生的学习过程。
三。
课程设计的内容和基本策略课程设计是课程领域最常用的术语之一,说白了就是课程内容的选择,课程实施和评价的设计。
内容决定目标,有助于课程内容的选择和组织,并且可以作为课程实施的依据和课程评价的准则。
课程设计的策略,在一般意义上与课程设计方法是一样的,但是目前阐述的课程设计策略的文献很少,一般认为有六种。
(课程选择,课程改编,课程整合,课程补充,课程拓展,课程新编)基本思路:一是以目标为中心的设计思路:(目标中心思路(或称目标模式)是课程设计者根据对学习者行为变化的期望而确定的教育目标进行课程设计的思路。
特征是:它以明确而具体的行为目标作为课程设计的中心,其他设计步骤都要围绕所定的行为目标来进行;其次,它主张行为导向的教学目标,第三,它强调目标的结构性。
汇编语言》课程设计报告--判断闰年程序
《汇编语言》课程设计报告题目:判断闰年程序院(系):计算机与信息工程学院班级:姓名:学号:指导教师:1设计主要任务通过完成闰年判别程序设计掌握字符输入及、调试过程。
1.1设计任务与目标软件所实现的任务与目标主要包括:(1)由键盘输入任意年份,判断输入年份是否在限制区间2000-9999内;(2)若程序判别输入年份为闰年,显示☺,不是闰年显示△;(3)根据要求确定解决问题的编程方法;(4)画出程序框图、设计源程序;(5)在计算机上汇编、链接所设计的程序;(6)按照要求调试程序,记录程序运行结果;(7)写出设计总结报告。
2 设计方案判断某年是否为闰年具体算法为如果该年份的数值正整数若能被400整除,或者不能被100整除,却能被4整除,则该数值代表的年份为闰年。
判断结果的显示符号可用ASCII值来实现。
流程图如下:4 子程序设计4.1 输入判断子程序该模块是对输入的年份的范围的判断,若是输入不在2000-9999之内,则显示错误Error,若是输入在范围内,则进行下面的操作。
4.2数字转换子程序将数字字符串转换成数字,以便进行下面的程序操作。
4.3 判断闰年子程序判断输入的年份是否为闰年,若是则输出☺,若不是则输出△,然后退出。
5 调试程序调试主要使用宏汇编程序MASM.EXE、连接程序LINK.EXE、系统操作界面当输出年份时显示结果当输入为闰年时显示笑脸并返回操作界面:6 设计总结通过这几天的汇编课程设计,基本掌握闰年判别程序设计,首先是根据题目要求确定思路,然后根据思路按照题目要求编写相应汇编程序,最后用软件调试结果是否正确。
在此次课程设计中,虽然课本上也讲过年份的判别,但是比较分散,所以刚开始设计时思路不是太清,通过查阅相关资料,清楚了程序设计的基本框架,进而能编写出相应程序,设计中又一个难题是最后屏幕显示的问题,通过查阅相应ASCII值,使最后显示出结果。
一周的课程设计让我收获颇多,虽然调试中遇到不少问题,但通过调试明白程序中存在的问题并改正。
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. 学生在课程学习过程中,主动探索新知识,培养解决问题的能力和创新思维。
二、教学内容本课程教学内容主要包括以下几部分:1. 汇编语言基础知识:- 认识汇编语言,了解其发展历程和特点。
- 学习汇编语言的语法和基本指令。
- 了解计算机内部结构,理解寄存器、内存等硬件资源的作用。
2. 计算器程序设计:- 分析计算器程序的需求,明确功能模块。
- 学习汇编语言编写程序的基本方法,设计计算器程序框架。
- 掌握加、减、乘、除等基本运算的汇编实现。
3. 调试与优化:- 学习使用汇编语言调试工具,掌握调试技巧。
- 分析程序性能,提出优化方案。
- 实践优化过程,提高计算器程序执行效率。
4. 教学案例与实战:- 选取典型计算器案例,进行讲解和分析。
- 学生分组合作,完成复杂计算器程序的设计与实现。
- 组织课堂讨论,分享编程心得和经验。
汉诺塔汇编课程设计
汉诺塔 汇编课程设计一、课程目标知识目标:1. 学生能理解汉诺塔问题的起源、规则及其数学原理。
2. 学生能掌握汇编语言的基本指令,并运用其编写简单的汉诺塔程序。
3. 学生能理解汉诺塔问题与递归思想的关系,并运用汇编语言实现递归算法。
技能目标:1. 学生能够运用汇编语言进行程序设计,具备基本的编程能力。
2. 学生能够通过汉诺塔问题的实践,培养逻辑思维和问题分析解决能力。
3. 学生能够通过小组合作,提高团队协作和沟通能力。
情感态度价值观目标:1. 学生对计算机科学产生兴趣,树立学习信心,形成积极的学习态度。
2. 学生在解决问题的过程中,培养面对困难、勇于挑战的精神。
3. 学生能够认识到编程在生活中的应用,理解科技对社会发展的推动作用。
课程性质:本课程为计算机科学与技术学科的一节实践课程,结合汉诺塔问题,让学生在动手实践中掌握汇编语言编程。
学生特点:本课程针对的是高年级学生,他们在之前的学习中已经掌握了计算机基础知识和简单的编程技能,具备一定的逻辑思维能力。
教学要求:教师需要引导学生通过汉诺塔问题,深入了解汇编语言编程,培养其编程能力和问题解决能力,同时注重培养学生的团队合作精神和积极的学习态度。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容本节教学内容主要包括以下几部分: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. 子程序:了解子程序的概念,学会编写和调用子程序。
汇编语言程序设计基于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)。
方式,这个设置可以用BIOS调用中00号功能的设置显示方式功能,其入口参数为:AL=显示方式,出口参数:无。
显示方式设置好之后,就要显示提示用户信息的字符串,可预先将要显示的字符串放在内存中,显示字符串要用DOS调用中的I/O设备功能调用,其入口参数为DS:DX=字符串首址,字符串需要以$结束,其出口参数无。
这样一个具有提示信息的界面就产生了,接着就需要其要具有可以输入一个字符的功能,由此确立了主程序要有使用户进行键盘输入的指令,这条指令要用到设备I/O 的功能调用,使用21H的01H号功能的键盘输入字符功能,其入口参数:无,出口参数为AL=输入字符;完成以上的汇编语言程序设计的前期工作之后就要进行对输入的字符进行判断了,而主程序只能判断出大写字母D、T、E这三个字符,判断用户输入的字符是什么字符可以根据其ASCII值来判定,故可将其输入的字符的ASCII值分别于D、T、E相减来判断,若用户按下的是键盘上的大写字母D,则主程序就调用一个显示当前系统日期的子程序来完成显示日期的功能;若用户按下键盘上的大写字母T,则主程序调用显示时间子程序,完成显示当前系统时间的功能;若用户按下键盘上的大写字母E,则主程序调用退出子程序,退出程序:若用户按下出了这三个按键之外的其他按键,则主程序只显示用户提示信息,等待用户的继续输入,直至用户输入大写字母E,程序才能正常结束。
这个按输入字符而执行相应程序的功能决定了其判断字符的程序段结构为分支结构或循环结构。
(2)主程序流程图
由主程序完成的功能及实现方式可确定其流程图的结构,主程序的流程图如图1所示。
Y N
N
Y
N
N
Y
图1 主程序流程图
3.2.2子程序功能
(1)显示日期子程序完成的功能
显示日期子程序DATE通过调用DOS下的2AH号功能,将日期值传送进寄存器CX和DX中,然后再调用将日期数值转换成ASCII码字符的子程序,最后调用BIOS下的13H号的显示字符串的功能,将日期显示在矩形框中。
此函数的入口条件是:AL=’D’;出口条件是:要显示的日期字符串在以BP指出的附加段中。
(2)显示时间子程序完成的功能
显示时间子程序TIME调用DOS下的2CH号功能,将时间传送进寄存器CX和DX中,
然后调用将时间数值转换成ASCII码字符的子程序,最后调用
BIOS下的13H号的显示字符串的功能,将时间显示在矩形框中。
此子程序的入口条件是:AL=’T’;出口条件是:要显示的时间字符串在由BP指向的附加段中。
(3)日期数值转换ASCII码字符子程序完成的功能
BCDASC子程序将CX和DX中的数值逐个转换成与之相对应的ASCII码,再将其送入以PIN为首地址的附加段中。
此子程序的入口条件是:日期在CX和DX中;出口条件;无。
(4)时间数值转换ASCII码字符子程序完成的功能
BCDASC1子程序将CX和DX中的数值逐个转换成与之相对应的ASCII码,再将其送入PIN2为首地址的附加段中。
此函数的入口条件是:时间在CX和DX中;出口条件:无。
(5)退出子程序完成的功能
退出子程序QUIT的功能是退出程序,返回DOS状态。
入口条件AL=’E’;出口条件:无。
3.2.3子程序流程图
(1)SHOWT的流程图如图2所示
N
Y
图2 显示日期SHOWT子程序流程图(2)SHOWD的流程图如图所示
N
Y
图3 显示日期TIME子程序流程图
(4) 时间数值转换成ASCII字符子程序流程图如图4所示
图4 时间转换ASCII码流程图4.源程序代码
CSEG ENDS
END BEGIN
5.调试和运行
5.1调试过程
5.1.1进入调试界面
在DOS环境下的命令提示符中输入命令:DEBUG DTM3.EXE,然后现-横线提示符,之后可以输入DEBUG的多种调试命令,如U反汇编命令,T单步执行命令,D显示内存命令,G执行命令等一系列调试命令,调试界面如图5所示。
图5 调试界面
5.1.2用G命令设置断点
(1)进入主界面
根据U汇编的结果,先从源代码的主程序的起始地址执行到输入字符命令,故将输入字符指令的地址设置为断点。
输入-G=0032,006C,按回车后,显示的界面如图6所示。
图6 提示界面
(2)调试显示日期功能
在键盘上键入大写字母D,查看寄存器的变化,其中AL的值为44H,即键入的是大写
字母D,然后再进行设置断点,这次将断点设置在调用显示日期的下一条指令处,输入命令G=0070,0077,按回车后,显示的界面如图7所示,可知实现了显示时间的功能。
图7 日期显示界面
(3)调试显示时间功能
键入大写字母T,之后,在输入G=0070,0080,按回车之后,显示的界面如图8所示,可知显示时间的功能以实现。
图8 时间显示界面
(4)退出功能调试
退出功能的代码比较简单,就是DOS的I/O输入输出命令中的程序结束,返回DOS 状态的命令,在提示主界面中输入大写字母E后,程序退出。
5.2运行结果
5.2.1运行过程及截图
(1)进入提示界面
在命令提示符界面中,在生成程序所在目录下输入该文件的文件名,DTM3之后,按回车,显示界面如图9所示。
图9 提示界面
(2)显示日期
键入大写字母D,显示日期界面如图10所示。
图10 显示日期界面
(3)显示时间
键入大写字母T,显示时间界面如图11所示。
图11 显示时间界面
(4)退出程序
键入大写字母E,退出后界面如图12所示。
图12 退出程序
6.总结
在本次课程设计中,认识到汇编语言对于显示方面的编程很有用处,而且在显示编程中,用到很多BIOS调用和DOS的相关调用,这是在平时是不经常训练与实践的,这次给补上了。
我选择的时间与日期的显示,就用到了显示的相关知识及色彩的设置,还有字符串的输出等。
虽然它实现了输入大写字母D显示日期。
输入大写字母T和大写字母E退出的功能,但是,在按除了这三个字母之外的键盘上的其他按键时,只是继续显示提示信息而没有提示错误的相关信息。
可以在此基础上对这个程序增加个显示出错信息的功能,将提示出错信息的字符串像存储用户提示信息那样写进内存中,然后当用户按下除了大写字母D、T和E之外的其他字符时就调用具有此功能的子程序或宏。
在编制程序过程中,曾想过将ASCII码转换功能的代码段编制成宏,但是在显示日期和时间时,要多次调用这个宏,而每一次调用宏,都会在这段代码写在宏名出现的地方,这样会造成代码冗余,降低内存的利用率。
考虑到这些之后,就放弃了使用宏,而改用子程序。
子程序虽然没有宏那样具有较好的灵活性和较高的执行速度,但是却具有占用较少的内存的特点,故在此次课程设计的源程序编辑中选择了将ASCII代码的转换编写成了具有此功能的子程序。
对本次汇编语言课程设计做一个总结的话,那就是通过本次汇编语言的课程设计,。