汇编语言课程设计-显示数字对称等腰三角形
c语言中等腰三角形的表示

c语言中等腰三角形的表示C语言中的等腰三角形是一种常见的图形,其形状特点是两边的长度相等,而底边的长度可以任意取值。
在本文中,我将介绍如何使用C语言来表示和打印等腰三角形。
在C语言中,我们可以利用循环和嵌套循环来实现等腰三角形的打印。
首先,我们需要确定三角形的高度,即确定打印的行数。
然后,我们可以使用两个嵌套的循环来控制行数和每行的打印字符数量。
下面是一个示例代码,用于打印一个高度为5的等腰三角形:```c#include <stdio.h>int main() {int height = 5; // 三角形的高度for (int i = 1; i <= height; i++) {// 打印空格,使每行的字符居中for (int j = 1; j <= height - i; j++) {printf(" ");}// 打印星号,表示三角形的一行for (int k = 1; k <= 2 * i - 1; k++) {printf("*");}printf("\n"); // 换行}return 0;}```运行上述代码,你将会看到如下输出:```*************************```在上述代码中,我们使用了三个嵌套的循环。
外层的循环控制行数,内层的第一个循环用于打印空格,使得每一行的字符居中;内层的第二个循环用于打印星号,表示三角形的每一行。
这只是一个简单的示例,你也可以根据需要修改代码,实现不同高度的等腰三角形。
除了使用循环和嵌套循环,我们还可以使用递归来实现等腰三角形的打印。
递归是一种函数调用自身的技术,通过递归调用可以简化程序的实现。
下面是一个使用递归实现等腰三角形的示例代码:```c#include <stdio.h>void printTriangle(int height, int current) {if (current > height) {return;}// 打印空格,使每行的字符居中for (int i = 1; i <= height - current; i++) {printf(" ");}// 打印星号,表示三角形的一行for (int j = 1; j <= 2 * current - 1; j++) {printf("*");}printf("\n"); // 换行printTriangle(height, current + 1);}int main() {int height = 5; // 三角形的高度printTriangle(height, 1);return 0;}```运行上述代码,你将会看到和前面相同的输出结果。
5.3.1等腰三角形的轴对称性(教案)

一、教学内容
本节课选自《初中数学课程标准》七年级下册第五章第三节第一部分“5.3.1等腰三角形的轴对称性”。教学内容主要包括以下两点:
1.等腰三角形的定义及其性质:通过观察和分析,让学生掌握等腰三角形的定义,了解等腰三角形两腰相等、底角相等的特点。
2.等腰三角形的轴对称性:引导学生探索等腰三角形沿着底边中点所在的直线进行对折时,两腰及两底角的变化规律,从而得出等表达:如何让学生从具体的实例中抽象出轴对称性的数学表达,并用准确的语言进行描述。
难点突破方法:
-通过实际操作,如让学生动手折叠等腰三角形,观察对折后的图形,亲身体验轴对称性的特点。
-引导学生运用数学语言描述轴对称性,如对称轴、对称点等概念,并给出具体的例子进行解释。
-设计一些有关等腰三角形轴对称性的实际问题,让学生运用所学知识解决问题,如求解等腰三角形的高、中线等。
3.重点难点解析:在讲授过程中,我会特别强调等腰三角形的定义和轴对称性这两个重点。对于难点部分,我会通过举例和比较来帮助大家理解。
(三)实践活动(用时10分钟)
1.分组讨论:学生们将分成若干小组,每组讨论一个与等腰三角形轴对称性相关的实际问题。
2.实验操作:为了加深理解,我们将进行一个简单的实验操作。通过折叠等腰三角形,观察其对折后的形状,从而验证轴对称性。
-等腰三角形的轴对称性:讲解等腰三角形沿着底边中点所在的直线进行对折时,两腰及两底角的变化规律,明确轴对称性的概念。
举例解释:
在讲解等腰三角形的性质时,可以通过绘制不同类型的等腰三角形,如等腰直角三角形、等腰锐角三角形、等腰钝角三角形等,让学生观察并总结两腰相等、底角相等的规律。
2.教学难点
-理解并运用轴对称性:学生在理解等腰三角形的轴对称性过程中,可能会对“轴对称”这一概念感到困惑,不知道如何在实际问题中运用这一性质。
汇编语言课程设计绘制三角形图形程序

课程设计说明书课程名称:汇编语言班级:姓名:__ _学号:__ __设计题目:绘制三角形图形程序设计时间:2010/6/21至2010/7/2指导教师:李永飞评语:_____________________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:评阅教师:一、课程设计目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
二、课程设计要求1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。
2.遵循模块化、结构化的程序设计方法。
3.要求程序必须正确。
4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。
5.要求程序结构合理,语句使用得当。
6.适当追求编程技巧和程序运行效率。
三、课程设计题目:绘制三角形图形程序四、课题分析编写程序.使PC 机显示一个三角形。
对于图形设计,要通过BIOS INT 10H 调用,用菜单选择三角形的输出。
三角形可分割为3条直线,因此显示三角形就可分解为根据两点画直线的程序。
五、流程图:Q六、核心代码展示:1、主函数MAIN PROC FARASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSSTART:MOV AX,DATA设置三角形颜色 设置3顶点坐标设置显示方式AL=12H 显示欢迎界面 用户输入选项 程序结束 设置显示方式AL=02H Line 函数绘图清屏MOV DS,AXMOV AX,0A000HMOV ES,AXMOV AX,0012H ;设置640*480*16图形模式INT 10Hreset: ;02文字模式显示主界面MOV AX,0002H ;根据用户输入调用相关功能INT 10Hdisp deskmov ah,01hint 21hcmp al,'A'jz zjcmp al,'B'jz dycmp al,'C'jz zdycmp al,'Q'jz gooverjmp resetzj: ;输出直角三角形CALL INPUTCOLORdisp crlflea si,zhijiaojmp nextdy: ;输出等腰三角形CALL INPUTCOLORdisp crlflea si,dengyaojmp nextzdy: ;调用input函数自定义三角形CALL INPUTCOLORdisp crlfCALL inputlea si,pointjmp nextnext: ;调用output函数输出指定的三角形MOV AX,0012HINT 10H ;设置640*480*16图形模式MOV AL,2CALL SET_WRITE_MODEMOV AX,BKCOLORCALL CLEARcall outputMOV AH,1INT 21HJMP RESETgoover: ;程序结束MOV AH,0 ;清屏MOV AL,12HINT 10HRETMAIN ENDP2、Bresenham画线算法PIXEL proc nearPUSH BPPUSH BXPUSH CXPUSH DSMOV BP,SPMOV AX,80MOV BX,WORD PTR[BP+12] ;BX<=YMUL BX ;(DX:AX)<=80*YMOV BX,AXMOV AX,WORD PTR[BP+14] ;AX<--XMOV CL,8 ;DIV CL ;AL<=商(X/8),AH<=余数(X%8) MOV CL,AH ;CL<=AHMOV AH,0 ;ADD BX,AX ;BX(OFFSET)<=80*Y+X/8MOV AL,80H ;SHR AL,CL ;AL(MASK)<=(80H>>CL)PUSH AXMOV DX,3CEHMOV AL,8OUT DX,ALMOV DX,3CFHPOP AXOUT DX,ALMOV AL,ES:[BX]MOV AX,WORD PTR[BP+10] ;AX<=COLORMOV BYTE PTR ES:[BX],ALPOP DSPOP CXPOP BXPOP BPRET 6pixel endp;------------------------------;Bresenham画线算法LINE proc nearPUSH BPMOV BP,SPSUB SP,16MOV WORD PTR[BP-6],0 ;X=0MOV WORD PTR[BP-8],0 ;Y=0MOV WORD PTR[BP-14],1 ;INCX=1MOV WORD PTR[BP-16],1 ;INCY=1MOV AX,WORD PTR[BP+6] ;AX<=X2SUB AX,WORD PTR[BP+10] ;AX<=X2-X1JNC L1 ;IF X2>=X1,JMP L1NEG AX ;IF X2<X1,DELTA_X=-DELTA_XMOV WORD PTR[BP-14],-1 ;INCX<=-1L1:CMP AX,0 ;IF DELTA_X!=0,JMP L11JNE L11MOV WORD PTR[BP-14],0 ;INCX<=0L11:MOV WORD PTR[BP-10],AX ;DELTA_X<=AXMOV AX,WORD PTR[BP+4] ;AX<=Y2SUB AX,WORD PTR[BP+8] ;AX<=Y2-Y1JNC L2 ;IF Y2>=Y1,JMP L2NEG AX ;IF Y2<Y1,DELTA_Y=-DELTA_YMOV WORD PTR[BP-16],-1 ;INCY<=-1 L2: ;CMP AX,0 ;IF DELTA_Y!=0,JMP L22JNE L22 ;MOV WORD PTR[BP-16],0 ;INCY<=0L22: MOV WORD PTR[BP-12],AX ;DELTA_Y<=AXLP4: MOV AX,WORD PTR[BP-10] ;AX<=DELTA_XCMP AX,WORD PTR[BP-12] ;JG LP5 ;DELTA_X>DELTA_YMOV AX,WORD PTR[BP-12] ;MOV WORD PTR[BP-4],AX ;DISTANCE<=DELTA_YJMP LP51 ;LP5:MOV AX,WORD PTR[BP-10] ;MOV WORD PTR[BP-4],AX ;DISTANCE<=DELTA_XLP51:INC AXMOV WORD PTR[BP-2],AXLP6:PUSH WORD PTR[BP+10]PUSH WORD PTR[BP+8]PUSH COLORCALL PIXELMOV AX,WORD PTR[BP-6] ;AX<=XADD AX,WORD PTR[BP-10] ;AX<=X+DELTA_XMOV WORD PTR[BP-6],AX ;X=X+DELTA_XMOV AX,WORD PTR[BP-8] ;AX<=YADD AX,WORD PTR[BP-12] ;AX<=Y+DELTA_YMOV WORD PTR[BP-8],AX ;Y=Y+DELTA_YMOV AX,WORD PTR[BP-6] ;AX<=XCMP AX,WORD PTR[BP-4]JLE LP7 ;IF X<=DISTANCE,JMP LP7 MOV AX,WORD PTR[BP-6] ;X>DISTANCESUB AX,WORD PTR[BP-4] ;AX<=X-DISTANCEMOV WORD PTR[BP-6],AX ;X=X-DISTANCEMOV AX,WORD PTR[BP+10] ;AX<=X1ADD AX,WORD PTR[BP-14] ;AX<=X1+INCXMOV WORD PTR[BP+10],AX ;X1=X1+INCXLP7:MOV AX,WORD PTR[BP-8] ;AX<=YCMP AX,WORD PTR[BP-4]JLE LP8 ;IF Y<=DISTANCE,JMP LP8 MOV AX,WORD PTR[BP-8] ;Y>DISTANCESUB AX,WORD PTR[BP-4] ;AX<=Y-DISTANCEMOV WORD PTR[BP-8],AX ;Y=Y-DISTANCEMOV AX,WORD PTR[BP+8] ;AX<=Y1ADD AX,WORD PTR[BP-16] ;AX<=Y1+INCYMOV WORD PTR[BP+8],AX ;Y1=Y1+INCYLP8:DEC WORD PTR[BP-2] ;IF T!=0,JMP LP6JZ LP9JMP LP6LP9:MOV SP,BPPOP BPRET 8line endp3、自定义三角形顶点位置INPUT PROC NEARlea si,pointDISP inputINFO_1 ;显示输入提示信息xx1:disp xCALL getchar ;调用getchar输入3位数cmp dx,0 ;验证输入数字在要求的范围内jl wx1cmp dx,600jg wx1mov [si],dx ;验证通过,输入下一个数mov [si+8],dxjmp yy1wx1:disp inputwrong ;验证失败,显示提示信息并重新输入jmp xx1yy1:disp yCALL getcharcmp dx,0jl wy1cmp dx,400jg wy1mov [si+2],dxmov [si+10],dxDISP inputINFO_2jmp xx2wy1:disp inputwrongjmp yy1xx2:disp xCALL getcharcmp dx,0jl wx2cmp dx,600jg wx2mov [si+4],dxmov [si+16],dxjmp yy2wx2:disp inputwrongjmp xx2yy2:disp yCALL getcharcmp dx,0jl wy2cmp dx,400jg wy2mov [si+6],dxmov [si+18],dxDISP inputINFO_3jmp xx3wy2:disp inputwrongjmp yy2xx3:disp xCALL getcharcmp dx,0jl wx3cmp dx,600jg wx3mov [si+12],dxmov [si+20],dxjmp yy3wx3:disp inputwrongjmp xx3yy3:disp yCALL getcharcmp dx,0jl wy3cmp dx,400jg wy3mov [si+14],dxmov [si+22],dxretwy3:disp inputwrongjmp yy3INPUT ENDP4、置堆栈并调用LINE画线output proc nearmov cx,3DDD: ;将指定三角形的三顶点坐标压栈PUSH CX ;压栈按照line函数要求的规则PUSH SIMOV AX,[SI]PUSH AXMOV AX,[SI+2]PUSH AXMOV AX,[SI+4]PUSH AXMOV AX,[SI+6]PUSH AXCALL LINE ;调用Line函数画线POP SIADD SI,8POP CXLOOP DDDretoutput endp 七、结果显示八、感想、收获及体会本程序的核心在于Bresenham画线算法,有了画线算法后添加以输入输出,用户界面等模块既得到最终的程序。
汇编语言判断能否组成三角形

汇编语言判断能否组成三角形江汉大学文理学院课程设计题目_____三角形判断_____部 (系) 信息技术学部专业电子信息工程姓名黄金国学号201106010227 指导教师罗海庚2012年 7月 4日目录摘要 ............................................ 1 1 设计意义及要求 .. (2)1.1 设计意义 (2)1.2 设计要求 .................................. 2 2 设计原理 (3)2.1设计思路 (3)2.2 DOS及其功能调用 (3)2.3 ASCII码 ................................... 5 3 程序设计 (6)3.1 程序流程图 (6)3.2程序说明 ................................... 7 4 程序调试与运行 (9)4.1调试过程 (9)4.2调试中遇到的问题 .......................... 10 心得体会 ..................................... 11 参考文献 (12)摘要在科技飞速发展的今天。
计算机在人们的日常生活,工业生产,科技研发,航空航天领域都有不可替代的作用。
而这一切的基础都是计算机。
可见计算机的重要性,而计算机的发展速度更是惊人,最初的计算机,体积庞大,结构复杂,只有专业人员才能操作,但是,经过了仅仅几十年的发展,计算机已经被缩小到很微型了,操作也更加简单,结构更加清晰明了,而其中为代表的就是8086系列的微处理器的出现,彻底改变了之前计算机体积庞大的缺憾。
但是无论如何发展计算机都是遵循着冯?诺依曼的结构发展的。
汇编语言是微机原理及应用的基础,微机主机及接口所要实现的功能都要通过汇编语言来实现。
尽管汇编语言程序设计编程效率偏低,但运行效率高、速度快。
因此掌握汇编语言是学好微机原理及接口技术的第一步。
微机原理课程设计——汇编输出杨辉三角

目录第一章绪论 (1)第二章分析与设计 (2)2.1 题目 (2)2.2 要求 (2)2.3 方案设计与论证 (3)2.3.1 整体设计思路 (3)2.3.2 方案选择 (3)2.4 结构框图 (4)3.1 宏定义换行 (5)3.2 阶数输入过程 (5)3.3 数据判断功能 (6)3.4 询问继续模块 (7)3.5 数值计算模块 (7)3.6 显示模块 (9)3.6.1 数据显示 (9)3.6.2 空格显示 (10)第四章实验结果及问题处理 (12)4.1 实验结果 (12)4.2出现的问题以及解决的方案 (13)4.2.1 数据输入问题 (13)4.2.2 除法溢出问题 (13)4.2.3 数据计算问题 (14)第五章总结与体会 (15)参考文献 (17)附录 (18)第一章绪论随着电子计算机技术的不断发展,微型计算机系统的功能越来越强,而关于计算机的程序设计语言也经历了一个发展的过程。
从最基本的机器语言到汇编语言,并发展到高级的智能化语言,如visual C++、Visual Basic等。
汇编语言(Assembly Language)是一种采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用符号或标号代表地址、常量或变量。
助记符一般都是英文单词的缩写,便于识别和记忆。
使用汇编语言编写的程序称为汇编语言源程序。
汇编语言源程序不能由机器直接执行,而必须翻译成有机器代码组成的目标程序,这个翻译的过程称为汇编。
把汇编语言源程序翻译成目标程序的软件称为汇编程序。
汇编语言与机器语言密切相关,它们之间有明显的对应关系。
一条汇编语言指令对应一条机器语言代码,所以汇编语言和机器语言一样都是面向机器的语言。
使用汇编语言进行程序设计能充分利用机器的硬件功能和结构特点,从而有效地加快程序的执行速度,减少程序占用的存储空间。
所以汇编语言大量用于编写计算机系统程序、实时通信程序和实时控制程序等。
汇编语言作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。
判断是否能构成三角形汇编语言程序设计

目录摘要 01 程序设计要求及目的 (1)1.1 程序设计要求 (1)1.2 程序设计目的 (1)2 设计思路与准备 (2)2.1 程序设计思路 (2)2.2 DOS功能调用 (3)2.3 ASCⅡ码转换表 (6)3 程序设计与代码说明 (7)3.1 流程图设计 (7)3.2 程序输入部分 (8)3.3 程序判断部分 (9)3.4 程序输出部分 (11)3.4.1 构成三角形的边长输出 (11)3.4.2 错误输出 (12)3.5 完整程序代码 (13)4 程序调试与运行 (16)4.1 调试过程 (16)5 程序创新与改进 (19)5.1 改进说明 (19)5.2 程序代码 (20)5.3 程序运行与调试 (21)6 心得及体会 (21)7 参考文献 (23)附件一:题目要求源程序附件二:加入判断等腰或等边三角形的程序摘要汇编语言是面向机器的程序设计语言。
在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址,如此就增强了程序的可读性和编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。
汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。
因此,有时候人们也把汇编语言称为组合语言。
汇编语言是微机原理及应用的基础,微机主机及接口所要实现的功能都要通过汇编语言来实现。
尽管汇编语言程序设计编程效率偏低,但运行效率高、速度快。
因此掌握汇编语言是学好微机原理及接口技术的第一步。
本次课设通过代码编程,设计出输入三边并判断它们是否能够成三角形,若不能,则显示错误字样。
否则直接显示输出该三角形的周长。
充分应用汇编技术,微机原理和接口技术的知识。
关键词:汇编语言,控制,微机原理及接口技术,三角形1 程序设计要求及目的1.1 程序设计要求1.1.1 选题:第十四题判断是否能构成三角形汇编语言程序设计输入a,b,c 三边后,判断是否能构成三角形,如能构成三角形,输出三角形的周长,否则输出“ERROR”。
(精品教案)等腰三角形讲课稿范文(通用5篇)

(精品教案)等腰三角形讲课稿范文(通用5篇)精心整理的等腰三角形讲课稿范文(通用5篇),仅供参考,大伙儿一起来看看吧。
1、教材的地位与作用等腰三角形是在学习了轴对称之后编排的,是轴对称知识的延伸和应用。
等腰三角形的性质及判定是探索线段相等、角相等及两条直线互相垂直的重要工具,在教材中起着承上启下的作用。
2、教学重点和难点本着新课程标准,在吃透教材基础上,我把探究等腰三角形的性质定为本节课的重点,经过创设咨询题和解决咨询题来突出重点。
把等腰三角形性质的建立定为本课的难点,经过折纸实验和小组合作探索来突破难点。
1、学情分析我所教的学生,从认知的特点来看,好奇爱咨询,求知欲强,想象力丰富;并已初步具有对数学咨询题举行合作探索的能力。
2、三维目标依照教材结构和内容分析,思考到学生已有的认知结构、心理特征,我制定如下目标:知识与技能目标:了解等腰三角形的概念,探究并掌握等腰三角形的性质,并会举行有关的论证和计算,以及运用所学的知识去解决实际咨询题。
过程与办法目标:经过对性质的探索活动和例题的分析,培养学生多角度考虑咨询题的适应,提高学生分析咨询题和解决咨询题的能力;使学生进一步了解发觉真理的办法(探索-猜想-归纳-论证)。
情感态度与价值观目标:经过对等腰三角形的观看、试验、归纳,体验数学活动充满着探究性和制造性,数学就在我们周围。
在操作活动中,培养学生的合作精神,在独立考虑的并且可以认同他人. 感觉合作交流带来的成功感,树立自信心.1、教法依照教材分析和目标分析,我确定本课要紧的教法为探索发觉法。
采纳“咨询题情境—探究交流—猜想验证——建立模型”的模式安排教学,并在各个环节举行分层施教。
2、学法我们常讲:“现代的文盲别是别识字的人,而是没有掌握学习办法的人”,因而在教学中我特殊重视学法的指导。
本课采纳小组合作的学习方式,让学生遵循“观看——猜想——归纳——验证——反馈——实践”的主线举行学习。
《数学课程标准》强调,教师应发扬教学民主,成为学生数学学习活动的组织者、引导者、合作者。
等腰三角形(说课稿)

等腰三角形(说课稿)一、说教材本文是高中数学课程中关于几何图形——等腰三角形的专题讲解。
在几何学中,等腰三角形作为一种基本的图形,具有极其重要的地位。
它不仅是平面几何的基础知识,也是培养学生空间想象能力、逻辑推理能力的重要载体。
等腰三角形在课文中的作用主要体现在以下几个方面:1. 基础知识:等腰三角形是基本的几何图形,掌握其性质和判定方法对后续学习其他几何知识有重要影响。
2. 方法培养:通过学习等腰三角形,可以培养学生运用几何画板、尺规作图等工具解决实际问题的能力。
3. 能力提升:等腰三角形的相关问题可以锻炼学生的逻辑思维、空间想象和推理能力。
主要内容:1. 等腰三角形的定义及性质:两边相等的三角形称为等腰三角形,等腰三角形的底角相等,底边的中点到顶点的线段是高、中线和角平分线。
2. 等腰三角形的判定:有两边相等的三角形是等腰三角形,有两角相等的三角形是等腰三角形。
3. 等腰三角形的周长、面积计算:掌握等腰三角形的周长和面积公式,并能解决实际问题。
4. 等腰三角形的轴对称性:等腰三角形具有轴对称性,对称轴是底边的中垂线。
二、说教学目标学习本课,学生需要达到以下教学目标:1. 知识与技能:掌握等腰三角形的定义、性质、判定方法,能运用等腰三角形的性质解决实际问题。
2. 过程与方法:通过几何画板、尺规作图等工具,培养学生的实际操作能力和空间想象能力。
3. 情感态度与价值观:激发学生对几何学的兴趣,提高学生的逻辑思维和推理能力。
三、说教学重难点1. 教学重点:等腰三角形的定义、性质、判定方法,以及等腰三角形的周长和面积计算。
2. 教学难点:等腰三角形的轴对称性及其在实际问题中的应用,运用等腰三角形的性质解决综合问题。
在教学中,要注意引导学生通过实际操作、观察、推理等过程,逐步突破这些难点。
四、说教法在教学等腰三角形这一部分时,我计划采用以下几种教学方法,旨在提高学生的学习兴趣,促进学生的主动参与和深入理解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书
NO.8
图 7 程序主界面图
(2)当用户输出字符‘1’时,程序执行功能 1,如图 8 所示。
图 8 功能 1 运行结果
课程设计说明书
(3)当用户输入字符‘2’,程序执行功能 2,结果如下图所示。
NO.9
图 9 功能 2 运行结果
(4)当用户输入字符‘3’,程序执行功能 3,结果如下图所示。
SHUCHU1: mov ah,01h int 21h cmp al,0dh jne zhu CALL CLRSCR
CALL CRLF CALL CRLF mov dh,14 CALL DY1 JMP ZHU
b 使用汇编软件 MASM.EXE 对源程序汇编。 c 使用连接软件 LINK.EXE 对目标文件进行连接。 d使用调试软件DEBUG.EXE对可执行程序进行调试。
2.2总体设计功能
本程序分为 5 个部分,运行程序,首先会显示主界面,用户可依据提示选择不同的编号,实 现不同的功能: 当用户通过键盘输入 1 时,程序执行显示数字对称三角形功能,在运行界面 显示输出的对称三角形。当用户通过键盘输入 2 时,程序执行将三角形边框用彩色显示功能。
否
增,display
图 1 主程序流程框图
课程设计说明书
2.3 详细设计功能 2.3.1 输出数字对称三角形功能
该子程序能够实现从键盘读取字符‘1’后输出数字等腰三角形。
开始
从键盘读取字符
是否为 1
N
Y 输出对应数字三角形 输出错误
结束
NO.3
图 2 输出数字对称三角形程序流程框图
2.3.2 数字对称三角形边框着色功能
课程设计说明书
NO.2
当用户通过键盘输入 3 时,在三角形下方用拼音显示自己的学号和姓名。当用户通过键盘输 入 4 时,退回到主界面。除此以外,输入其他键,提示错误。
开始
Main 函数
LOP1
Dh=1 CH=1,CH++ 显示空格
Cl 自减
LOP2
Cl=0?
是 否
Call space
cl=ch,cl!=0?
MOV AH,01h INT 21H ; mov ah,0h ; int 16h
CMP AL,31h
NO.13
课程设计说明书
JE SHUCHU1 CMP AL,32h JE SHUCHU2 CMP AL,33h JE SHUCHU3 CMP AL,34h JE over call clrscr mov ah,02h mov bh,0 mov dh,10 ;设置提示行号 mov dl,0 ;设置提示列号 int 10h MOV DX,OFFSET NUM1 mov ah,9 int 21h jmp zhu
该子程序能够实现从键盘读取字符不是‘1’‘2’‘3’‘4’后输出’Invalid input !’以提示 错误。
课程设计说明书
开始 从键盘读取字符
NO.6
是否 1~4 之间?
Y
执行对应程序
N
输 出 ’Invalid input !’
结束 图 6 提示错误程序流程框图
START 标志着程序开始执行;ZHU 模块的功能是从键盘读取数据并判断函数的下一步 执行情况,是最主要的模块之一;SHUCHU1,SHUCHU2,SHUCHU3,SHUCHU4 分别表 示按下数字键‘1’,‘2’,‘3’,‘4’,后程序跳到该段开始执行,属于主要的分支模块;DY1 实现了打印数据的功能,其中,LOP2F 实现打印左边数据,LOP2F0 实现对左边边沿数据的 着色 LOP2G 实现打印右边数据,LOP2G0 实现对右边边沿数据的着色;CRLF 可以实现数 据输出前对磁盘的初始化,OUTX 用于显示输出字符,SPACE 用于对数据输出时输出数据 地址的清空,DISPLAY 实现打印要输出的字符;CLRSLR 的功能是清标准屏子程序; WRITECC 为色彩字符输出子程序。在打印左边数据时,CL、AH 用于判断打印的数据是否 在左边边沿,CL、BH 用于判断打印的数据是否属于左边数据的最后一行;在打印右边数据 时,AH 用于判断打印数据是否属于右边数据的最后一行,BL 用于判断打印的数据是否在 右边边沿;AL 用于存放将要打印的数据;CH 用于判断打印是否该结束;DL 存放打印字符 的 ASCLL 码,DH 存放打印字符的颜色值。
ቤተ መጻሕፍቲ ባይዱ
开始
从键盘读取字符 N
是否为 ‘3’ Y 在三角形下方输出姓 名学号
输出错误
结束 图 4 姓名学号显示程序流程框图
课程设计说明书
2.3.4 退出功能
该子程序能够实现从键盘读取字符‘4’后退出运行的程序。
开始
从键盘读取字符
是否为 ‘4’
Y
退出程序
N 输出错误
NO.5
结束
图 5 退出程序流程框图
2.3.5 提示错误功能
另外,在每一个子功能的编写过程中,需要十分的注意到各个变量名的统一化,以便 于将其嵌入到主菜单中去,在编写标识符的名字的时候,尽量要做到看名字知其含义,使程 序的可读性进一步增高。
在编写代码转换程序的过程中,更是体会到了科学的严谨性,每一个小小的错误都不 容忽视,再细小的地方都需要注意,否则将会导致程序的错误。不管在做什么,都需要十分 的认真和谨慎,将每一步都做到最好。
2 设计方案论证 2.1 开发环境
软件环境:操作系统:Windows 8 64 位(DirectX 11)、 BIOS 系统 DOS 系统
硬件环境:处理器:英特尔 第三代酷睿 i3-3110M @ 2.40GHz 双核 内存:4GB(三星 DDR3 1333MHz) 主硬盘:希捷 ST500LM012 HN-M500MBB (500GB/5400 转/分) 显示器:三星 SEC3649(14 英寸)
MASM 开发环境:Masm 是汇编编译器,是微软公司开发的汇编开发环境,拥有可 视化的 开发界面,使开发人员不必再使用 DOS 环境进行汇编的开发的优点,支持伪指令和宏汇编, 最后编译生成 obj 文件,通过 link 工具连接成可执行文件 exe。 使用步骤为:a 使用编辑软件 TE.EXE 进行源程序的编写。
课程设计说明书
6. 附录
源代码:
DATA NUM num0
num1 DATA
SEGMENT DB 0AH,0DH,'F1459106 lizhihong',0ah,0dh,'$' DB 0AH, 0DH, '1shuchusanjiaoxing', 0AH, 0DH DB 0AH, 0DH, '2color' DB 0AH, 0DH, '3name and studentID' DB 0AH, 0DH, '4quit' db 'Invalid input !','$' ENDS
课程设计说明书
NO.1
显示数字对称等腰三角形
1 课程设计的目的
本次课程设计为了巩固和加深课堂所学知识,将课本上的理论知识和实际应用有机的结 合起来,培养我的分析和解决实际问题的能力。通过对汇编语言程序代码的阅读、修改、设 计,理解和掌握复杂的汇编语言应用程序的编程,提高实践编程能力。这个课程设计,能够 显示一个由从一到八的数字组成的左右对称的三角形,给等腰三角形加彩色边框,并且能在 三角形的下方显示自己的学号姓名。
图 10 功能 3 运行结果
(5)当用户输入字符‘4’,程序退出。
课程设计说明书
NO.10
(6)当用户输入除上述字符以外其他键,程序提示错误,结果如下图所示。
图 11 提示错误功能运行结果
课程设计说明书
NO.11
4.总结
在短暂几天的时间里,汇编语言课程设计结束了,我的收获很大。通过课程设计的编程和对 编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编 程能力,补全了我的不足。通过这次课程设计,我巩固了学过的知识,进一步掌握了各个指 令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用 DEBUG 指令, 进一步了解到了汇编语言的一些基本的指令,以及各个寄存器的功能及使用的方法。在整个 程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的 每一个细节,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉 了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程 序的水平。
是 Bh=ah or bh=cl ?
DL=AL,DL+’0’
LOP2F 是
LOP2R
退出程序 是
读取键盘输 入
Call writecc 打 印 DL cl=ch cl!=0?
bl=cl or ah=cl ? Call writecc 打印 DL
CH>8?
Al=cl,cl 自减 否
cl 自 减 ,bh 自
STAK STAK
SEGMENT STACK DW 100H DUP(?)
ENDS
CODE SEGMENT ASSUME CS:CODE,SS:STAK,DS:DATA
START: MOV AX,DATA MOV DS,AX
;========MAIN()===========
ZHU:
MOV DH,1 MOV CH,01H mov ah,02h mov bh,0 mov dh,11 ;设置提示行号 mov dl,6 ;设置提示列号 int 10h CALL CRLF MOV DX,offset NUM0 mov ah,9 int 21h ;显示提示
3.设计结果与分析
3.1 调试程序
启动 DEBUG:D>DEBUG EXAM1.EXE