汇编课程设计排序

汇编课程设计排序
汇编课程设计排序

汇编语言实验报告

学院名称:计算机科学与技术学院题目:汇编语言实现数组排序

专业班级:信息安全111

姓名:王丹

学号:1108060090

指导老师:王晓鹏

一、课程设计的性质和目的:

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

二、课程设计的要求:

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

2、要求程序必须正确。

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

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

5、适当追求编程技巧和程序运行效率。

三、主要仪器设备及软件:

PC机、MASM汇编软件。

四、课程设计题目及要求:

题目:汇编数组排序(选用冒泡排序算法)

五、课题分析及设计思路:

冒泡排序:

依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2

个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两

个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

冒泡排序可分为正向和逆向两种排序.通过主程序对子程序的调用来

完成输入输出,排序,循环,转化等功能。

六、程序主要流程图:

冒泡排序法实现整数排序

一、实验目的

掌握用汇编语言实现排序,选用冒泡排序算法。

二、实验内容

输入20个以内的不超过0-99的整数,进行排序后输出结果。

三、源程序

DATA SEGMENT

NOTE1 DB 0DH,0AH,'==================================================================',0D H,0AH

DB 'Please input 20 (or less) numbers (0~99):',0DH,0AH,'$'

NOTE2 DB 0DH,0AH,'==================================================================',0D H,0AH

DB 0DH,0AH,'The inputed numbers: ','$'

NOTE3 DB 0DH,0AH,'==================================================================',0D H,0AH

DB 0DH,0AH,'How many decimal integers? $'

NOTE4 DB 0DH,0AH,'The sorted result: ',0DH,0AH,'$'

ERR_STR DB 0DH,0AH,'******************************************************************',0DH,0AH

DB 'Input error!',0DH,0AH

CON_STR DB 0DH,0AH,'******************************************************************',0DH,0AH

DB 0DH,0AH,'Continue? Y or N?','$'

DEC_STR DB 200 ;用来存放输入的原始数据

DB ?

DB 150 DUP('$')

TOTAL DB 3 DUP('$') ;用来记录输入的数字个数

DEC_NUM DW 30 DUP(?) ;用来存放将输入的ASCII 码转换成2进制数以便比较的结果

OUT_STR DB 150 DUP('$') ;存放待输出的字符组信

DATA ENDS

STACK SEGMENT STACK

STT DB 100 DUP(?) ;堆栈STACK ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DA TA,SS:STACK

START: MOV AX,STACK

MOV SS,AX

MOV AX,DA TA

MOV DS,AX

;---------------------------------- 输出提示信息

DISP0: LEA DX,NOTE1

MOV AH,09H

INT 21H

LEA DX,DEC_STR ;将原始数据存入该空间

MOV AH,0AH

INT 21H

MOV AL,BYTE PTR[DEC_STR+2] ;输入合法性的标志:开头是数字或者符号

CMP AL,'0'

JAE CMP1

CMP AL,'+'

JE DISP2

CMP AL,'-'

JE DISP2

JMP DISP1

CMP1: CMP AL,'9'

JBE DISP2

DISP1: LEA DX,ERR_STR

MOV AH,09H

INT 21H

CON_YN: MOV AH,01H ;程序结束处询问是否需要继续

INT 21H

CMP AL,'Y'

JE DISP0

CMP AL,'y'

JE DISP0

CMP AL,'N'

JE OVER0

CMP AL,'n'

JE OVER0

OVER0: JMP OVER ;用以结束程序

DISP2: LEA DX,NOTE2 ;将输入的数据输出以便用户对照其正确性

MOV AH,09H

INT 21H

LEA DX,[DEC_STR+2]

MOV AH,09H

INT 21H

;==================================COUNT HOW MANY DECIMAL INTEGERS LEA SI,DEC_STR

MOV CL,BYTE PTR[SI+1] ;CL中存放输入的总字符数

MOV CH,0

PUSH CX

MOV AL,0 ;AL用来计数数字个数

LP1: MOV DL,BYTE PTR[SI+2] ;如果输入数字,符号则继续读下一位,如果输入其他字符则AL加一,这也是开头第一个字母不能为其他字符的原因

CMP DL,'+'

JE MOV_PTR

CMP DL,'-'

JE MOV_PTR

CMP DL,'0'

JL mov_inc

CMP DL,'9'

Jle mov_ptr

MOV_INC:INC AL

MOV_PTR:INC SI

LOOP LP1

INC AL

CBW ;将AL拓展到AX中

MOV DEC_NUM,AX ;将2进制形式的计数结果放入该单元

MOV CL,10 ;除以10后,AL中放的是十位数,AH中放的是个位数

DIV CL

ADD AX,3030H ;加3030H后将十位数和个位数分别转换成ASCII码

LEA DI,TOTAL

MOV BYTE PTR[DI],AL

MOV BYTE PTR[DI+1],AH

MOV BYTE PTR[DI+2],'$' ;将ASCII形式的计数结果放入单元以便输出

LEA DX,NOTE3 ;输出计数结果

MOV AH,9

INT 21h

LEA DX,TOTAL ;小小的处理使得第一位是0时自动缺省

CMP0: MOV BX,DX

CMP BYTE PTR [BX],'0'

JNE DISPLAY

INC DX

DISPLAY:MOV AH,9

INT 21H

;==================================ASCII to DECIMAL

LEA DX,[dec_str+2] ;从DX指向的单元读入

MOV cx,DEC_NUM

LEA BX,DEC_NUM ;写进BX指向的单元

ADD BX,2

T1: CALL ASC2DEC ;调用ASCII码转换MOV [BX],AX ;将处理后的数放入储存单元

ADD BX,2

ADD DX,SI ;DX指向新位置

LOOP T1

;==================================Sort binary gigits

CALL COMP ;冒泡排序,算法很经典,就不过多标注了

;==================================NOTE4 ;输出结果提示LEA DX,NOTE4

MOV AH,09H

INT 21H

;==================================DECIMAL TO ASCII ;将排序后的2进制数用ASCII码表示并打印出来

LEA BX,DEC_NUM

mov cx,DEC_NUM

ADD BX,2

D2A: MOV AX,[BX] ;读出二进制数放在AX中

CALL DEC2ASC ;调用转化和打印过程

MOV DL,' ' ;输出空格

MOV AH,2

INT 21H

ADD BX,2 ;后移

LOOP D2A

LEA DX,CON_STR

MOV AH,09H

INT 21H ;询问是否继续

JMP CON_YN

OVER: MOV AH,4CH

INT 21H

MAIN ENDP

;-----------------------------------ASCII TO DECIMAL NUMBER

ASC2DEC PROC NEAR

PUSH BX ;入栈保护

PUSH CX

PUSH DX

MOV AX,0 ;AX初始为0,采用乘10相加的方式转换

MOV SI,DX

PUSH SI

MOV DL,[SI]

CMP DL,'-' ;如果读入的是负数则置CL为1最后处理

JNE L0

MOV CL,1

INC SI

MOV DL,[SI]

JMP L4

L0: CMP Dl,'+'

JNE L1

INC SI

MOV DL,[SI]

L1: MOV CL,0 ;正数置CL为0

L4: AND DL,0FH

MOV DH,0

ADD AX,DX

INC SI

MOV DL,[SI]

CMP DL,'0'

JL L2

CMP DL,'9'

JG L2

CALL TIMBY10 ;调用乘10进程

JMP L4

L2: CMP CL,1 ;如果是负数,对其求反JNE L3

NEG AX

L3: POP DI ;DI出栈

SUB SI,DI ;SI减去初始位置,计算相对位移量INC SI

POP DX

POP CX

POP BX

RET

ASC2DEC ENDP

;==================================AX TIME BY 10

TIMBY10 PROC NEAR

MOV BX,AX

SHL AX,1 ;乘2

SHL AX,1 ;再乘2

ADD AX,BX ;加一倍,现在相当于乘了5

SHL AX,1 ;乘2,总共是乘了10

RET

TIMBY10 ENDP

;==================================SORT DECIMAL NUMBERS

COMP PROC NEAR ;保护

PUSH AX

PUSH BX

PUSH CX

PUSH DI

MOV AX,DA TA

MOV DS,AX

LEA DI,DEC_NUM

MOV CX,word ptr[DI] ;计数

DEC CX

C1: MOV DX,CX

MOV BH,0

C2: ADD DI,2

MOV AX,[DI]

CMP AX,[DI+2]

JLE CONT1

XCHG AX,[DI+2]

MOV [DI],AX

MOV BH,1

CONT1: LOOP C2

CMP BH,0

JE STOP

MOV CX,DX

LEA DI,DEC_NUM

LOOP C1

STOP: LEA BX,DEC_NUM

MOV AX,[BX+8]

POP DI

POP CX

POP BX

POP AX

RET

COMP ENDP

;==================================DECIMAL NUMBER TO ASCII DEC2ASC PROC

PUSH BX ;保护

PUSH CX

LEA DI,OUT_STR ;将处理后的放入DI

MOV DX,DI

CMP AX,0

JNE NON_0

ZERO: MOV BYTE PTR[DI],'0' ;如果是0

MOV BYTE PTR[DI+1],'$'

JMP OUT_ASC

NON_0: TEST AX,8000H ;不是0

JZ PTIVE ;判断符号,是正号跳转NTIVE: NEG AX ;取反

MOV BYTE PTR[DI],'-' ;置负号

JMP CON

PTIVE: MOV BYTE PTR[DI],'+' ;置正号

CON: INC DI

MOV DX,0

MOV CX,10000 ;万位

IDIV CX ;带符号数除法

ADD AL,30H

MOV byte ptr[DI],AL

MOV AX,DX

MOV DX,0

MOV CX,1000 ;千位

IDIV CX

ADD AL,30H ;加30H变成ASCII

MOV byte ptr[DI+1],AL ;写入

MOV AX,DX

MOV CL,100 ;百位

IDIV CL

ADD AL,30H

MOV byte ptr[DI+2],AL

MOV AL,AH

MOV AH,0

MOV CL,10 ;十位

IDIV CL

ADD AL,30H

MOV BYTE PTR[DI+3],AL

ADD AH,30H

MOV BYTE PTR[DI+4],AH ;个位

OUT_SIG:LEA DI,OUT_STR

MOV DL,BYTE PTR[DI]

MOV AH,2

INT 21H

INC DI

MOV DX,DI

B2: CMP BYTE PTR[DI],'0'

JNE OUT_ASC

INC DI

INC DX

JMP B2

OUT_ASC:MOV AH,09H ;打印

INT 21H

POP CX

POP BX

RET

DEC2ASC ENDP

;==================================

CODE ENDS

END START

四、运行结果

1.输入14个数,13 65 78 32 47 63 76 87 36 49 57 92 28 20

输出结果为13 20 28 32 36 47 49 57 63 65 76 78 87 92 2.、当输入不合法时,程序会自动跳到初始位置,并给出了出

错提醒,要求重新输入数据:

五、实验总结

通过此次实验,让我对汇编语言编程有了个更清楚的认识,不再是停留在书本上的概念里面,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在汇编语言认识上还不足,通过学习也有所改进;还有对汇编语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。汇编语言比高级语言更加底层,要求用户能够了解每一个细节性的东西。汇编程序采用指令助记符来完成一个又一个操作,程序十分简短,但功能却很强大。

这次的冒泡排序程序设计中,我不仅复习了冒泡算法,还复习了汇编程序中子程序的使用。就设计结构而言,本次课设还是采用功能分解、逐步求精的思想,一步步的实现要求的功能,并在一些已有的程序上作进一步的改进,来达到要求实现的的功能。就这两点而言,这和高级语言C++很像,实现起来的过程也十分相似。

实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

数据结构课程设计-排序

一、问题描述 1、排序问题描述 排序是计算机程序设计的一种重要操作,他的功能是将一组任意顺序数据元素(记录),根据某一个(或几个)关键字按一定的顺序重新排列成为有序的序列。简单地说,就是将一组“无序”的记录序列调整为“有序”的记录序列的一种操作。 本次课程设计主要涉及几种常用的排序方法,分析了排序的实质,排序的应用,排序的分类,同时进行各排序方法的效率比较,包括比较次数和交换次数。我们利用java语言来实现本排序综合系统,该系统包含了:插入排序、交换排序、选择排序、归并排序。其中包括: (1)插入排序的有关算法:不带监视哨的直接插入排序的实现; (2)交换排序有关算法:冒泡排序、快速排序的实现; (3)选择排序的有关算法:直接选择排序、堆排序的实现; (4)归并排序的有关算法:2-路归并排序的实现。 2、界面设计模块问题描述 设计一个菜单式界面,让用户可以选择要解决的问题,同时可以退出程序。界面要求简洁明了,大方得体,便于用户的使用,同时,对于用户的错误选择可以进行有效的处理。 二、问题分析 本人设计的是交换排序,它的基本思想是两两比较带排序记录的关键字,若两个记录的次序相反则交换这两个记录,直到没有反序的记录为止。应用交换排序基本思想的主要排序方法有冒泡排序和快速排序。 冒泡排序的基本思想是:将待排序的数组看作从上到下排列,把关键字值较小的记录看作“较轻的”,关键字值较大的纪录看作“较重的”,较小关键字值的记录好像水中的气泡一样,向上浮;较大关键字值的纪录如水中的石块向下沉,当所有的气泡都浮到了相应的位置,并且所有的石块都沉到了水中,排序就结束了。 冒泡排序的步骤: 1)置初值i=1; 2)在无序序列{r[0],r[1],…,r[n-i]}中,从头至尾依次比较相邻的两个记录r[j] 与r[j+1](0<=j<=n-i-1),若r[j].key>r[j+1].key,则交换位置; 3)i=i+1; 4)重复步骤2)和3),直到步骤2)中未发生记录交换或i=n-1为止; 要实现上述步骤,需要引入一个布尔变量flag,用来标记相邻记录是否发生交换。 快速排序的基本思想是:通过一趟排序将要排序的记录分割成独立的两个部分,其中一部分的所有记录的关键字值都比另外一部分的所有记录关键字值小,然后再按此方法对这两部分记录分别进行快速排序,整个排序过程可以递归进行,以此达到整个记录序列变成有序。 快速排序步骤: 1)设置两个变量i、j,初值分别为low和high,分别表示待排序序列的起始下

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

微机接口课程设计报告 (题目:模拟自动门) 指导老师郭兰英 班级2015240204

目录 一概述 (1) 1.1 课程设计名称 (1) 1.2 课程设计要求 (1) 1.3 课程设计目的 (1) 二设计思想 (1) 三实施方案 (2) 3.1 获得传感器和“门”的状态 (2) 3.2 驱动步进电机和点阵模块 (2) 3.3 实现硬件延时 (3) 四硬件原理 (3) 4.1 中断控制器8259 (4) 4.2并行接口8255 (4) 4.3 定时/计数器8254 (5) 4.4 点阵LED显示屏 (5) 4.5 步进电机 (6) 4.6 红外距离传感器 (7) 五软件流程 (8) 六程序运行结果及分析 (11) 6.1 开门状态 (11) 6.2 关门状态 (12) 6.3 关门操作进行时中断到开门操作 (14)

6.4特殊状态 (15) 七个人感想 (16) 八附录 (18)

一、概述 1.1课程设计名称 模拟自动门 1.2课程设计要求 1)用汇编语言编程完成硬件接口功能设计。 2)硬件电路基于80x86微机接口。 3)程序功能包含:步进电机转动、点阵显示开关门、传感器检测是否有人、8254延时。 4)传感器检测有人时开门,门全开后延时几秒关门,若关门时检测到有人,立刻开门。 1.3课程设计目的 通过本课程设计,让学生对微机系统有一个较面的理解,对典型数字接口电路的应用技术有一个较深入的掌握,并对应用系统进行硬件原理和软件编程进行分析、设计和调试,达到基本掌握简单微型计算机应用系统软硬件的设计方法,提高项目开发能力的目的。要求同学分组完成课题,写出课程设计说明书,画出电路原理图,说明工作原理,编写设计程序及程序流程图。 二、设计思想 本程序主要功能是模拟商场等公共场所的自动门,实现有物体靠近并被传感器检测到时发生一系列变化的效果,模拟实现开门关门的功能。 为了尽量模拟真实场景下的自动门状态变化,本程序主要可以实现以下功能: 1、当传感器可检测范围内检测到物体,并且“门”为“关”的状态,立即“打开门”,即用一系列的硬件动作模拟自动门打开的动作和状态。 2、当“门”完全打开后一段时间后,传感器范围内检测不到物体时,立即“关闭门”, 用一系列的硬件动作模拟自动门关闭的动作和状态。

数据结构课程设计

1.一元稀疏多项式计算器 [问题描述] 设计一个一元稀疏多项式简单计算器。 [基本要求] 输入并建立多项式; 输出多项式,输出形式为整数序列:n, c1, e1, c2, e2,……, cn, en ,其中n是多项式的项数,ci, ei分别是第i项的系数和指数,序列按指数降序排序; 多项式a和b相加,建立多项式a+b; 多项式a和b相减,建立多项式a-b; [测试数据] (2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9-x+12x-3) (1+x+x2+x3+x4+x5)+(-x3-x4)=(x5+x2+x+1) (x+x3)+(-x-x3)=0 (x+x2+x3)+0=(x3+x2+x) [实现提示] 用带头结点的单链表存储多项式,多项式的项数存放在头结点中。 2.背包问题的求解 [问题描述] 假设有一个能装入总体积为T的背包和n件体积分别为w1, w2, …,wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+…+wn=T,要求找出所有满足上述条件的解。例如:当T=10,各件物品的体积为{1,8,4,3,5,2}时,可找到下列4组解:(1,4,3,2)、(1,4,5)、(8,2)、(3,5,2) [实现提示] 可利用回溯法的设计思想来解决背包问题。首先,将物品排成一列,然后顺序选取物品转入背包,假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品,若该件物品“太大”不能装入,则弃之而继续选取下一件,直至背包装满为止。但如果在剩余的物品中找不到合适的物品以填满背包,则说明“刚刚”装入背包的那件物品“不合适”,应将它取出“弃之一边”,继续再从“它之后”的物品中选取,如此重复,直至求得满足条件的解,或者无解。 由于回溯求解的规则是“后进先出”因此自然要用到栈。 3.完全二叉树判断 用一个二叉链表存储的二叉树,判断其是否是完全二叉树。 4.最小生成树求解(1人) 任意创建一个图,利用克鲁斯卡尔算法,求出该图的最小生成树。 5.最小生成树求解(1人) 任意创建一个图,利用普里姆算法,求出该图的最小生成树。 6.树状显示二叉树 编写函数displaytree(二叉树的根指针,数据值宽度,屏幕的宽度)输出树的直观示意图。输出的二叉树是垂直打印的,同层的节点在同一行上。 [问题描述] 假设数据宽度datawidth=2,而屏幕宽度screenwidth为64=26,假设节点的输出位置用 (层号,须打印的空格数)来界定。 第0层:根在(0,32)处输出;

汇编课程设计

方式,这个设置可以用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中,

综合课程设计

可用C++(Visual C++ 6.0),JA V A(JSP,STRUTS),C#(https://www.360docs.net/doc/8f10417131.html, ,Visual Studio 2005),试题目而定。 1、综合购物频道(限最多3人选) 项目描述:是一个在线销售系统,是一个B-C模式的电子商务系统,由前台的B/S模式购物系统和后台的C/S模式的管理系统两部分组成。该电子商务系统可以实现会员注册、浏览商品、查看商品详细信息、选购商品、取消订单和查看订单等功能,前台系统的详细功能。目的:了解项目开发的一个基本流程以及如何运用现行的框架搭建一个大型的综合型系统2、某大型企业内部OA(限最多3人选) 项目描述:采用网络办公自动化系统,不仅能快速提高企业的运作效率,节省大量的办公费用,能全面提升企业的核心竞争力和生产力以及提高工作效率。该企业内部OA系统采用模型组件与WEB技术结合的方式,具有强大的功能,广泛的适用性、可靠安全性和可扩展性。目的:学习运用当前热门的前台技术。 3、产品展示厅(限最多3人选) 项目描述: 在互联网发达的今天,当您想客户宣传自己的产品时,最好的方式是拥有自己的网站,通过网络来传播和展示您的产品信息。产品展示系统,为客户详细介绍自己的产品,提供了一个功能强大的平台。 系统界面友好、功能强大、操作简便,用户可以方便迅速掌握系统的操作。 4人事管理系统(限最多3人选) 项目描述:人事档案完整资料、人事分类管理(员工户口状况、员工政治面貌、员工生理状况、员工婚姻状况、员工合同管理、员工投保情况、员工担保情况)、考勤管理、加班管理、出差管理、人事变动管理(新进员工登记、员工离职登记、人员变更记录)、员工培训管理(员工培训、员工学历)、考核奖惩、养老保险等几大模块。系统具有人事档案资料完备,打印灵活,多样、专业的报表设计,灵活的查询功能等特点。 主要技能:掌握项目的开发流程:需求分析、详细设计、测试等;熟悉VC的多文档的开发技能和技巧;利用ADO技术操作SQL Server数据库;掌握数据库的开发和操作技能。 5、即时通讯系统(限最多3人选) 项目描述:系统采用UDP协议,具有:收发在线和离线消息、添加/删除好友、服务器端存储好友列表、在客户端存储好友资料和聊天记录、添加/删除好友组、可以群发消息、收发文件等功能。 主要技能:掌握项目的开发流程:需求分析、详细设计、测试等;熟悉VC的网络通信的开发技能和技巧,包括:TCP和UDP协议、线程等;利用ADO技术操作SQL Server数据库; 6、推箱子(限最多3人选) 【规则】本游戏的目的就是把所有的箱子都推到目标位置上。箱子只能推动而不能拉动。一次只能推动一个箱子。 经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道~! 7、贪吃蛇(限最多3人选) 【规则】: A 用键盘的方向键控制蛇的上下左右移动。 B 游戏分为三种难度,SLUG为慢速,每吃一朵花得1分;WORM 为中速,每吃一朵花得2分;PYTHON为快速,每吃一朵花得3分。 C 游戏目标:操纵屏幕上那条可爱的小蛇,在黑框中不停吃花,而每吃一朵

汇编课程设计报告

四川大学计算机学院 学生实验报告 实验名称:汇编课程设计报告 指导教师:唐宁九 姓名:廖偲 学号:0943111209 班级:软件09级一班 日期:20101114

实验报告 班级______________姓名_______________学号_________ 一、实验一:DEBUG基本命令与数据传输指令 二、实验的目的和要求: ? 1.熟练掌握DEBUG的基本调试命令,能够使用DEBUG编写、调试汇编语言程序片段。 ? 2.在理解数据传输指令的基础上按照实验内容中指定的程序片段对程序进行调试和记录; 三、实验的环境: 1.硬件环境:cpu 2.26gHZ、内存2G、显存1G、64位总线笔记本电脑 2.软件环境:win7 32位操作系统、8086/8088指令集系统(在windows系统中)、masm的汇编工具。 四、源程序清单: ?MOV AL, 01H ?MOV SI, 0002H ?LEA SI, [SI] ?MOV BYTE PTR [SI], 80H ?LAHF ?XCHG AL, AH ?SAHF ?XCHG AH, [SI] ?SAHF 五、操作内容: 1.从cmd在debug下进入用A命令进行汇编 格式: A [地址] 功能:从键盘输入汇编程序, 并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。如果不指定汇编地址, 则以CS:IP为地址 2. 反汇编命令U使用 格式: U [地址]/[地址范围] 功能: 将指定地址范围内的机器代码翻译成汇编源程序指令显示出来, 并同时显示地址及代码。 注意: 反汇编时一定确认指令的起始地址, 否则得不到正确的结果。 3.寄存器查看/编辑命令r或r寄存器名称 功能: 显示当前所有寄存器内容, 状态标志及将要执行的下一条指令的地址、代码和汇编指令形式。

数据结构课程设计(内部排序算法比较_C语言)

数据结构课程设计 课程名称:内部排序算法比较 年级/院系:11级计算机科学与技术学院 姓名/学号: 指导老师: 第一章问题描述 排序是数据结构中重要的一个部分,也是在实际开发中易遇到的问题,所以研究各种排算法的时间消耗对于在实际应用当中很有必要通过分析实际结合算法的特性进行选择和使用哪种算法可以使实际问题得到更好更充分的解决!该系统通过对各种内部排序算法如直接插入排序,冒泡排序,简单选择排序,快速排序,希尔排序,堆排序、二路归并排序等,以关键码的比较次数和移动次数分析其特点,并进行比较,估算每种算法的时间消耗,从而比较各种算法的优劣和使用情况!排序表的数据是多种不同的情况,如随机产生数据、极端的数据如已是正序或逆序数据。比较的结果用一个直方图表示。

第二章系统分析 界面的设计如图所示: |******************************| |-------欢迎使用---------| |-----(1)随机取数-------| |-----(2)自行输入-------| |-----(0)退出使用-------| |******************************| 请选择操作方式: 如上图所示该系统的功能有: (1):选择1 时系统由客户输入要进行测试的元素个数由电脑随机选取数字进行各种排序结果得到准确的比较和移动次数并 打印出结果。 (2)选择2 时系统由客户自己输入要进行测试的元素进行各种排序结果得到准确的比较和移动次数并打印出结果。 (3)选择0 打印“谢谢使用!!”退出系统的使用!! 第三章系统设计 (I)友好的人机界面设计:(如图3.1所示) |******************************| |-------欢迎使用---------| |-----(1)随机取数-------| |-----(2)自行输入-------| |-----(0)退出使用-------|

《HTML网页编程技术综合课程设计》教学实施方案

《HTML网页编程技术综合课程设计》教学实施方案

————————————————————————————————作者:————————————————————————————————日期:

《网页编程技术综合课程设计》教学方案 一、课程设计目标 通过该课程设计综合应用本学期所学的网页制作知识,全面建立对网站的认知,建立网站设计与网页制作的基本思想;学会网站功能规划、网站布局、网页制作、网页配色等的基本技巧,掌握网页制作与网站设计相关软件的使用方法;通过课程设计教学环节能够制作有一定实用性的网站;能解决一些实际应用问题并以此为基础进一步扩展到相关的学科上;通过本课程设计提高网页的审美意识;通过团队合作制作网站,培养团队协作精神,初步了解软件企业开发软件系统模式,为将来适应工作打开良好的基础。 二、设计要求 1.本课程设计分小组进行,各小组成员原则上2~4人,不得超过4人,由小组长协调分工,每个组员充分发挥团队协作精神。 2.自选主题,使用Dreamweaver网页设计与制作软件,设计并制作一个内容完整、结构规范合理的静态网站,要求选取内容健康,网站中出现一定数量的图像和多媒体。网站主题应大小适中、内容健康、具有时代气息;网站提供的信息应与网站主题相符合, 主题突出、内容丰富; 3.页面设计合理、美观,有创意,适用于各种显示器的分辨率和颜色。 4.每个页面都要求有导航条和页脚信息,需要将这些信息制作成库项目,然后根据需要将之插入到模板或其它页面中。各个页面都要有标题,而且布局要合理、美观、大方。布局网页时要尽量主流布局方法(必须使用Div、表格等),并要有一定复杂度。 5.页面中需要有文字、图像、多媒体、超链接等,要求达到图文并茂的效果。所使用的文字的大小、字体和颜色要认真处理,除非特殊需要,不能出现空链接,文字不能简单用截图代替;所需图像和多媒体素材尽量自己设计,如有下载,自己必须再作处理,不得直接使用现有商业网站标志。 6. 为了保证页面的设计效果更好地兼容各种浏览器以及便于改版,要求用独立的CSS文件设置页面内容格式。 7.为主页添加背景音乐。 8.需要使用一定量的JavaScript脚本,使网页具有一定的交互功能。每小组必须制作一个表单,表单输入内容需要使用正则表达式进行验证。

汇编课程设计报告

汇编课程设计报告

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

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

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

汇编课程设计

燕山大学 汇编语言课程设计说明书 题目:计算机钢琴程序 交通灯控制系统 学院(系):信息科学与工程学院 年级专业: 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 -

数据结构课程设计之综合排序代码及使用方法

题目1: 利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 要求: 1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结 果保存在不同的文件中。 2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 代码如下: #include //标准输入输出头文件 #include //定义杂项函数及内存分配函数 #include //字符串处理 #include //定义关于时间的函数 #define N 20000 clock_t Start,Now;//时钟 void Wrong()//错误输出 { printf("\n*****按键错误!请重新输入*****\n"); getchar();//从标准输入获取字符并返回下一个字符 } void change(int a[])//十个一行输出 { int i; system("cls");//清除之前的操作 for(i=0;i

(最新版)基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文

单片微型计算机课程设计报告 多功能电子数字钟 姓 名 学

教师 许伟敏 电气二班 林卫

目录 一:概述 (1) 二:设计基本原理简介 (2) 三:设计要求及说明 (3) 四:整体设计方案 (4) 系统硬件电路设计 4 系统软件总流程设计模块划分及分析5 6 五:单模块流程设计 (8) 各模块设计概述、流程图模块源程序集合及注释8 13 六:单模块软件测试 (23) 七:系统检测调试 (24) 硬件电路调试 软件部分烧写调试 八:系统优化及拓展 (26) 九:心得体会 (28)

单片微型计算机课程设计 一、概述 基于汇编语言的电子数字钟概述 课程设计题目:电子数字钟 应用知识简介: ● 51 单片机 单片机又称单片微控制器,它不是完成某一个逻辑功能 的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌 入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内51 系列单片机仍将占据嵌入式系统产品的中低端市场。 ●汇编语言 汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。汇编语言可以与高级语言配合使用,应用十分广泛。 ● ISP ISP(In-System Programming)在系统可编程, 是当今流行的单片机编程模式,指电路板上的空白元器 件可以编程写入最终用户代码,而不需要从电路板上取 下元器件。已经编程的器件也可以用ISP方式擦除或再 编程。本次课程设计便使用ISP方式,直接将编写好的 程序下载到连接好的单片机中进行调试。 选题 系统功能分析 硬件电路设计 整体流程设计 及模块划分 模块流程设计 模块编 码测试 系统合成调 试编译 下载调试(含硬件电路调试及软件烧写调试) 验收 完成总结报告课程设计流程图↑ 选题目的及设计思想简介: 课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计独立设计一个简单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系统。对电子数字钟的设计比较容易联系实际并进行拓展,在设计中我将力求尽可能跳出课本的样板,从现实生活中寻找设计原型和设计思路,争取有所突破。 如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的

数据结构课程设计排序实验报告

《数据结构》课程设计报告 专业 班级 姓名 学号 指导教师 起止时间

课程设计:排序综合 一、任务描述 利用随机函数产生n个随机整数(20000以上),对这些数进行多种方法进行排序。(1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 (2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 要求:根据以上任务说明,设计程序完成功能。 二、问题分析 1、功能分析 分析设计课题的要求,要求编程实现以下功能: (1)随机生成N个整数,存放到线性表中; (2)起泡排序并计算所需时间; (3)简单选择排序并计算时间; (4)希尔排序并计算时间; (5)直接插入排序并计算所需时间; (6)时间效率比较。 2、数据对象分析 存储数据的线性表应为顺序存储。 三、数据结构设计 使用顺序表实现,有关定义如下: typedef int Status; typedef int KeyType ; //设排序码为整型量 typedef int InfoType; typedef struct { //定义被排序记录结构类型 KeyType key ; //排序码 I nfoType otherinfo; //其它数据项 } RedType ; typedef struct { RedType * r; //存储带排序记录的顺序表 //r[0]作哨兵或缓冲区 int length ; //顺序表的长度 } SqList ; //定义顺序表类型 四、功能设计 (一)主控菜单设计

综合课程设计1题目2016-2017.2

综合课程设计1 一、考核方法和内容 根据课程设计过程中学生的学生态度、题目完成情况、课程设计报告书的质量和回答问题的情况等按照10%、40%、30%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。评分标准: 优秀:答辩所有问题都能答出+报告良好 或报告良好+实现“提高部分”的功能; 良好:答辩所有问题都能答出+报告一般; 或报告一般+实现“提高部分”的功能; 中等:答辩大部分问题能答出+报告良好; 及格:答辩大部分问题能答出+报告一般; 以下四种,都不及格: 1)答辩几乎答不出问题; 2)报告几乎都是代码; 3)雷同部分达到60%以上; 4)课设报告与数据结构和c/c++关联不大。 课设报告的装订顺序如下: 任务书(签名,把题目要求贴在相应位置,注意下划线)-----目录(注意目录的格式,页码)-----1、设计任务(题目要求)-----2、需求分析(准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪些函数?为什么要这样设计?最后列出抽象数据类型定义)-----3、系统设计(设计实现抽象数据类型,包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程图等)----4、编码实现(重要函数的实现代码)-----5、调试分析(选择多组测试数据、运行截图、结果分析)-----6、课设总结(心得体会)-----7、谢辞-----8、参考文献; 课设报告打印要求: B5纸张打印,报告总页数控制在10—15页内,报告中不能全是代码,报告中代码总量控制在3页内。版式:无页眉,有页码,页码居中 字号:小四,单倍行距 字体:宋体+Times new Romar 截图:截图要配图的编号和图的题目,如:“图1 Insert函数流程图” 二、课程设计的具体内容 1.想要优,必须实现“提高部分”的功能,但,实现“提高部分”不代表一定优; 2.其他成绩,不用完成“提高部分”。 要求:全部采用数据结构课程中的内容实现,采用C或C++实现,逻辑结构只能选线性结构、树型结构、图型结构、集合结构中的一种,不能用数据库。 1、算术表达式求解 基本要求:给定一个算术表达式,通过程序求出最后的结果。 (1)从键盘输入要求解的算术表达式; (2)采用栈结构进行算术表达式的求解过程;

《汇编语言》课程设计任务书

学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 电话号码本编辑和查找程序的设计与实现 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。具体的设计任务及要求: 1)建立一个可存放50项的电话号码表,每项包括人名及电话号码两部分; 2)程序可接受输入人名及相应的电话号码,并将他们加入电话号码表中; 3)凡有新的输入后,程序应按人名对电话号码表重新排序; 4)程序可接受需要查找电话号码的人名,并从电话号码表中查出其电话号码,并显示出来。 5)程序采用子程序结构,结构清晰; 6)友好清晰的用户界面,能识别输入错误并控制错误的修改。 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。 阅读资料: 1)《IBM—PC汇编语言程序设计实验教程》实验2.4 2)《IBM—PC汇编语言程序设计(第2版)》例6.11 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 乐曲程序的设计与实现 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计。具体的设计任务及要求:1.采用位触发方式编写程序,使计算机发出音响并演奏乐曲(例如《两只老虎》等)。 1)进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。 2)一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的关键。根据已知的音符频率对照表,设置乐曲的频率表和节拍时间表; 3)编写程序并调试通过。 2.了解定时器的工作原理,掌握利用定时器产生声音的方法,使计算机演奏乐曲(例如《两只老虎》等)。编写程序并调试通过。 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。 阅读资料: 1)《IBM—PC汇编语言程序设计实验教程》3.1节 2)《IBM—PC汇编语言程序设计(第2版)》10.4节,10.5节 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

数据结构课程设计排序算法总结

排序算法: (1) 直接插入排序 (2) 折半插入排序(3) 冒泡排序 (4) 简单选择排序 (5) 快速排序(6) 堆排序 (7) 归并排序 【算法分析】 (1)直接插入排序;它是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的序的有序表中,从而得到一个新的、记录数增加1的有序表。 (2)折半插入排序:插入排序的基本操作是在一个有序表中进行查找和插入,我们知道这个查找操作可以利用折半查找来实现,由此进行的插入排序称之为折半插入排序。折半插入排序所需附加存储空间和直接插入相同,从时间上比较,折半插入排序仅减少了关键字间的比较次数,而记录的移动次数不变。 (3)冒泡排序:比较相邻关键字,若为逆序(非递增),则交换,最终将最大的记录放到最后一个记录的位置上,此为第一趟冒泡排序;对前n-1记录重复上操作,确定倒数第二个位置记录;……以此类推,直至的到一个递增的表。 (4)简单选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之。 (5)快速排序:它是对冒泡排序的一种改进,基本思想是,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 (6)堆排序: 使记录序列按关键字非递减有序排列,在堆排序的算法中先建一个“大顶堆”,即先选得一个关键字为最大的记录并与序列中最后一个记录交换,然后对序列中前n-1记录进行筛选,重新将它调整为一个“大顶堆”,如此反复直至排序结束。 (7)归并排序:归并的含义是将两个或两个以上的有序表组合成一个新的有序表。假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,这种排序称为2-路归并排序。 【算法实现】 (1)直接插入排序: void InsertSort(SqList &L){ for(i=2;i<=L.length ;i++) if(L.elem[i]L.elem[0];j--) L.elem [j+1]=L.elem [j]; L.elem [j+1]=L.elem[0]; } } (2)折半插入排序:

相关文档
最新文档