计算机组成与汇编课程设计报告Word文件下载.doc
- 文档编号:14186807
- 上传时间:2022-10-19
- 格式:DOC
- 页数:22
- 大小:227.50KB
计算机组成与汇编课程设计报告Word文件下载.doc
《计算机组成与汇编课程设计报告Word文件下载.doc》由会员分享,可在线阅读,更多相关《计算机组成与汇编课程设计报告Word文件下载.doc(22页珍藏版)》请在冰豆网上搜索。
90以上优秀80以上良好70以上中等60以上及格60以下不及格)
4.虚拟平台的模型机实验
二、设计目的
课程设计是计算机原理与汇编语言教学过程中的重要环节。
本课程设计主要目的是使计算机专业学生深入学习计算机原理与汇编语言知识,进一步提高学生计算机原理与汇编语言综合能力和程序设计技能,锻炼运用计算机原理与汇编语言解决实际问题的能力。
三、概要设计
1、实验一是Fibonacci数列的求值,可通过递归调用实现。
2、实验二是要求复制文件,通过给出的文件名找到并打开文件,然后将文件内容读入内存,建立一个新文件,将内存中的内容写入心文件中。
3、实验三要求对学生成绩进行统计,并输出相关信息。
可先将输入数据读入一个数组中,每读入一个数据,计算器家1,将读入的所有数据相加得到总分,并对每个数据进行比较,统计相应等级。
4、实验三是虚拟实验,要求通过给出的各种芯片和元器件,连接成一个虚拟机,并进行相关的指令操作。
四、详细设计
1、Fibonacci数列求值
算法思想是先将输入的字符存入数组中,然后将其转化为十进制数,再通过调用递归函数实现求值,最后将结果转化为字符串后输出。
主要代码如下:
数据段的定义:
datasegment ;
数据段
bufdb3,?
3dup(?
)
buf1db5dup(?
db'
$'
buf2db0
flagdb1
mess1db'
enterthenumber:
'
'
mess2db13,10,'
result:
buf3db1,24dup(0)
buf4db1,24dup(0)
dataends
输入参数并将参数转化为十进制数
leadx,mess1;
提示输入
movah,9
int21h
movdx,offsetbuf;
输入参数
movah,0ah
leasi,buf;
计算参数的值
pushax
moval,0
subbyteptr[si+2],30h
addal,byteptr[si+2]
递归调用的子程序
code2segment;
子程序
assumecs:
code2,ds:
data,ss:
sseg
sumprocfar
leasi,buf3
cmpdl,buf2
jbsum1
jmpexit
sum1:
incdl
leadi,buf4
movcx,25
s1:
moval,[si]
movbl,[di]
add[di],al
cmpbyteptr[di],10d
jbs2
subbyteptr[di],10d
addbyteptr[si+1],1
s2:
mov[si],bl
incdi
incsi
loops1
callsum
exit:
ret
sumendp
code2ends
将结果输出
movdl,0dh;
输出
movah,2
movdl,0ah
2、文件复制
文件复制主要算法流程为先将输入的文件名存入一个缓冲区并打开文件,打开文件后,以512个字节为单位将文件内容读入到内存缓冲区中,知道源文件末尾。
读完文件后,根据输入的目标文件名创建文件,然后同样以512字节为单位将内存缓冲区中的字符串写入目标文件中,写操作完成后,关闭文件。
其主要代码如下:
数据段:
dataSEGMENT
mess1DB'
Please,inputfilename:
0DH,0AH,24H
mess2DB0DH,0AH,'
Please,inputdestinationfilename:
07H,0DH,0AH,24H
fnfDB0DH,0AH,'
filehasnotexisted!
fdfDB0DH,0AH,'
Destinationfilehasexisted!
fdeDB0DH,0AH,'
Destinationpathhasnotexisted!
freDB0DH,0AH,'
readingerror.'
fweDB0DH,0AH,'
writtingerror.'
fcsDB0DH,0AH,'
Filecopyedsucceed.'
fbufferDB128;
缓冲区
DB?
fnameDB128DUP(?
);
字符串名
fnum_sDW?
;
源文件号
fnum_dDW?
新文件号
bufferDB512DUP(?
字符串内容
dataENDS
存入文件名称:
full0:
LEADX,mess1;
提示信息输出
MOVAH,9
INT21H
CLD
MOVCX,128;
将文件名存入fname中
MOVAL,0
LEADI,fname
REPSTOSB
字符读入内存:
readf:
MOVBX,fnum_s;
取源文件号
MOVCX,512;
读出512个字符
MOVDX,OFFSETbuffer
MOVAH,3FH
JNCwritef;
读成功,则写
LEADX,fre;
不成功,显示错误信息,关闭文件,并结束程序
MOVAH,9
JMPexit
字符写入目标文件:
writef:
MOVBX,fnum_d;
取新文件号
MOVCX,AX;
按实际读入字数写文件
MOVAH,40H
JNCcmpcx;
写成功
LEADX,fwe;
JMPexit
关闭文件:
exit:
MOVAH,3EH;
关闭文件
MOVBX,fnum_s
MOVAH,3EH
MOVAX,4C00H
3、成绩统计程序
算法思想是先将键盘输入的字符串成绩转化为十进制后存入内存缓冲区中,读入的同时进行计数。
然后通过循环语句实现成绩的评定统计与累加过程,将总分除以计数器即得平均分。
最后将所得数据转化为字符串后显示出来。
DATASEGMENT
STRING1 DB '
PleaseInputScore:
STRING2DB'
Thetotalnumberis:
STRING3DB '
Thesumis:
STRING4DB'
*********************'
0AH,0DH,'
ENTER1DB0AH,0DH,'
SCORE DW 60DUP(?
) ;
分配存储空间
TMP DB0,0,0,0
S5 DW 0 ;
定义变量
S6 DW 0
S7 DW 0
S8 DW 0
S9 DW 0
S10 DW 0
TOTALSCOREDB0
DATAENDS
输入:
INPUT:
;
输入一个字符
MOV AH,1
INT 21H
CMPAL,30H
JBENTER2
CMPAL,39H
JNBINPUT
MOVAH,AL ;
AB=A*10+B
MOVBH,10
MOVAL,BL
MULBH
MOVBL,AL
JMPINPUT
显示总人数:
NUM:
;
显示总人数
MOV DX,OFFSETSTRING2 ;
输出“thetotalnumberis:
”
MOV AH,09H
MOVAX,DI;
outputthenuberofstudents
CALLB_TO_D
CALLOUTTMP
计算并显示总分:
SUM:
计算总分
MOVSI,6
MOVBX,SCORE[SI]
ADDAX,BX
SUBSI,2
JNSSUM
LEABX,TOTALSCORE
MOV[BX],AX
;
显示总分
CALLB_TO_D ;
outputthetotalscore
CALLOUTTMP
4、虚拟平台的模型机实验
模型机示意图:
根据上图进行连线,检查无误后开始进行测试,选择菜单中的“工具”,再选择“模型机调试”,在指令输入窗口中输入如下指令:
00000000
00010000
00001001
00100000
00001011
00110000
01000000
00000001
这里做的是个加法运算,第一个加数已经存入到内存的00001010单元中,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 汇编 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)