汇编随机点名大作业.docx

上传人:b****0 文档编号:9628115 上传时间:2023-05-20 格式:DOCX 页数:13 大小:140.23KB
下载 相关 举报
汇编随机点名大作业.docx_第1页
第1页 / 共13页
汇编随机点名大作业.docx_第2页
第2页 / 共13页
汇编随机点名大作业.docx_第3页
第3页 / 共13页
汇编随机点名大作业.docx_第4页
第4页 / 共13页
汇编随机点名大作业.docx_第5页
第5页 / 共13页
汇编随机点名大作业.docx_第6页
第6页 / 共13页
汇编随机点名大作业.docx_第7页
第7页 / 共13页
汇编随机点名大作业.docx_第8页
第8页 / 共13页
汇编随机点名大作业.docx_第9页
第9页 / 共13页
汇编随机点名大作业.docx_第10页
第10页 / 共13页
汇编随机点名大作业.docx_第11页
第11页 / 共13页
汇编随机点名大作业.docx_第12页
第12页 / 共13页
汇编随机点名大作业.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编随机点名大作业.docx

《汇编随机点名大作业.docx》由会员分享,可在线阅读,更多相关《汇编随机点名大作业.docx(13页珍藏版)》请在冰点文库上搜索。

汇编随机点名大作业.docx

汇编随机点名大作业

《汇编语言程序设计》

综合程序设计实验报告

随机点名

 

完成日期:

2013.11.23

、项目简介

本项目的名称是随机点名,主要用于大学老师上课期间对上课的

学生进行随机的点名抽查,优点是方便快捷。

二、小组成员具体分工

组长:

杨波

主要负责的工作:

获得随机数的代码编写,输出字体带颜色

的代码编写,后期代码的修改,系统的整合操作,信息的搜集和整理,实验报告的检验及修改

主要负责的工作:

通过所获得的随机数得到输出学号的代码

编写,实验报告的初步编写,信息的搜集和整理三、需求分析与设计

1•项目设计背景及意义:

当今社会上大学已经成为一种潮流趋势,而随着大学生人

数的增多,每堂课的人数也随之增多。

这就给许多大学老师带

来了问题,课程时间一定而考勤却占去了相当一部分时间,同时老师并不能记清所有人的名字或是学号,找学生回答问题成为了老师们的一块心病。

种种原因下对课程进度也造成了一定的影响。

而我们设计的随机点名项目极具针对性的解决了这个问

题。

该项目通过随机的显示学生信息进而达到点名的目的,方便快捷,有效的节约了课程时间。

2.编译及运行环境:

MasmforWindows集成实验环境2012.5

3.项目的设计过程

3.1小组讨论

通过具体的项目分析,决定各自分工以及所有可遇

到难点的处理办法。

本项目需要解决的最大问题就是随机数的获取。

在计算机中获得完全的随机数几乎是不可能的,所以随机数的生成实际上是伪随机数的生成。

本项目我们采用IBM公司首创的线性同余法,取系统时间为随机种子,进而获得随机数。

3.2信息的收集及整合

通过上网查找以及对书本上知识的研究,初步得

出基本的代码框架,包括首先通过线性乘同余法来获得随机数,然后根据随机数来选择输出的学号,进而达到随机点名的需求。

3.3代码的编写

通过所学的知识以及所查询的知识进行代码的初步

编写。

主要参考书目:

IBM-PC汇编语言程序设计沈美明温冬婵;汇编语言程序设计教程王庆生

3.4实验报告的书写

四、代码及分析

4.1知识点及特色

4.1.1知识点

1•字符串,数组,常量的定义以及初始化2各种寄存器寻址方式2•栈的定义及初始化4•子程序的定义及调用5•系统时间的调用及使用6•加减乘除四则运算7•栈的操作,包括压栈和弹栈8・bios功能调用使字符串带颜色显示9・dos功能调用10.字符比较指令及跳转指令的操作

4.1.2特色及流程

该程序的所有代码是自主编写的,其中随机数的代码是通过

对线性乘同余法的分析,调用系统时间实现四则运算而获得。

具体有以下子程序:

1)main主程序.实现获取当前输出模式并改变当前输出格式和

像素的功能•接下来,在选项选择时,若选择1则程序继续输出学号,若选择2则结束输出.

2)Random子程序,调用系统时间为随机种子,利用公式

In=(a*In-1)modm

其中a=37d,m=63553d.

然后In和00001111B作与运算,将In数值限制在20以内,

最后存于vrandom中.

3)Search_disp子程序,根据v_random传给num的数值,利用

comper子程序,选择与num数值相应的string(num),在跳转后调用display子程序。

4)comper子程序•包含和num比较与跳转的具体指令,调用

display子程序的前提・

5)Display子程序•通过调用BIOS功能在0行0列以彩色输出一

串字符,具体见BIOS功能13h.

6)Clrfpro子程序•其主要任务就是实现换行・

具体流程图如下:

(此处流程图给出的是总体流程,关于整个项目涉及到的各种算法流程在子函数介绍中已给出)

开始

输入选择项

al=31h

获取随机

OVER

=>Vrandom

由随机数取学号=>num

输出被选人

/=>string

 

4.2.源代码如下:

DATASSEGMENT

 

机数

a

dw

37d;线性乘同余法中的a参数

m

dw

63553d;

线性乘同余法中的a参数

time

db

100

dup('$');获得的系统时间

message

db

'".continue2.exit',

13,10,'$'

 

STRING1DB'YouarepickedMr・20112784';,13,10,'$';以下都

是相应学号信息

STRING9DB'YouarepickedMr・20112816';,13,10,'$'

STRING10DB'YouarepickedMr.20112824';,13,10,'$'

STRING11DB'YouarepickedMr.20112825';,13,10,'$'

STRING21DB'YouarepickedMr.20444445';,13,10,'$'

ARRAYDB1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,0

NUMDB8;保存选择数

DATASENDS

STACKSSEGMENT

dw50dup⑺

pointlabelword

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

MOVAX,DATAS

MOVDS,AX

moves,ax

movax,STACKS

movss,ax

movsp,point

pushds

subax,ax

pushax

movah,0fh

int10h

movah,0

moval,13

int10h;获取当前输出格式并改变输出格式为13h格式.

leadx,message

movah,09h

int21h

movah,01;输入选择的选项

int21h

callclrfpro

cmpal,31h

jneover

 

数的子程序

movbl,v_random

movnum,bl

callsearch_disp

jmpchoose返回chooser续执行,输出学号

ret

子程序

movah,2ch

int21h

movtime,cl

movtime+1,ch

movtime+2,dl

movtime+3,dh

moval,dl

movah,dh

muladivmanddl,00001111Bmovv_random,dlret

randomendp

 

search_dispprocnear

;通过随机数选择输出学号的子程序

 

 

MOVSI,OFFSETARRAY

CALLCOMPER;compe实现比较跳转功能,下同

JEA1

INCSI

CALLCOMPER

JEA2

INCSI

CALLCOMPER

JEA3

INCSI

CALLCOMPER

JEA4

INCSI

CALLCOMPER

JEA5

INCSI

CALLCOMPER

JEA6

INCSI

CALLCOMPER

JEA7

INCSI

CALLCOMPER

JEA8

INCSI

CALLCOMPER

JEA9

INCSI

CALLCOMPER

JEA10

INCSI

CALLCOMPER

JEA11

INCSI

CALLCOMPER

JEA12

INCSI

CALLCOMPER

JEA13

INCSI

CALLCOMPER

JEA14

INCSI

CALLCOMPER

JEA15

INCSI

CALLCOMPER

JEA16

INCSI

CALLCOMPER

JEA17

INCSI

CALLCOMPER

JEA18

INCSI

CALLCOMPER

JEA19

INCSI

CALLCOMPER

JEA20

incSI

CALLCOMPER

JEA21

MOVAH,4CH

INT21H

A1:

leabx,STRING1calldisplayret

A2:

leabx,STRING2calldisplayret

A3:

leabx,STRING3calldisplay;调用输出函数,输出选中的字符串,下同retleabx,STRING4

A5:

leabx,STRING5calldisplayret

A6:

leabx,STRING6calldisplayret

A7:

leabx,STRING7calldisplayret

A8:

leabx,STRING8calldisplayret

A9:

leabx,STRING9calldisplayret

ret

A11:

leabx,STRING11calldisplayret

A12:

leabx,STRING12calldisplayret

A13:

leabx,STRING13calldisplayret

A14:

leabx,STRING14calldisplayret

leabx,STRING15

leabx,STRING16

calldisplayret

A17:

leabx,STRING17calldisplayret

A18:

leabx,STRING18

calldisplayret

A19:

leabx,STRING佃

calldisplayret

A20:

leabx,STRING20

calldisplayret

ret

search_dispendp

COMPERPROC

MOVDL,[SI]

CMPDL,NUM

RET

COMPERENDPclrfproproc

leadx,clrf

movah,09h

int21h

retclrfproendp

 

displayproc

;完成显示功能的子程序

movbp,bx

moval,0

movcx,26

movbh,0

movbl,13h

 

movah,13h

int10h

ret

displayendp

over:

;结束的子程序

 

 

MOVAH,4CH

INT21Hmainendp

CODESENDS

ENDmain

(共260行)4.3改进设想

随机算法可以改进为:

In=(a*In-1+b*In-2)modm。

本项目使用的是线性乘同余法,循环出现随机数的可能性比较大。

在三维和三维以上的空间中,所产生的随机数总是集聚在一些超平面上,随机数序列是关联的。

而是用改进算法后可以大大降低随机数据循环出现的可能性。

五、总结

经过三周的努力终于完成了该项目的设计和制作。

该程序使用方便快捷,虽然其中也有着些许缺点,但是我们相信有着非常好的发展前景。

其间也遇到了不少的问题,但是经过我们团体详细的讨论以及认真的探索,最终使得这些问题得到了有效的解决。

通过本次的综合

训练,进一步加深了对于汇编语言的了解,对于一些语言操作指令运用的也更加熟练,并且在编码的同时也涉及到了更深层次的高级汇编语言。

该项目包含着整个团队成员的辛劳和汗水,体现了团队合作的必要性。

同时也锻炼了我们的团队协作能力,每个人都乐在其中。

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2