汇编课程设计

合集下载

汇编语言第三版课程设计

汇编语言第三版课程设计

汇编语言第三版课程设计一、设计目的和意义汇编语言是计算机科学中必备的基础知识,通过学习汇编语言可以深入理解计算机硬件的运作机理和指令的执行过程,为高级编程语言的学习奠定了坚实的基础。

本次课程设计旨在实现一个简单的汇编程序,通过实践操作、编写程序来掌握汇编语言的基本知识和操作。

二、设计内容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坦克大战

(汇编代码)微机原理课程设计之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命令的应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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代码的转换编写成了具有此功能的子程序。

对本次汇编语言课程设计做一个总结的话,那就是通过本次汇编语言的课程设计,。

相关文档
最新文档