计算机原理实验报告三.docx
- 文档编号:10601163
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:17
- 大小:72.43KB
计算机原理实验报告三.docx
《计算机原理实验报告三.docx》由会员分享,可在线阅读,更多相关《计算机原理实验报告三.docx(17页珍藏版)》请在冰豆网上搜索。
计算机原理实验报告三
《计算机原理实验报告》-----汇编部分
实验(三)名称:
计算
学生平均成绩实验
一、实验目的:
1.熟练掌握运算类指令及其各状态标志位的影响。
2.熟练掌握宏汇编程序的使用。
3.熟悉BCD码的基本知识及其调整指令的使用方法。
4.熟悉乘除法运算。
5.掌握十进制的运算、设计显示程序运行结果的格式。
二、实验要求:
1.编写程序,求30个分数的平均值,并以十进制值表示将结果显示在屏幕上,显示格式要求如下:
第一行显示:
THETWENTYSCOREARE:
以分号分隔的30个数;
第二行显示:
AVERAGESCOREIS=求得平均值分数。
2.详细写出实验程序说明及相关算法描述。
3.画出相关流程图。
4.给出完整程序及其必要注释说明。
三、编程算法与说明:
说明:
程序中以十进制接收30个分数到三十个字符数组中,求和按每个数组中相应分数分数加权求和并保存到总分SUM中。
算法:
先在数据段定义好相关存储空间,30个分数(SCO),总分(SUM)和平均分(ARE)。
每个分数可能为三位、两位或者一位数,通过数组可判断出位数,便可以按位加权求和加入总分,30个分数可同样处理,每个分数加完时,同时向屏幕输出,可避免二次输出判断。
总分以二进制存于总分中(字单位)。
利用除法指令就可以求得平均分存入ARE。
利用类似上节课实验内容中十进制显示方法显示平均分。
四、实验中相关模块的连接逻辑图(实验电路图):
无
五、程序流程图:
六、程序清单:
见附录
七、实验结果:
八、实验体会
本次实验帮助我们更进一步熟悉了加减乘除等算术运算指令,理解了运算时各个寄存器使用情况以及一些标志寄存器状态的变化情况。
同时也对BCD码有了更深刻的认识,并对其调整指令的应用更加熟悉。
实验结果十进制的输如和输入更加强了显示程序编写能力,巩固了前面两个实验的内容,逐渐熟悉实验过程中的调试和DOC功能调用。
学生签字:
日期:
附录(完整程序):
HOW0MACROB;宏调用
MOVAH,02H
MOVDL,B
INT21H
ENDM
SHOW2MACROA
MOVAH,09H
MOVDX,A
INT21H
ENDM
DATASEGMENT
STR0DB'PLEASEINPUTTHIRTYSCORESARE:
',0AH,0DH,'$'
STR1DB'THETHIRTYSCORESARE:
',0AH,0DH,'$'
STR2DB'AVERAGESCORESIS=','$'
SCO1DB4,?
4DUP(?
);接收输入30个分数,最大长度为4,即输入最大数字为三位数
SCO2DB4,?
4DUP(?
)
SCO3DB4,?
4DUP(?
)
SCO4DB4,?
4DUP(?
)
SCO5DB4,?
4DUP(?
)
SCO6DB4,?
4DUP(?
)
SCO7DB4,?
4DUP(?
)
SCO8DB4,?
4DUP(?
)
SCO9DB4,?
4DUP(?
)
SCO10DB4,?
4DUP(?
)
SCO11DB4,?
4DUP(?
)
SCO12DB4,?
4DUP(?
)
SCO13DB4,?
4DUP(?
)
SCO14DB4,?
4DUP(?
)
SCO15DB4,?
4DUP(?
)
SCO16DB4,?
4DUP(?
)
SCO17DB4,?
4DUP(?
)
SCO18DB4,?
4DUP(?
)
SCO19DB4,?
4DUP(?
)
SCO20DB4,?
4DUP(?
)
SCO21DB4,?
4DUP(?
)
SCO22DB4,?
4DUP(?
)
SCO23DB4,?
4DUP(?
)
SCO24DB4,?
4DUP(?
)
SCO25DB4,?
4DUP(?
)
SCO26DB4,?
4DUP(?
)
SCO27DB4,?
4DUP(?
)
SCO28DB4,?
4DUP(?
)
SCO29DB4,?
4DUP(?
)
SCO30DB4,?
4DUP(?
)
SUMDW0;总分
AREDW00H;平均分
DATAENDS
STACK1SEGMENT
STADB256DUP(0)
TOPEQULENGTHSTA
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
STARTPROCFAR
MOVAX,DATA
MOVDS,AX
MOVAX,STACK1
MOVSS,AX
MOVAX,TOP
MOVSP,AX
MOVBX,OFFSETSTR0;提示输入
SHOW2BX
LEADX,SCO1
MOVAH,10
INT21H;分数1等待输入
SHOW00AH
SHOW00DH
LEADX,SCO2
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO3
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO4
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO5
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO6
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO7
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO8
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO9
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO10
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO11
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO12
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO13
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO14
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO15
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO16
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO17
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO18
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO19
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO20
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO21
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO22
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO23
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO24
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO25
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO26
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO27
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO28
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
LEADX,SCO29
MOVAH,10
INT21H;等待输入
SHOW00AH;换行,回车
SHOW00DH
LEADX,SCO30
MOVAH,10
INT21H;等待输入
SHOW00AH
SHOW00DH
MOVBX,OFFSETSTR1;显示已输入的30个分数同时求总分数
SHOW2BX
MOVDX,0;求总分时用到DX,故先清零
LEABX,SCO1
CALLEXCH;进行30次调用EXCH,调用程序内求总分同时把该分数向屏幕输出
LEABX,SCO2
CALLEXCH
LEABX,SCO3
CALLEXCH
LEABX,SCO4
CALLEXCH
LEABX,SCO5
CALLEXCH
LEABX,SCO6
CALLEXCH
LEABX,SCO7
CALLEXCH
LEABX,SCO8
CALLEXCH
LEABX,SCO9
CALLEXCH
LEABX,SCO10
CALLEXCH
SHOW00AH
SHOW00DH
LEABX,SCO11
CALLEXCH
LEABX,SCO12
CALLEXCH
LEABX,SCO13
CALLEXCH
LEABX,SCO14
CALLEXCH
LEABX,SCO15
CALLEXCH
LEABX,SCO16
CALLEXCH
LEABX,SCO17
CALLEXCH
LEABX,SCO18
CALLEXCH
LEABX,SCO19
CALLEXCH
LEABX,SCO20
CALLEXCH
SHOW00AH
SHOW00DH
LEABX,SCO21
CALLEXCH
LEABX,SCO22
CALLEXCH
LEABX,SCO23
CALLEXCH
LEABX,SCO24
CALLEXCH
LEABX,SCO25
CALLEXCH
LEABX,SCO26
CALLEXCH
LEABX,SCO27
CALLEXCH
LEABX,SCO28
CALLEXCH
LEABX,SCO29
CALLEXCH
LEABX,SCO30
CALLEXCH
SHOW00AH
SHOW00DH
MOVCL,30;求平均分
MOVAX,SUM
DIVCL
ANDAH,00H
MOVARE,AX
MOVBX,OFFSETSTR2
SHOW2BX
CALLDISP;调用显示,显示分均分
SHOW00AH
SHOW00DH
MOVAX,4C00H
INT21H
EXCHPROCNEAR
MOVAL,[BX+1]
CMPAL,3;判断输入的数字是几位数,然后转到相应处
JZT3
CMPAL,2
JZT2
CMPAL,1
JZT1
CMPAL,0
JZNEXT1;如果直接回车,即不输入,则转跳到NEXT1
T3:
;输入3位数时
MOVAL,[BX+2]
SUBAL,30H
MOVCL,100
MULCL
MOVDL,AL;百位ASCII值转换成十六进制送入dl
MOVAL,[BX+3]
SUBAL,30H
MOVCL,10
MULCL
ADDDL,AL;十位ASCII值转换成十六进制加上百位送入dl
MOVAL,[BX+4]
SUBAL,30H
ADDDL,AL;三位数转化成十六进制送入DL
MOVDH,0
ADDSUM,DX;某个分数加完后,加入总分,释放DX,以便下次调用
SHOW0[BX+2];利用确定输入成绩是几位数同时向屏幕输出,减少再判断显示
SHOW0[BX+3]
SHOW0[BX+4]
JMPNEXT1
T2:
MOVAL,[BX+2]
SUBAL,30H
MOVCL,10
MULCL
MOVDL,AL
MOVAL,[BX+3]
SUBAL,30H
ADDDL,AL
MOVDH,0
ADDSUM,DX
SHOW0[BX+2]
SHOW0[BX+3]
JMPNEXT1
T1:
MOVAL,[BX+2]
SUBAL,30H
MOVDL,AL
MOVDH,0
ADDSUM,DX
SHOW0[BX+2]
NEXT1:
SHOW0'';显示空格
SHOW0''
RET
EXCHENDP
DISPPROCNEAR;显示程序
MOVAX,ARE
MOVCL,10
DIVCL
MOVCL,AH
ADDAL,30H
SHOW0AL
ADDCL,30H
SHOW0CL
RET
DISPENDP
STARTENDP
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 原理 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)