计算机组成原理与汇编实验报告.docx
- 文档编号:24892325
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:32
- 大小:488.41KB
计算机组成原理与汇编实验报告.docx
《计算机组成原理与汇编实验报告.docx》由会员分享,可在线阅读,更多相关《计算机组成原理与汇编实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
计算机组成原理与汇编实验报告
计算机组成原理与汇编课程设计
实验报告
一、课程设计目标………………………………………………………3
二、课程设计基本要求…………………………………………………3
三、课程设计的内容……………………………………………………3
四、课程设计的要求……………………………………………………5
五、实验详细设计………………………………………………………5
1.统计文件中各字母出现的频率…………………………5
2.用递归计算50以内Fibonacci数,以十进制数输出…9
3.虚拟平台模拟机实验……………………………………11
六、使用说明…………………………………………………………19
七、总结与心得体会……………………………………………………19
八、参考文献…………………………………………………………20
九、附录………………………………………………………………20
1.字符统计.asm……………………………………………20
2.斐波那契数(小于50).asm………………………………29
一、课程设计目标
通过课程设计使学生综合运用所学过的计算机原理与汇编知识,增强解决实际问题的能力,加深对所学知识的理解与掌握,提高软硬件开发水平,为今后打下基础。
课程设计的目的和要求:
1、使学生巩固和加强《计算机原理与汇编语言》课程的基本理论知识。
2、使学生掌握汇编语言程序设计的方法及编程技巧,正确编写程序。
3、使学生养成良好的编程习惯并掌握调试程序的基本方法。
4、使学生养成规范书写报告文档的能力,撰写课程设计总结报告。
5、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。
二、课程设计的基本要求
1、认真查阅资料,独立完成设计任务,每道题都必须上机通过。
2、编写预习报告,写好代码,上机调试。
3、独立思考,培养综合分析问题解决问题和调试程序的能力。
4、按时完成课程设计,写出课程设计报告。
三、课程设计的内容
1、给定一个英文ASCII码文件,统计文件中英文字母的频率,以十进制形式输出。
2、用递归计算50以内Fibonacci数,以十进制数输出.
3、虚拟平台的模型机实验,具体要求如下:
1)选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中
2)搭建实验流程:
根据原理图1和电路图(见附件),将已选择的组件进行连线。
3)输入机器指令:
选择菜单中的“工具”,再选择“模型机调试”,在指令输入窗口中输入如下指令:
00000000
00010000
00001001
00100000
00001011
00110000
00001011
01000000
00000000
00000001
本实验设计机器指令程序如下:
地址(二进制)
内容(二进制)
助记符
说明
00000000
00000000
INR0
“INPUTDEVICE”->R0
00000001
00010000
ADD[0AH],R0
R0+[0AH]->R0
00000010
00001010
00000011
00100000
STAR0,[0BH]
R0->[0BH]
00000100
00001011
00000101
00110000
OUT[0BH]
[0BH]->LED
00000110
00001011
00000111
01000000
JMP00H
00H->PC
00001000
00000000
00001010
运算数据
自定
00001011
求和结果
4)这里做的是个加法运算,第一个加数已经存入到内存的00001010单元中,第二个加数是需要手工输入的。
在实验运行面板中点击“运行”按钮,选择“输入”芯片,设置输入的数据后,双击连接“输入”芯片的单脉冲,这样第二个加数就设置好了。
5)在实验运行面板中双击连续脉冲,模型机便开始工作,观察各个芯片的状态。
或者在模型机调试窗口中(如图2所示)点击“指令执行”选项卡,在模型机调试窗口中点击“下一时钟”,模型机机执行到下一个时钟,点击“下一微指令”,模型机机执行到下一个微指令,点击“下一指令”,模型机机执行到下一条指令。
观察各个芯片的状态,思考模型机的运行原理。
四、课程设计的要求
1、根据题目内容,查阅资料。
2、编写课程设计预习报告。
3、编制程序及调试程序。
4、分析总结,写出课程设计报告,报告中应该包含程序功能与使用说明、程序功能实现方法说明、如流程图与算法参数说明等内容,设计经验体会总结,源程序清单。
5、实验过程由指导老师监督,听从老师安排和督导。
6、每次任务完成后由指导老师逐个的检查实验内容、结果并评分,不符合要求的重写
五、实验详细设计
1)统计文件中各字母出现的频率
一、实验原理
在程序中,以是否读到ASCII码为0作为字符串末尾结束的标志;读取文件,并对文件中的字符串进行逻辑判断(不同字母之间各自对应的ASCII码),统计字符数。
二、实验目的
经过该实验知道如何通过编写汇编程序读取文件并且读取文件中内容;通过分支程序设计来统计字符数,
三、实验设计内容
读取文件代码段:
MOVAX,DATAS
MOVDS,AX;置数据段寄存器
;
MOVDX,OFFSETFNAME
MOVAX,3D00H;读打开指定文件
INT21H
JNCOPEN;打开成功,转OPEN
MOVSI,OFFSETERROR1;显示打开不成功提示信息
CALLDMESS
JMPOVER
;
OPEN:
MOVBX,AX;保存文件代号
GO:
CALLREAD_CHAR;从文件中读一个字符
JCREAD_ERROR;如读出错,则转
CMPAL,EOF;读到文件结束符吗?
JZTYPE_OK
CALLPUTCH
JMPGO
将文件内容推入栈中,并输出:
READ_CHARPROC
MOVCX,1
MOVDX,OFFSETBUFFER;置缓冲区地址
MOVAH,3FH;置功能调用号
INT21H;读
JCR2;读出错,转
CMPAX,CX;判断文件是否结束
MOVAL,EOF;若文件已经结束,置文件结束符
JBR1;文件确定已经结束,转到
MOVAL,BUFFER;文件未结束,取所读字符
R1:
CLC
R2:
RET
READ_CHARENDP
;
DMESSPROC
DMESS1:
MOVDL,[SI]
INCSI
ORDL,DL
JZDMESS2
MOVAH,2
INT21H
JMPDMESS1
DMESS2:
RET
DMESSENDP
PUTCHPROC
PUSHDX
MOVDL,AL
MOVAH,2
INT21H
POPDX
文件主体部分(对所读字符ASCII码进行比较判断并统计字符数):
movCL,41H
LEADI,ARRAY
MOVCH,AL
CMPCH,CL;若IF<41H(A),OTHERS++
JBOTHER
CMPCH,5AH;若IF>5AH(Z),跳转继续比较
JAHIGHER2
H1:
CMPCH,CL
JECHAR;若IF=41H(A),CHAR[0]++
JALOOP1;若IF>41H(A),跳L1比较42H(B)
LOOP1:
INCCL
ADDDI,1
JMPH1
HIGHER2:
movCL,61H
LEADI,ARRAY
CMPCH,CL;若IF<61H(A),OTHERS++
JBOTHER
CMPCH,7AH;若IF>7AH(Z),跳转继续比较
JAOTHER
H2:
CMPCH,CL
JECHAR;若IF=61H(a),CHAR[0]++
JALOOP2;若IF>61H(a),跳L02比较62H(b)
LOOP2:
INCCL
ADDDI,1
JMPH2
CHAR:
XORCH,CH
MOVCH,[DI]
INCCH
mov[DI],CH
OTHER:
INCOTHERS;OTHERS++
;比较结束
四、实验截图
2)用递归计算50以内Fibonacci数,以十进制数输出
一、实验目的
通过该实验充分了解递归程序的用法
二、实验内容
三、实验设计内容
循环递归代码段(主要实现递归调用斐波那契函数)
MOVAX,F1;ax=0
ADDAX,F2;ax=1
JCEXIT;若有进位则跳出
MOVBX,F2;bx=1
MOVF1,BX;f1=1
MOVF2,AX;f2=1
CALLOUTPUT;调用output
MOVDL,'';每个数字后的空格
MOVAH,2
INT21H
DECN
JNZLP
EXIT:
MOVAH,4CH
INT21H;返回DOS
输出斐波那契数:
OUTPUT:
MOVBX,10
MOVCX,0
OL1:
MOVDX,0
DIVBX;ax=0,dx=1
ADDDL,'0';加上30h,使数字3变成字符3
PUSHDX
INCCX;CX=0,每次加1
CMPAX,0;比较ax=1和0
JNZOL1
MOVAH,2;字符输出,要输出的字符已经在dl中
OL2:
POPDX
INT21H
LOOPOL2
RET
四、实验结果
3)虚拟平台的模型机实验设计
1、实验目的
1)掌握模型机的基本原理和结构
2)掌握机器指令与微程序的对应关系;
3)掌握机器指令的执行流程;
2、实验设备
74LS181芯片两片,memory6116一片,微程序控制存储器芯片一片,编译器芯片一片,八位同步计数器芯片一片,ALU_G芯片一片,PC_G芯片一片,74LS273芯片若干,输入,输出芯片各一片,选择器芯片若干,连接器芯片若干,灯泡若干,开关若干等。
3、环境
组成原理虚拟实验室采用的是B/S架构,在客户端电脑上的浏览器地址栏中输入正确的地址进行访问即可。
网址为http:
//192.168.1.252/pco/Entry.html。
4、实验原理
图1模型机示意图
图1中所示模型机包括运算器、存储器、微控器、输入设备、输出设备以及寄存器。
这些部件的动作控制信号都有微控器根据微指令产生。
需要特别说明的是由机器指令构成的程序存放在存储器中,而每条机器指令对应的微程序存储在微控器中的存储器中。
模型机详细原理见附件。
5、实验内容
1)选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中
2)搭建实验流程:
根据原理图1和电路图(见附件),将已选择的组件进行连线。
3)输入机器指令:
选择菜单中的“工具”,再选择“模型机调试”,在指令输入窗口中输入如下指令:
00000000
00010000
00001001
00100000
00001011
00110000
00001011
01000000
00000000
00000001
本实验设计机器指令程序如下:
地址(二进制)
内容(二进制)
助记符
说明
00000000
00000000
INR0
“INPUTDEVICE”->R0
00000001
00010000
ADD[0AH],R0
R0+[0AH]->R0
00000010
00001010
00000011
00100000
STAR0,[0BH]
R0->[0BH]
00000100
00001011
00000101
00110000
OUT[0BH]
[0BH]->LED
00000110
00001011
00000111
01000000
JMP00H
00H->PC
00001000
00000000
00001010
运算数据
自定
00001011
求和结果
4)这里做的是个加法运算,第一个加数已经存入到内存的00001010单元中,第二个加数是需要手工输入的。
在实验运行面板中点击“运行”按钮,选择“输入”芯片,设置输入的数据后,双击连接“输入”芯片的单脉冲,这样第二个加数就设置好了。
5)在实验运行面板中双击连续脉冲,模型机便开始工作,观察各个芯片的状态。
或者在模型机调试窗口中(如图2所示)点击“指令执行”选项卡,在模型机调试窗口中点击“下一时钟”,模型机机执行到下一个时钟,点击“下一微指令”,模型机机执行到下一个微指令,点击“下一指令”,模型机机执行到下一条指令。
观察各个芯片的状态,思考模型机的运行原理。
图2模型机调试窗口
6、具体过程实现
(1)控制器把PC中的指令地址送往地址寄存器AR,并发出读命令。
存储器按给定的地址读出指令,经由存储器数据寄存器MDR送往控制器,保存在指令寄存器IR中。
(2)指令译码器ID对指令寄存器IR中的指令进行译码,分析指令的操作性质,并由控制电路向存储器、运算器等有关部件发出指令所需要的微命令。
(3)当需要由存储器向运算器提供数据时,控制器根据指令的地址部分,形成数据所在的存储单元地址,并送往地址寄存器AR,然后向存储器发出读命令,从存储器中读出的数据经由存储器数据寄存器MDR送往运算器。
(4)当需要由运算器向存储器写入数据时,控制器根据指令的地址部分,形成数据所在的存储单元地址,并送往存储器地址寄存器AR,再将欲写的数据存入存储器数据寄存器MDR,最后向存储器发出写命令,MDR中的数据即被写入由MAR指示地址的存储单元中。
(5)一条指令执行完毕后,控制器就要接着执行下一条指令。
为了把下一条指令从存储器中取出,通常控制器把PC的内容加上一个数值,形成下一条指令的地址,但在遇到“转移”指令时,控制器则把“转移地址”送入PC。
控制器不断重复上述过程的
(1)到(5),每重复一次,就执行了一条指令,直到整个程序执行完毕
7、设计结果截图
虚拟实验室连线截图:
执行第一个指令:
执行第二个指令:
执行第三个指令:
执行第四个指令:
.
执行第五个指令:
执行第六个指令:
六、使用说明
两个程序使用汇编语言在“MasmforWindows集成实验环境”下编写,在MS-DOS模拟平台下运行。
使用情况如详细设计所述。
七、总结与心得体会
为期两周的计算机组成原理与汇编课程设计就结束了,在这段时间呢,完成了诸多实验题目,解决了许多问题,包括计算机组成与那里和汇编语言。
在充实而忙碌的课程设计同时,最重要的还是巩固并进一步学习了像组成原理和汇编这样更接近低层的软硬件知识,而不再是仅仅局限于像C、C++或是Java这样的高级语言开发。
理论学习只是一个学习初期阶段,只有经过了亲身实践操作,才能叫是真正掌握了知识技能。
就像是这个学期的课程设计初期一样,初次开始汇编课设,我对汇编并不是十分了解,只是简简单单懂得几句语言而已或者说只会读懂程序,做几个题而已。
至于如何将它们拼凑到一起组成一个实现一定功能的完整程序,成了我面前巨大的障碍,所以刚开始时,我也是束手无策,毫无头绪。
但是通过对教材的复习,查阅相关文献和网络资料,我慢慢懂得并熟悉了这个过程。
课程设计完了之后,我才真切意识到,低级的东西并不十分简单,恰恰相反,没有艰辛的付出,没有刻苦的努力,任谁也永远不能攻克它。
八、参考文献
[1].PatricJuola.《计算机组成与汇编语言原理》.机械工业出版社
[2].沈美明.《IBM-PC汇编语言程序设计》.清华大学出版社
[3].唐朔飞.《计算机组成原理》.高等教育出版社
九、附录
1、字符统计.asm:
DATASSEGMENT
FNAMEDB'TEST.TXT',0;文件名
ERROR1DB'Filenotfound',07H,0;提示信息
ERROR2DB'Readingerror',07H,0
STRING1DB'Numberof$';各类字符提示信息
STRING2DB':
$'
ARRAYDB26DUP(0);字母
OTHERSDB0;其他
BUFFERDB?
EOFDB035;以#结束;1字节的缓冲区、
DATASENDS
;代码段
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX;置数据段寄存器
;
MOVDX,OFFSETFNAME
MOVAX,3D00H;读打开指定文件
INT21H
JNCOPEN;打开成功,转OPEN
MOVSI,OFFSETERROR1;显示打开不成功提示信息
CALLDMESS
JMPOVER
;
OPEN:
MOVBX,AX;保存文件代号
GO:
CALLREAD_CHAR;从文件中读一个字符
JCREAD_ERROR;如读出错,则转
CMPAL,EOF;读到文件结束符吗?
JZTYPE_OK
CALLPUTCH
JMPGO
READ_ERROR:
MOVSI,OFFSETERROR2
CALLDMESS
;
TYPE_OK:
MOVAH,3EH
INT21H
CALLENDLINE
CALLSHOW
OVER:
MOVAH,07;为了显示
INT21H;为了显示
MOVAH,4CH
INT21H
;
READ_CHARPROC
MOVCX,1
MOVDX,OFFSETBUFFER;置缓冲区地址
MOVAH,3FH;置功能调用号
INT21H;读
JCR2;读出错,转
CMPAX,CX;判文件是否结束
MOVAL,EOF;设文件已经结束,置文件结束符
JBR1;文件确已结束,转
MOVAL,BUFFER;文件未结束,取所读字符
R1:
CLC
R2:
RET
READ_CHARENDP
;
DMESSPROC
DMESS1:
MOVDL,[SI]
INCSI
ORDL,DL
JZDMESS2
MOVAH,2
INT21H
JMPDMESS1
DMESS2:
RET
DMESSENDP
PUTCHPROC
PUSHDX
MOVDL,AL
MOVAH,2
INT21H
POPDX
movCL,41H
LEADI,ARRAY
MOVCH,AL
CMPCH,CL;若IF<41H(A),OTHERS++
JBOTHER
CMPCH,5AH;若IF>5AH(Z),跳转继续比较
JAHIGHER2
H1:
CMPCH,CL
JECHAR;若IF=41H(A),CHAR[0]++
JALOOP1;若IF>41H(A),跳L1比较42H(B)
LOOP1:
INCCL
ADDDI,1
JMPH1
HIGHER2:
movCL,61H
LEADI,ARRAY
CMPCH,CL;若IF<61H(A),OTHERS++
JBOTHER
CMPCH,7AH;若IF>7AH(Z),跳转继续比较
JAOTHER
H2:
CMPCH,CL
JECHAR;若IF=61H(a),CHAR[0]++
JALOOP2;若IF>61H(a),跳L02比较62H(b)
LOOP2:
INCCL
ADDDI,1
JMPH2
CHAR:
XORCH,CH
MOVCH,[DI]
INCCH
mov[DI],CH
OTHER:
INCOTHERS;OTHERS++
;比较结束
RET
PUTCHENDP
SHOWPROC
LEASI,ARRAY
MOVDI,41H
LOOP3:
LEADX,STRING1;字符串的输出Numberof
MOVAH,09H
INT21H
MOVDX,DI
MOVAH,02H
INT21H
LEADX,STRING2;字符串的输出
MOVAH,09H
INT21H
XORAX,AX
MOVAl,[SI];将统计的数字送AX
ADDSI,1
CALLDISPLAY;调用输出两位数字的子程序
CALLENDLINE
INCDI
CMPDI,5BH
JBLOOP3
MOVAH,4CH
INT21H
RET
SHOWENDP
ENDLINEPROCNEAR;控制输出格式,输出回车换行子程序
MOVAH,02H
MOVDL,0AH
;INT21H;输出换行符
MOVAH,02H
MOVDL,0DH
;INT21H;输出回车符
RET
ENDLINEENDP
DISPLAYPROCNEAR;输出两位数字的子程序(输出两位数字为十进制)
MOVBL,10
DIVBL;AX/BL,AL=商,AH=余数
PUSHAX;保存AX中的信息
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H;输出十位数
POPAX;出栈送AX
MOVDL,AH
ADDDL,30H
MOVAH,02H
INT21H;输出个位数
RET
DISPLAY
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 汇编 实验 报告