当前位置:文档之家› 汇编语言课程设计绘制三角形图形程序

汇编语言课程设计绘制三角形图形程序

汇编语言课程设计绘制三角形图形程序
汇编语言课程设计绘制三角形图形程序

课程设计说明书

课程名称:汇编语言

班级:姓名:__ _

学号:__ __

设计题目:绘制三角形图形程序

设计时间:2010/6/21至2010/7/2

指导教师:李永飞

评语:_________________________________

_________________________________________

_________________________________________

_________________________________________

_________________________________________

评阅成绩:评阅教师:

一、课程设计目的

进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

二、课程设计要求

1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。

2.遵循模块化、结构化的程序设计方法。

3.要求程序必须正确。

4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。

5.要求程序结构合理,语句使用得当。

6.适当追求编程技巧和程序运行效率。

三、课程设计题目:

绘制三角形图形程序

四、课题分析

编写程序.使PC 机显示一个三角形。对于图形设计,要通过BIOS INT 10H 调用,用菜单选择三角形的输出。三角形可分割为3条直线,因此显示三角形就可分解为根据两点画直线的程序。

五、流程图:

Q

六、核心代码展示:

1、主函数

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKS

START:

MOV AX,DATA

设置三角形颜色 设置3顶点坐标

设置显示方式AL=12H 显示欢迎界面 用户输入

选项 程序结束 设置显示方式AL=02H Line 函数绘图

清屏

MOV DS,AX

MOV AX,0A000H

MOV ES,AX

MOV AX,0012H ;设置640*480*16图形模式

INT 10H

reset: ;02文字模式显示主界面

MOV AX,0002H ;根据用户输入调用相关功能

INT 10H

disp desk

mov ah,01h

int 21h

cmp al,'A'

jz zj

cmp al,'B'

jz dy

cmp al,'C'

jz zdy

cmp al,'Q'

jz goover

jmp reset

zj: ;输出直角三角形

CALL INPUTCOLOR

disp crlf

lea si,zhijiao

jmp next

dy: ;输出等腰三角形

CALL INPUTCOLOR

disp crlf

lea si,dengyao

jmp next

zdy: ;调用input函数自定义三角形CALL INPUTCOLOR

disp crlf

CALL input

lea si,point

jmp next

next: ;调用output函数输出指定的三角形MOV AX,0012H

INT 10H ;设置640*480*16图形模式

MOV AL,2

CALL SET_WRITE_MODE

MOV AX,BKCOLOR

CALL CLEAR

call output

MOV AH,1

INT 21H

JMP RESET

goover: ;程序结束

MOV AH,0 ;清屏

MOV AL,12H

INT 10H

RET

MAIN ENDP

2、Bresenham画线算法

PIXEL proc near

PUSH BP

PUSH BX

PUSH CX

PUSH DS

MOV BP,SP

MOV AX,80

MOV BX,WORD PTR[BP+12] ;BX<=Y

MUL BX ;(DX:AX)<=80*Y

MOV BX,AX

MOV AX,WORD PTR[BP+14] ;AX<--X

MOV CL,8 ;

DIV CL ;AL<=商(X/8),AH<=余数(X%8) MOV CL,AH ;CL<=AH

MOV AH,0 ;

ADD BX,AX ;BX(OFFSET)<=80*Y+X/8

MOV AL,80H ;

SHR AL,CL ;AL(MASK)<=(80H>>CL)

PUSH AX

MOV DX,3CEH

MOV AL,8

OUT DX,AL

MOV DX,3CFH

POP AX

OUT DX,AL

MOV AL,ES:[BX]

MOV AX,WORD PTR[BP+10] ;AX<=COLOR

MOV BYTE PTR ES:[BX],AL

POP DS

POP CX

POP BX

POP BP

RET 6

pixel endp

;------------------------------

;Bresenham画线算法

LINE proc near

PUSH BP

MOV BP,SP

SUB SP,16

MOV WORD PTR[BP-6],0 ;X=0

MOV WORD PTR[BP-8],0 ;Y=0

MOV WORD PTR[BP-14],1 ;INCX=1

MOV WORD PTR[BP-16],1 ;INCY=1

MOV AX,WORD PTR[BP+6] ;AX<=X2

SUB AX,WORD PTR[BP+10] ;AX<=X2-X1

JNC L1 ;IF X2>=X1,JMP L1

NEG AX ;IF X2

MOV WORD PTR[BP-14],-1 ;INCX<=-1

L1:

CMP AX,0 ;IF DELTA_X!=0,JMP L11

JNE L11

MOV WORD PTR[BP-14],0 ;INCX<=0

L11:

MOV WORD PTR[BP-10],AX ;DELTA_X<=AX

MOV AX,WORD PTR[BP+4] ;AX<=Y2

SUB AX,WORD PTR[BP+8] ;AX<=Y2-Y1

JNC L2 ;IF Y2>=Y1,JMP L2

NEG AX ;IF Y2

MOV WORD PTR[BP-16],-1 ;INCY<=-1 L2: ;

CMP AX,0 ;IF DELTA_Y!=0,JMP L22

JNE L22 ;

MOV WORD PTR[BP-16],0 ;INCY<=0

L22: MOV WORD PTR[BP-12],AX ;DELTA_Y<=AX

LP4: MOV AX,WORD PTR[BP-10] ;AX<=DELTA_X

CMP AX,WORD PTR[BP-12] ;

JG LP5 ;DELTA_X>DELTA_Y

MOV AX,WORD PTR[BP-12] ;

MOV WORD PTR[BP-4],AX ;DISTANCE<=DELTA_Y

JMP LP51 ;

LP5:

MOV AX,WORD PTR[BP-10] ;

MOV WORD PTR[BP-4],AX ;DISTANCE<=DELTA_X

LP51:

INC AX

MOV WORD PTR[BP-2],AX

LP6:

PUSH WORD PTR[BP+10]

PUSH WORD PTR[BP+8]

PUSH COLOR

CALL PIXEL

MOV AX,WORD PTR[BP-6] ;AX<=X

ADD AX,WORD PTR[BP-10] ;AX<=X+DELTA_X

MOV WORD PTR[BP-6],AX ;X=X+DELTA_X

MOV AX,WORD PTR[BP-8] ;AX<=Y

ADD AX,WORD PTR[BP-12] ;AX<=Y+DELTA_Y

MOV WORD PTR[BP-8],AX ;Y=Y+DELTA_Y

MOV AX,WORD PTR[BP-6] ;AX<=X

CMP AX,WORD PTR[BP-4]

JLE LP7 ;IF X<=DISTANCE,JMP LP7 MOV AX,WORD PTR[BP-6] ;X>DISTANCE

SUB AX,WORD PTR[BP-4] ;AX<=X-DISTANCE

MOV WORD PTR[BP-6],AX ;X=X-DISTANCE

MOV AX,WORD PTR[BP+10] ;AX<=X1

ADD AX,WORD PTR[BP-14] ;AX<=X1+INCX

MOV WORD PTR[BP+10],AX ;X1=X1+INCX

LP7:

MOV AX,WORD PTR[BP-8] ;AX<=Y

CMP AX,WORD PTR[BP-4]

JLE LP8 ;IF Y<=DISTANCE,JMP LP8 MOV AX,WORD PTR[BP-8] ;Y>DISTANCE

SUB AX,WORD PTR[BP-4] ;AX<=Y-DISTANCE

MOV WORD PTR[BP-8],AX ;Y=Y-DISTANCE

MOV AX,WORD PTR[BP+8] ;AX<=Y1

ADD AX,WORD PTR[BP-16] ;AX<=Y1+INCY

MOV WORD PTR[BP+8],AX ;Y1=Y1+INCY

LP8:

DEC WORD PTR[BP-2] ;IF T!=0,JMP LP6

JZ LP9

JMP LP6

LP9:

MOV SP,BP

POP BP

RET 8

line endp

3、自定义三角形顶点位置

INPUT PROC NEAR

lea si,point

DISP inputINFO_1 ;显示输入提示信息

xx1:disp x

CALL getchar ;调用getchar输入3位数

cmp dx,0 ;验证输入数字在要求的范围内

jl wx1

cmp dx,600

jg wx1

mov [si],dx ;验证通过,输入下一个数

mov [si+8],dx

jmp yy1

wx1:disp inputwrong ;验证失败,显示提示信息并重新输入jmp xx1

yy1:disp y

CALL getchar

cmp dx,0

jl wy1

cmp dx,400

jg wy1

mov [si+2],dx

mov [si+10],dx

DISP inputINFO_2

jmp xx2

wy1:disp inputwrong

jmp yy1

xx2:disp x

CALL getchar

cmp dx,0

jl wx2

cmp dx,600

jg wx2

mov [si+4],dx

mov [si+16],dx

jmp yy2

wx2:disp inputwrong

jmp xx2

yy2:disp y

CALL getchar

cmp dx,0

jl wy2

cmp dx,400

jg wy2

mov [si+6],dx

mov [si+18],dx

DISP inputINFO_3

jmp xx3

wy2:disp inputwrong

jmp yy2

xx3:disp x

CALL getchar

cmp dx,0

jl wx3

cmp dx,600

jg wx3

mov [si+12],dx

mov [si+20],dx

jmp yy3

wx3:disp inputwrong

jmp xx3

yy3:disp y

CALL getchar

cmp dx,0

jl wy3

cmp dx,400

jg wy3

mov [si+14],dx

mov [si+22],dx

ret

wy3:disp inputwrong

jmp yy3

INPUT ENDP

4、置堆栈并调用LINE画线

output proc near

mov cx,3

DDD: ;将指定三角形的三顶点坐标压栈PUSH CX ;压栈按照line函数要求的规则PUSH SI

MOV AX,[SI]

PUSH AX

MOV AX,[SI+2]

PUSH AX

MOV AX,[SI+4]

PUSH AX

MOV AX,[SI+6]

PUSH AX

CALL LINE ;调用Line函数画线

POP SI

ADD SI,8

POP CX

LOOP DDD

ret

output endp 七、结果显示

八、感想、收获及体会

本程序的核心在于Bresenham画线算法,有了画线算法后添加以输入输出,用户界面等模块既得到最终的程序。程序多次在图形模式和文本模式下切换,充分考虑到与用户的互动性,界面比较友好,功能简单实用。程序在windows xp

下测试通过。

程序首先在文本模式下显示欢迎界面,要求用户输入选项。程序可以根据用户选项直接输出直角三角形和等腰三角形,或者输出用户自定义三顶点的三角形,每次输出图形都可由用户自定义输出颜色。输出完成后按下任意键清屏,显示选项,用户可以继续输出三角形或者按下Q退出。

在BIOS调用方面本程序采用了多种写屏方式,力求每种功能实现采用相应的最简算法。

设计程序初考虑过使用Int 33h调用鼠标,是程序更加人性化,但是由于技术原因和设备显示难以实现,实在遗憾。

下面分析Bresenham画线算法。

对于直线方程Y=kX+b;

A:0

1:输入线段的两个端点Point1和Point2,并且存储到Point1(x1,y1)和Point2(x2,y2)中;

2:将Point1载入桢缓存,绘画第一个起始点;

3:计算常量△x、△y、2△y和2(△y-△x),并且获得一个决策参数的第一个值:P = 2△y-△x;

4:从n=0开始,在沿线经过每个Xn处,进行下面的检测:

如果Pn<0,下一个点绘制的是(Xn+1,yn),并且Pn+1=Pn+2△y

如果P0>=0,下一个点绘制的是(Xn+1,Yn+1),并且Pn+1=Pn+2(△y-△x) 5:重复执行△x-1次步骤4;

B,斜率k= 1或斜率k=0时候的算法

对于斜率等于0或者斜率等于1时候,不需要通过算法直接的对于其中单一坐标变量进行处理。

C:斜率k<0的情况算法

将起始点和中止点坐标Point1和Point2交换,可以转化到斜率为0和1之内的算法去实现

用汇编语言实现该算法的代码已经在上面贴出。

以下是两个子函数的堆栈结构。

通过这个程序,我更加熟练了利用堆栈处理问题的方法,深入了对计算机图形显示技术的认识,掌握了BIOS调用的方法,对于子程序、顺序结构、循环结构、宏定义等的应用更加融会贯通。通过这次课程设计培养了我设计完成中小型程序的能力,加深了对汇编语言的认识。

汇编语言课程设计

沈阳大学

2.3 MASM的介绍 MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发,历经二三十年的发展,目前MASM的版本已升至6.15,支持MMX Pentium、Pentium II、Pentium III及Pentium 4等指令系统。 2.4总体设计功能 本次课程设计的内容是采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示 程序,由$及*字符相间,从两侧向中间螺旋汇聚直至形成一个矩形,这就要求该霓虹灯能够动态地进行变化;霓虹灯模拟显示程序主要是进行程序循环调用,可以通过CMP、JMP、JZ、RET等命令进行跳转。由于是霓虹灯的模拟显示,因此在进行程序循环调用前需要进行数据段定义,以使子程序在进行调用时能够根据数据段的定义来执行,最后显示结果。 定时器中断处理程序:计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。 视频显示程序设计:一般由DOS 或BIOS调用来完成。有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。用INT 10H中断即可建立某种显示方式。用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令INT 21H来实现调用。 键盘扫描程序设计:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器,以及检测键盘状态,有无输入,并检测输入各值。 2.5详细功能设计 2.5.1主程序功能 主程序通过调用各个子程序来实现清屏,改变图形等功能,具体调用过程如图1所示。 沈阳大学

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

汇编语言课程设计安排

汇编语言课程设计安排 班级:计本1060110606 课程设计时间:15周 课程设计地点:2#机房 负责教师:程世旭、雷鸣、胡杰、林华、白凯 课设上机时间:上午:8:3011:30 下午:2:305:30 课程设计指导教师安排: 10501:程世旭10502:雷鸣10503:白凯 10504:雷鸣10505:胡杰10506:林华 时间周一周二周三周四周五周六上午10601/2/3 10601/2/3 10601/2/3 10604/5/6 10601/2/3 10601/2/3 验收下午10604/5/6 10604/5/6 10604/5/6 10604/5/6 验收

汇编语言课程设计任务书 课程设计题目:显示系统时间 一、课程设计设计目的 1. 掌握中断的使用方法 2. 掌握BIOS系统功能调用 3. 掌握基本的显存读写技术 4. 学会用汇编语言编写一个较完整的实用程序,培养自己的动手操作能力 5 .学习程序设计的基本思路和方法,编程、调试、撰写报告等 二、程序内容: 第一部分:定义显示界面。 第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入显存区。(显存的起始地址:B8000H) 第三部分:将存在系统内存区的时间用字符串的形式显示出来。 注意:1、如果用图形方式显示更好, 2、注意设置显示时候的背景颜色 3、可以增加键盘设置的功能,设置显示颜色,显示位置 三、程序设计原理 首先在数据段开辟一显示缓冲区,用来存储系统时间。调用BIOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区。通过写显存将时间显示出来。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。 四、程序流程图

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 软件工具:Turbo C , Debug, MASM 实验内容 《 将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。 实验步骤 1.要完成这个实验,首先我们需要编写三个子程序。第一个子程序是可以显示字符串到屏 幕的程序,其汇编代码如下: ;名称:show_str

;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串 ;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址 ;返回:显示在屏幕上 ¥ show_str: push ax push cx push dx push es push si push di mov ax,0b800h - mov es,ax mov al,160 mul dh add dl,dl mov dh,0 add ax,dx mov di,ax mov ah,cl . show_str_x: mov cl,ds:[si] mov ch,0 jcxz show_str_f mov al,cl mov es:[di],ax inc si inc di 【 inc di jmp show_str_x show_str_f: pop di pop si pop es pop dx pop cx } pop ax ret 2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出

微机原理与汇编语言课程设计报告

西北师范大学 计算机科学与工程学院 微机原理与汇编语言 课程设计报告 设计题目:中断控制点阵显示与音乐模块姓名: 学号: 专业班级: 系所中心: 指导老师: 起讫时间: 设计地点: 2016年8月20日

摘要 使用8086汇编语言,在唐都TD-PITE实验箱上进行硬件连线,在计算机上采用与该实验箱配套的软件进行输入,观察实验结果。设计思路是利用在实验箱上i386内集成的两片8259芯片分别进行中断,通过实验箱上的两个脉冲开关发送信号到总线上开放的两个中断口,送入CPU内部的8259中。此时按下脉冲开关kk1+,第一个中断发生,在16*16点阵上循环滚动显示“西北师大汇编设计李泓毅”,若按下kk2+则第二个中断发生,执行音乐模块子程序,利用8254芯片开始响应预先编排好的音乐。 【关键词】级联中断;8259芯片;16*16点阵;8254芯片;SPK音乐模块;脉冲信号

目录 摘要 (2) 第一章课程设计 (2) 1.1 目的和任务 (2) 1.2 设计环境、设备与器材 (2) 第二章设计内容和方案 (3) 2.1 设计内容 (3) 2.2 设计方案 (3) 第三章课程设计相关原理简述 (3) 第四章设计实现 (4) 4.1 系统设计框架结构 (4) 4.2 系统硬件设计 (4) 4.3 系统软件设计 (6) 4.4 程序流程图 (6) 4.5 核心数据结构 (8) 4.6 关键代码片段分析 (10) 第五章设计验证 (10) 5.1 验证步骤及结果 (10) 5.2 数据分析 (10) 5.3 遇到的问题及解决 (11) 5.4 需要讨论的其它问题 (11) 5.5 结论 (11) 第六章设计总结 (12) 第七章本课程教学建议 (13) 第八章参考文献 (13) 第九章附录:源代码 (13) 第一章课程设计 1.1 目的和任务 使用8259芯片进行中断程序设计,在第一个中断中响应字模显示模块,在第二个中断中响应音乐发声模块。

AutoCAD绘制三角形的内切圆

绘制三角形的内切圆 一、教学目标 1.掌握直线段的基本绘制方法。 2.掌握圆的绘制方法。 3.掌握对象捕捉的设置。 二、任务分析 每一张机械图样都是由简单的基本图形元素组成的,包括直线、圆、圆弧、矩形等,在AutoCAD 2007中掌握这些基本图形的画法是整个CAD绘图的基础。本任务将通过绘制如图2-1所示的“三角形内切圆”介绍在AutoCAD 2007中直线和圆的绘制方法以及精确捕捉绘图辅助工具的使用。 图2-1 三角形内切圆 三、实践操作 1.选择下拉菜单“文件”|“新建”命令,新建一个“无样板公制”(acadiso)文件。 2.绘制任意三角形 (1)单击“绘图”工具栏的按钮,启动直线命令绘制第一条直线,命令行的显示操作如下: 命令: _line 指定第一点: // 移动鼠标光标在绘图区适当位置单击鼠标左 键拾取一点,作为直线的起点指定下一点或[放弃(U)]: // 移动鼠标光标在绘图区适当位置单击鼠标 左键拾取一点,作为直线的终点指定下一点或[放弃(U)]: // 按下回车键。结束操作,绘制结果如图2-2所示。

图2-2 第一条直线 (2)设置对象捕捉 “对象捕捉”功能是专用于精确捕捉图形对象特征点的工具,具体设置步骤如下: 1)移动鼠标光标到“状态栏”的按钮上,单击鼠标右键,系统弹出如图2-3所示下拉菜单。 图2-3 设置菜单 2)单击“设置”选项,系统会弹出“草图设置”对话框,此时系统在“对象捕捉”状态下。 3)在对话框上分别单击特征点选项前面的小方格,使系统默认的对象特征点“中点”“圆心”“延伸”“最近点”处于未选中状态(方格为是选中状态)。设置结果如图2-4所示。

汇编课程设计

燕山大学 汇编语言课程设计说明书 题目:计算机钢琴程序 交通灯控制系统 学院(系):信息科学与工程学院 年级专业: 10级计算机科学2班 学号: 100104010113 学生姓名:马强 学号: 100104010116 学生姓名:夏洋 指导教师:何海涛、邹晓红 完成日期: 2013年7月3日

目录 1.课程设计的目的和意义........................................................................................................... - 2 - 1.1课程设计目的................................................................................................................ - 2 - 1.2课程设计的意义............................................................................................................ - 2 - 2.题目一:计算机钢琴程序....................................................................................................... - 2 - 2.1系统的主要功能............................................................................................................ - 2 - 2.2总体设计方案................................................................................................................ - 2 - 2.2.1扬声器驱动方式................................................................................................. - 2 - 2.2.2延时原理............................................................................................................. - 3 - 2.2.3键盘控制发声程序............................................................................................. - 4 - 2.2.4设计总结............................................................................................................. - 5 - 2.3作品使用说明................................................................................................................ - 6 - 3.题目二:交通灯控制系统....................................................................................................... - 6 - 3.1系统的主要功能............................................................................................................ - 6 - 3.2 系统工作原理............................................................................................................... - 6 - 3.2.1 8259的工作原理................................................................................................ - 6 - 3.2.2 8255A的工作原理:...................................................................................... - 7 - 3.2.3 8253的工作原理:............................................................................................ - 7 - 3.3总体设计方案................................................................................................................ - 7 - 3.3.1程序流程图......................................................................................................... - 8 - 3.3.2接口电路图....................................................................................................... - 11 - 3.4交通灯的设计总结...................................................................................................... - 11 - 4.课程设计心得体会................................................................................................................. - 12 - 5.参考文献................................................................................................................................. - 12 - 6.附录:程序代码..................................................................................................................... - 12 - 6.1计算机钢琴程序代码.................................................................................................. - 12 - 6.2交通灯控制系统代码.................................................................................................. - 14 -

汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告 ( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生姓名 班级 学 号 指导教师 完成日期

目录 目录 (2) 1概述 (1) 1.1 设计目的 (1) 1.2 设计内容 (1) 2系统需求分析 (1) 2.1 系统目标 (1) 2.2 主体功能 (1) 2.3 开发环境 (1) 3 系统概要设计 (2) 3.1 系统的功能模块划分 (2) 3.2 系统流程图 (3) 4系统详细设计 (3) 5测试 (4) 5.1 测试方案 (4) 5.2 测试结果 (4) 6小结 (5) 参考文献 (6) 附录 (7) 附录源程序清单 (7)

实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 1.2 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 2.2 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入2个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 2.3 开发环境 TASM5.0集成环境

汇编课程设计报告

汇编课程设计报告

学 号: 课程设计 题目打印水仙花数 学院计算机科学与技术 专业计算机科学与技术 班级 姓名 指导教师

武汉理工大学《汇编语言程序设计》课程设计 2012 年 6 月28 日 课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 打印水仙花数 初始条件: 理论:完成了《汇编语言程序设计》课程, 对微机系统结构和80系列指令系 统有了较深入的理解,已掌握了汇 编语言程序设计的基本方法和技 巧。 实践:完成了《汇编语言程序设计》的4 个实验,熟悉了汇编语言程序的设 计环境并掌握了汇编语言程序的 调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 进一步理解和掌握较复杂程序的设计方 法,掌握子程序结构的设计和友好用户界 3

2.1简要分析 2.1.1原理说明 可以用标签来接收三位数,标签的好处在于可以限制输入的位数,并且通过实际输入位数可以直接进行一部分的异常处理。 将数存到标签后,因为是以ASCII码的形式存的,所以需要进行转换,将其变成十六进制数,转换后将数字存到申请的内存字中。在转换成十六进制数的过程中,可以对输入的数进行异常处理,判断是否输入有误。 在输出水仙花数时,设置一个计数器,从100开始循环判断,直到等于用户输入的数为止,依次判断是否为水仙花数,决定是否输出该数。 在输出时,分别取出水仙花数的个、十、百位数,转换成ASCII码再输出。 系统提示是否继续后,程序对用户输入的信息进行判断,若为y或Y则系统回到初始状态,若为n或N则退出系统,若为其他则提示输入错误并重新输入。 2.1.2程序流程图

(新)汇编语言课程设计四则运算

计算机与信息工程学院《汇编语言》课程设计四则运算器的设计 专业:计算机科学与技术 班级:控制11-2班 姓名: 倪天天 学号:2011025745 指导教师:郝维来 2013年6月28日

摘要 计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块。当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。 关键词:计算器,汇编语言,四则运算,功能模块

Abstract Calculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic functions. Want to use assembly language to achieve a simple calculator, you must pass on the data storage, register usage, addition, subtraction, and related instructions such as assembly language module calls the use of knowledge in order to achieve a basic functional, user-friendly, easy to operate easy calculator. Using assembly language to achieve a simple calculator also involves the design of input and output modules, the judgment of arithmetic operations and exit the program to judge design. Through the rational use of various commands, design various functional modules. When implementing various program modules, through a call to the ultimate realization of the program a simple calculator. Keyword:Calculator, assembly language, four arithmetic, functional modules

三角形的内切圆(教学设计)

C B C B 4.7三角形的内切圆 【教师寄语】真正的聪明是能够忍辱负重。真正的智慧是懂得蓄势待发。真正的成功是最后掌声四起。真 正的阶梯是永远拼搏! 【学习目标】 1.理解三角形内切圆的概念,掌握三角形内切圆的性质,能准确辨析内心和外心的不同 2.掌握画三角形的内切圆的方法,能借助三角形内切圆的性质解决有关几何问题。 3.应用类比的数学思想方法研究内切圆,逐步培养学生的研究问题能力;通过获得成功的经验和克服困难的经历,增进学生数学学习的信心。 【学习过程】 一、情境创设 试一试: 一张三角形铁皮,如何在它上面截一个面积最大的圆形铁皮。 分析:①让学生展开讨论,教师指导学生发现,实际上是作一个圆,使它和已 知三角形铁皮的各边都相切. ②让学生展开充分的讨论,如何确定这个圆的圆心及半径? ③在此基础上,由学生形成作图题的完整过程。 二、探求新知 ⒈本课知识点: ⑴和三角形各边都相切的圆叫做 , 叫做三角形的内心,这个三角形叫做 . ⑵分别画出直角三角形和钝角三角形的内切圆. 小结:①一个三角形的内切圆是唯一的; ②内心与外心类比: 例1、如图,△ABC 中,内切圆I 和边BC 、CA 、AB 分别相 切于点D 、E 、F,∠B=60°,∠C=70°.求∠EDF 的度数。

C 三.再攀高峰 探究活动一 问题:如图,有一张三角形纸片,其中BC=6cm ,AC=8cm ,∠C =90°.今需在△ABC 中剪出一个半圆,使得此半圆直径在三角形一边上,并且与另两边都相切,请设计出所有可能方案,并通过计算说明如何设计使得此半圆面积最大,最大为多少? 探究活动二问题:如图1,有一张四边形ABCD 纸片,且AB=AD=6cm ,CB=CD=8cm ,∠B=90°. (1)要把该四边形裁剪成一个面积最大的圆形纸片,你能否用折叠的方法找出圆心,若能请你度量出圆的半径; (2)计算出最大的圆形纸片的半径(要求精确值). 四、达标测试 1.如图1,⊙O 内切于△ABC ,切点为D ,E ,F .已知∠B=50°,∠C=60°,?连结OE ,OF ,DE ,DF ,那么 ∠EDF 等于( ) A .40° B .55° C . 65° D . 70° 图1 图2 图3 2.如图2,⊙O 是△ABC 的内切圆,D ,E ,F 是切点,∠A=50°,∠C=60°则∠DOE=( ) A .70° B .110° C .120° D .130° 3.如图3,△ABC 中,∠A=45°,I 是内心,则∠BIC=( ) A .112.5° B .112° C .125° D .55° 4.下列命题正确的是( ) A .三角形的内心到三角形三个顶点的距离相等 B .三角形的内心不一定在三角形的内部

汇编语言课程设计报告

课程设计报告 课程名称课题名称 汇编语言程序设计 1.显示彩色菱形 2.显示系统当前时间 专业 班级 学号 姓名 指导教师 年月日

课程设计任务书 课程名称汇编语言程序设计 课题 1.显示彩色菱形 2.显示系统当前时间专业班级 学生姓名 学号 指导老师 审批 任务书下达日期年月日 任务完成日期年月日

一、设计内容与设计要求 1.设计内容:通过本周的课程设计,学生能够巩固所学的基础知识,并能 够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计的方法和过程,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。 (1)、编制一计算比赛成绩的程序,要求完成以下功能: a、9 名评委,每个评委给分范围为 0~100(整数); b、9名评委给分中,去掉一个最高分和一个最低分,剩余7 名评委的平均分即为参赛者的得分(精确到小数点二位); c、将得分在光标位置处显示出来。 (2) 、编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30 字的 grade 数组中,各数据的格式为: 学号,成绩 1,成绩 2,?,成绩 5 然后根据 grade 中的学生成绩,把学生名次填入rank 数据组中,并显示出来,格式为:学号,名次 (3)、利用 INT 1CH(大约每秒中断 18.2 次)编写一个中断驻留程序,要求在屏幕的右 上角显示计算机中当前系统时间,显示格式为 时:分: 秒:1/100 秒 (4)、输入一个菱形的两条对角线长,在屏幕上用‘ * ’号画出一个彩色的菱形。 (5)、设置图形方式并显示彩条,要求: 选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次, 一直到整个屏幕都显示出彩条 2.设计要求: 掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一 些实际的问题,为将来编写软件积累一些典型的案例处理经验。 (1)、设计正确,方案合理。 (2)、界面友好,使用方便。 (3)、程序精炼,结构清晰。 (4)、设计报告 5000 字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。 (5)、上机演示。 (6)、按学号顺序选课题号,并在规定的时间内独自完成相关课题的汇编源程序编

汇编语言课程设计报告

农林大学金山学院 课程设计报告 课程名称:汇编语言课程设计 课程设计题目:动画设计“我爱大自然”姓名: 系:信息与机电工程系 专业:电子信息工程 年级:2008级 学号:082230066 指导教师:\ 职称:助教 2009~2010学年第二学期

目录 1 课程设计的目的 (2) 2 课程设计的要求 (2) 3课程设计报告容 (2) 3.1设计思路 (2) 3.2程序流程图 (2) 3.3设计源程序 (5) 3.4动画示意图 (19) 4 总结 (20) 5参考文献 (20) 6评分标准 (21)

动画设计“我爱大自然” 一、课程设计的目的 《汇编语言课程设计》是电子信息工程专业集中实践性环节之一,是学习完《汇编语言》课程后进行的一次全面的综合练习。其目的是: 培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。为将来从事专业工作打下基础,培养良好的职业道德和严谨的工作作风。 二、课程设计的要求 1)具备初步的独立分析和解决问题的能力; 2)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能; 3)提高综合运用所学的理论知识和方法的能力; 4)训练用系统的观点和软件开发一般规进行软件开发,培养科学的工作方法和作风; 5)设计的题目要求达到一定工作量,并具有一定的深度和难度; 6)编写出课程设计说明书。 三、课程设计报告容 (一)设计思路 “我爱大自然”这个程序中包含了比较多的景物,既有静态的也有动态的,其中还有一段音乐。为了节省存储空间,提高程序设计的效率和质量,使程序简洁、清晰,便于阅读,同时也为了便于修改和扩充,采用子程序设计技术和宏定义,根据程序要实现的若干主要功能及个功能块要调用的公共部分,将程序划分为若干个相对独立的模块,为每个模块编制独立的程序段,最后将这些子程序根据调用关系连成一个整体。 这样,整个程序就被分为几个子程序的有机统一。根据BIOS中断调用原理,设置80×25彩色文本显示方式,分别编写一个子程序显示“I LOVE NATURE,LET US GO AIRING”和一个子程序在屏幕上“画”树。这两个子程序所体现出来的事物都是的。为了实现小鸟

汇编语言课程设计-学生成绩管理系统

1、课程设计的目的、任务 《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。 2、软件需求分析和设计 2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块: (1).插入一个数据(插入学生学号以及语数外三个成绩)。 (2)修改一个数据。 (3)删除学生成绩数据。 (4)查找学生成绩。 (5)查看学生成绩的排名 (6)查看学生成绩分布 (7)按esc键退出系统 2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。因此,系统应该提供以下功能: (1)输出显示菜单。 (2)输入学生的成绩 (3)修改学生成绩 (4)删除学生成绩 (5)查询学生成绩 (6)显示学生成绩排名 (7)显示成绩分布统计 (8)按esc键退出系统

2.3依据程序的功能需求,该系统的功能结构图如下 系统功能结构图 2.4 程序流程图:

主程序流程图查找学生成绩

插入学生学号及成绩修改学生的成绩 显示各个学科各分数段的人数 3、程序实现说明

3.1学生管理系统中各子程序如下: (1).输入全部学生学号以及语文,英语,数学三科的成绩。 子程序名:insert 子程序描述:该子程序为输入字程序。系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。 代码: insert proc near ;定义进程子程序:插入学生,学号及 成绩 call input ;调用input add n,1 ret insert endp (2).修改输入的成绩。 子程序名:modify 子程序描述:通过子程序修改学生的成绩 代码: modify proc near ;定义进程子程序:修改学生学号,成绩 md1:output mess1 ;输出mess1 shuru ;调用宏shuru:二位数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si] ;先查找输入的学生是否存在 je qq1_1 ;查到的话,就跳转到qq1_1输入修改的值, 也就是重新输入。;结果相等则跳转到qq1_1 add si,1

汇编语言课程设计题2012

《汇编语言与微机原理》课程设计题目(2012) 题目一定时/计数技术应用程序设计 设计一个数字钟,在屏幕上显示分:秒(mm:ss)。按下非空格键开始计时,并显示 00:00,每过1 秒,ss 增1,到60 秒mm 增1,到60 分就是1 小时。经过1 小时后又回到00:00 重新计数。当按下空格键时,程序返回DOS,数字钟消失。 题目二信息检索程序设计 完成一个信息检索系统。在数据区,有9 个不同的信息,编号0-8,每个信息包括40 个 字符。从键盘接收0-8 之间的一个编号,然后再屏幕上显示出相应编号的信息内容,按“q” 键退出。 题目三图形变换程序设计 完成一个图形变换的程序,系统具有4 种可选择的功能,按字母“Y”画一个用点组成的 圆;按字母“S”画一个用不同颜色填充的三角形;按字母“Z”画一个用不同颜色填充的 矩形;按“q”键退出。 题目四代码转换程序设计 完成一个字母或数制之间的转化程序,主程序分别具有 5 种可选择的子功能,按相应的字符 可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。 5 种可选择的子功能分别为: 1)实现小写字母向大写字母的转换 2)实现大写字母向小写字母的转换 3)实现二进制数向十六进制数的转换 4)实现十六进制数向二进制数的转换 5)实现十六进制数向十进制数的转换 题目五中断处理程序设计 编写一个中断处理程序,要求在主程序运行过程中,每隔20 秒响铃一次,同时在屏幕上 显示信息”The bell is ring!”,按键后恢复原状。 题目六指法练习程序 1.从屏幕上方以一定的时间间隔随机落下可显示字符,字符的出现位置亦是随机的; 2.在多个字符(可以简化为仅有一个字符)下落的过程中可输入任意键,若键入与其中的 任意一个字符相匹配的键,则该字符高亮显示并发出蜂鸣声,同时计分; 3.按ESC 键结束练习并显示命中率; 4.再次按ESC 键退出。 题目七密码设置模拟 编写程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码用*显示。 题目八计算器

汇编语言程序课程设计_图文.

汇编课程设计与学习总结 二O 一六年六月 课程设计任务安排: Power idea公司从1975年成立一直到1995年的基本情况如下表所示,该数据已在程序中定义好(见图1-1: 表1-1:公司基本情况

图1-1:程序中数据定义 计算data数据段中每一年的人均收入,并将所有数据按照如图1-2所示的格式在屏幕上显示出来。

图1-2:效果图

汇编程序语言学习总结

(这部分要求:根据这学期学习的课程以及大学期间学习的几种编程语言、单片机以及ARM,通过分析比较对汇编语言进行总结,描述清楚该语言的作用,特点,与其他语言的区别以及将来的主要作用范围。内容可以结合文字,图表,不少于两页。 (格式要求:宋体,小四,行间距为20磅。图表的标题为宋体五号 在上学期我们专业开设了单片机课程,在学习单片机的过程中,我们就接触到了汇编语言,但那时候没有系统的学习,只知道像mov、jump、inc这样一些常用的简单指令。而在最后单片机的课程设计中,我们采用的是c语言来编程。那时候认为汇编语言并没有什么大的作用,汇编语言能做的,c语言也都能做,而且更为简单。但真正接触这门课后,才发现汇编语言有它自己独特的作用,而且也不是很容易就可以弄懂的。相比较其他高级语言如C++、java等,电脑等于在迁就人的思维方式。但学汇编,人却必须要去迁就电脑的思维方式。要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。通过这一学期的学习,我对汇编只是有了初步的掌握。现在我来通过比较汇编语言和几种高级语言的区别来对汇编语言作一个小小的总结。 在我们学过的高级语言,Java和C++都是面向对象语言,它们都能够实现面向对象思想(封装、继承、多态。 C++是在C语言基础上进行扩展而来的一门面向对象的程序设计语言。相比其他语言,它具有很多优点和特点的,它对面向对象的支持,让我们可以将一个功能模块封装成一个类,对于使用这个功能模块的人,只需调用这个类的方法就可以了,不必关心功能如何实现的,这一点可以在开发大型项目的时候提高开发效率,减少开发周期。同时,可以通过对类进行派生来扩展模块的功能,而不影响原有的功能。C++的异常处理机制可以很好地对代码的异常进行捕捉,保证了在程序运行时出现错误不至于整个崩溃掉,也为我们对于运行时错误的处理提供了一种有效的途径。C++程序的依赖性小,对C++代码进行静态连接,就能保证生成的可执行程序在别的电脑上直接运行。

汇编语言实验报告

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个节内容

说明: 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ① D SEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容 -D 200 ;显示DS段, 0200H开始的128个字节内容

相关主题
相关文档 最新文档