《计算机组成原理与汇编语言》课程设计报告.docx

上传人:b****7 文档编号:10614226 上传时间:2023-02-21 格式:DOCX 页数:25 大小:101.54KB
下载 相关 举报
《计算机组成原理与汇编语言》课程设计报告.docx_第1页
第1页 / 共25页
《计算机组成原理与汇编语言》课程设计报告.docx_第2页
第2页 / 共25页
《计算机组成原理与汇编语言》课程设计报告.docx_第3页
第3页 / 共25页
《计算机组成原理与汇编语言》课程设计报告.docx_第4页
第4页 / 共25页
《计算机组成原理与汇编语言》课程设计报告.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

《计算机组成原理与汇编语言》课程设计报告.docx

《《计算机组成原理与汇编语言》课程设计报告.docx》由会员分享,可在线阅读,更多相关《《计算机组成原理与汇编语言》课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。

《计算机组成原理与汇编语言》课程设计报告.docx

《计算机组成原理与汇编语言》课程设计报告

广东技术师范学院天河学院

计算机组成原理与汇编语言

课程设计报告

题目:

打字练习动画交互

设计者:

叶葆青陈功财卢勇盛

植志荣卓荣辉

专业班级:

本计科132

学号:

20130415432452013041543202

20130415432332013041543251

2013041543252

指导教师:

胡安明

所属系部:

计算机科学与技术系

 

2015年6月10日

摘要

本课程设计是用汇编语言完成打字练习功能的实现,本文的出发点从设计目的,概要设计,详细设计,程序调试以及心得体会五部分来对该程序的设计进行详细解释和说明,并且结合了流程图和实际界面截图。

从构思,编写,调试到完整的是实现,每一部分都做了深入的分析和说明。

本文的核心部分是对于详细设计的讲解与分析,而这当中的侧重点又在于设计思想的再现。

当然,其他部分也是必不可少的。

关键词:

功能模块,核心代码,随机字符,模块调用

目录

1.需求分析4

1.1概述4

1.2系统目标4

1.3开发环境4

2.程序流程图及其说明4

2.1程序流程图5

2.2流程图说明6

3.程序调试6

4.心得体会7

5.参考文献8

6.附录(代码9

1.需求分析

2.1.1概述

这次课设的任务是写一个程序,运行可执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。

通过课程设计,主要达到以下目的:

1. ,加强用汇编语言编程的能力;

2. 调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;

3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础;增进对汇编语言的认识

4. 5. 掌握屏幕输出显示的设计方法。

通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中;

2.1.2系统目标

根据题目要求可以看到有以下几部分来实现打字练习:

1.由26字母乱序组成一行显示行。

2.字母自动落下。

3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。

4.按下“Ese”掌握汇编语言的中断键则程序返回到主界面。

5.按空格键游戏暂停。

6.在主界面按“E”则程序退出。

打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。

对于以上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。

2.1.3开发环境

EMU8086平台

2.程序流程图及其说明

2.1程序流程图

程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令ENTER进入打字界面开始打字,E退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。

核心模块的流程大体如下面的流程图图2-1:

 

E其他键

ENTER

ENTER

是否

 

 

2.2流程图说明

主界面是程序的初始入口,也是其他功能模块的接入点。

主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。

子模块分为判断输入字符判断模块(这当中包含两个小的子模块:

主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:

打字界面返回主界面模块和主界面退出程序模块)

3.程序调试

1.程序运行后的主界面如图,主界面第一行是欢迎语,第二行是作者,然后往下是操作说明,为使用者说明该程序的使用方法。

2.当用户按下ENTER键时,程序自动跳入到图4-2的界面,字母随机落下,用户便可以开始打字练习了。

练习只要按照说明来做就可以了。

4.心得体会

微机的应用已渗透到生活中的方方面面,利用微机,以前难以实现的东西轻而易举地成为现实。

然而,作为工科学生,要了解微机的内部结构、系统构成、指令系统、输入输出接口、存储器和接口的扩展等等,这些对我们来说非常重要。

  

汇编语言程序设计的方法和多模块程序设计。

作为最基本的编程语言之一,汇编语言的重要性勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。

尤其在和硬件关系非常密切的程序或要提高运算速度的程序,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能

这次微机原理课程设计历时一周,在整整一周的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。

但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。

因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错

这次无论是设计个这程序还是写课程设计报告都让我学到了好多东西,有对课本知识更加深入的了解和掌握,也有对于流程图的设计以及绘制还有word的一些用法和排版等,都让我受益匪浅,总之,非常感谢学校和老师给我们安排了这次课程设计,不仅让我掌握了更多的知识,还让我领会到要把一件事情做好并真正有所收获还得靠自己独立地去完成并坚持不懈!

希望在以后的学习中还能多搞几次这种课程设计。

5.参考文献

[1]姚燕南,薛钧义主编.微型计算机原理与接口技术.高等教育出版社,2004.11

[2]温冬蝉,沈美明.IBMPC汇编语言程序设计.第2版.北京:

清华大学出版社,2002.3

[3]齐志儒,高福祥主编.汇编语言程序设计.第2版.东北大学出版社,2001.1

[4]张弥左,王兆月,邢立军编著.微型计算机接口技术.机械工业出版社

[5]吴秀清.微型计算机原理与接口技术.合肥:

中国科技大学出版社,2003

[6]易先清.微型计算机原理与应用.北京:

电子工业出版社,2001

[7]李敬兆.8086/8088和基于ARM核汇编语言程序设计.第二版.合肥:

中国科学技术大学出版社,2008.9

[8]王爽.汇编语言.北京:

清华大学出版社,2003.9

 

6.附录(代码)

Init_gamemacroop1,op2,op3,op4,op5,op6

movcx,00h

movdh,op1

movdl,op2

op6:

movah,02h

movbh,00h

int10h

pushcx

movah,0ah

moval,op3

movbh,00h

movcx,01h

int10h

popcx

inccx

incop4

cmpcx,op5

jneop6

endm

clear_screenmacroop1,op2,op3,op4;清屏宏定义

movah,06h

moval,00h

movbh,07h

movch,op1

movcl,op2

movdh,op3

movdl,op4

int10h

movah,02h

movbh,00h

movdh,00h

movdl,00h

int10h

endm

menumacroop1,op2,op3;菜单显示宏定义

movah,02h

movbh,00h

movdh,op1

movdl,op2

int10h

movah,09h

leadx,op3

int21h

endm

datasegment

ZKdb"xiaobowelcomeyoutoplay$"

nodb"*****Designedby1wangxiaobo@!

*****",0dh,0ah,"^HenanUniversityofEconomicsandLaw^'date:

2014/4/24$"

megdb"pressEnterkeytocontinue.......$"

meg1db"whenaletterisdropping,pleasehitit!

$"

meg2db"pressspacekeytopause!

$"

meg3db"pressESCkeytoreturnmaininterface!

$"

meg4db"pressletter'E'toexit!

$"

speeddw600d

lettersdb"jwmilzoeucgpravskntxhdyqfb"

db"iytpkwnxlsvxrmofzhgaebudjq"

db"nwimzoexrphysfqtvdcgljukda"

letters_bakdb"jwmilzoeucgpravskntxhdyqfb"

db"iytpkwnxlsvxrmofzhgaebudjq"

db"nwimzoexrphysfqtvdcgljukda"

letter_counterdb0

life_flagdb78dup(0)

position_flagdb78dup(0)

present_positiondb1

dataends

stacksegmentparastack'stack'

db64dup(0)

stackends

codesegment

mainprocfar

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

movletter_counter,00h

movpresent_position,1

leasi,position_flag

movah,00h

movcx,00h

init_postion_flag:

mov[si],ah

incsi

inccx

cmpcx,78d

jneinit_postion_flag

leadi,letters

leasi,letters_bak

movcx,00h

init_letters:

movah,[si]

mov[di],ah

incsi

incdi

inccx

cmpcx,78d

jneinit_letters

movah,00h

leasi,life_flag

movcx,00h

init_life_flag:

mov[si],ah

incsi

inccx

cmpcx,78d

jneinit_life_flag

movcx,00h

movah,01h

orch,00010000b

int10h

clear_screen00d,00d,24d,79d

Init_game00d,00d,0ah,dl,80d,nextsign1

Init_game24d,00d,0ah,dl,80d,nextsign2

Init_game00d,00d,0ah,dh,25d,nextsign3

Init_game00d,79d,0ah,dh,25d,nextsign4

menu05d,15d,ZK;菜单信息的宏调用

menu07h,15d,no

menu09d,15d,meg

menu11d,15d,meg1

menu13d,15d,meg2

menu15d,15d,meg3

menu17d,15d,meg4

put:

movah,02h;设置光标位置

movbh,00h

movdh,22d

movdl,33d

int10h

movah,01h;从键盘输入任意字符

int21h

cmpal,0dh

jespeed3

cmpal,45h

jeexit

exit:

movah,4ch

int21h

speed3:

movax,speed+12

movspeed,ax

jmpbegin

begin:

clear_screen01d,01d,23d,78d;清屏宏调用

clear_screen01d,01d,23d,78d

Init_game23d,01d,01h,dl,78d,nextsign5

movah,02h

movbh,00h

movdh,01h

movdl,01h

int10h

movcx,00h

leasi,letters

nextletter:

movah,02h;显示字母

movdl,[si]

int21h

incsi

inccx

cmpcx,78d

jenextcycle

jmpnextletter

from_front:

subpresent_position,78d

jmpgobackto_si

find_zero:

cmpletter_counter,78d

jerecycle

cmppresent_position,78d

jefrom_one

movah,00h

nextsi:

addpresent_position,01h

incsi

cmp[si],ah

jegobackto_di

cmppresent_position,78d

jefrom_one

jmpnextsi

from_one:

movpresent_position,01h

jmpgobackto_si

recycle:

movletter_counter,00h

movpresent_position,01d

leasi,position_flag

movcx,00h

movah,00h

clearsi:

mov[si],ah

inccx

cmpcx,78d

jenextcycle

incsi

jmpclearsi

nextcycle:

leadi,letters

leasi,position_flag

addpresent_position,31d

cmppresent_position,78

jafrom_front

gobackto_si:

addsi,wordptrpresent_position

decsi

movah,[si]

cmpah,01h

jefind_zero

gobackto_di:

movah,01h

mov[si],ah

adddi,wordptrpresent_position

decdi

movdl,present_position

movah,02h

movbh,00h

movdh,01h

int10h

movcx,00h

nextrow:

pushcx

out_cycle:

;延迟

pushcx

movcx,00h

in_cycle:

addcx,01h

cmpcx,1000

jnein_cycle

pushdx

movah,06h;从键盘输入字符

movdl,0ffh

int21h

popdx

jzpass

cmpal,1bh;如果键入ESC,则返回主菜单

jeto_start1

cmpal,"";如果键入SPACE,则游戏暂停

jepause

cmpal,[di];输入字母正确!

则字母消失

jedisappear

pass:

popcx

inccx

cmpcx,speed

jeprint

jmpout_cycle

pause:

pushdx;暂停处理

movah,06h

movdl,0ffh

int21h

popdx

cmpal,""

jnepause

jmppass

to_start1:

;返回主菜单

jmpstart

print:

movah,0ah;在当前光标位置写空格

moval,""

movbh,00h

movcx,01h

int10h

incdh

movah,02h;改变光标位置

movbh,00h

int10h

movah,0ah;在当前光标位置写字母

moval,[di]

movbh,00h

movcx,01h

int10h

popcx

inccx

cmpcx,21d

jeprint_next_letter

jmpnextrow;下一行

disappear:

;击中字母后输出空格

popcx

popcx

movah,0ah

moval,""

movbh,00h

movcx,01h

int10h

jmphit

print_next_letter:

leasi,life_flag

addsi,wordptrpresent_position

decsi

movah,0ah

moval,""

movbh,00h

movcx,01h

int10h

incdh

movah,02h

movbh,00h

int10h

movah,0ah

moval,""

movbh,00h

movcx,01h

int10h

movah,1

mov[si],ah

hit:

movah,02h

movbh,00h

movdh,01h

movdl,present_position

int10h

moval,[di];出现下一个新字母的数法

addal,7

cmpal,7ah

jaconvey_letter

movah,0ah

movbh,00h

movcx,01h

int10h

mov[di],al

addletter_counter,01h

jmpnextcycle

convey_letter:

subal,7ah

addal,61h

movah,0ah

movbh,00h

movcx,01h

int10h

mov[di],al

addletter_counter,01h

jmpnextcycle

clear_screen01,01,23,78

movah,02h

movbh,00h

movdh,11d

movdl,20d

int10h

incdh

incdh

movah,02h

movbh,00h

int10h

notkey:

movah,07h

int21h

cmpal,0dh

jeto_start

cmpal,1bh

jeover

jmpnotkey

to_start:

clear_screen00,00,24,79

jmpstart

over:

clear_screen01,01,23,78

movah,02h

movbh,00h

movdh,11d

movdl,15h

int10h

movah,02h

movbh,00h

movdh,13d

movdl,15h

int10h

movah,07h

int21h

movah,07h

int21h

clear_screen00,00,24,79

movax,4c00h

int21h

mainendp

codeends

endstart

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1