微机原理实验五报告模板计算器设计.docx
《微机原理实验五报告模板计算器设计.docx》由会员分享,可在线阅读,更多相关《微机原理实验五报告模板计算器设计.docx(13页珍藏版)》请在冰豆网上搜索。
微机原理实验五报告模板计算器设计
南京工程学院
自动化学院
实验报告
课程名称微机原理及应用B
实验项目名称计算器设计
实验学生班级
实验学生姓名
同组学生姓名
实验时间
实验地点
实验成绩评定
指导教师签字
年月日
本实验类型:
□演示性□验证性■设计性□论证性
一、实验目的和要求
二、实验主要仪器和设备
三、实验原理
四、实验方案设计、实验方法
五、实验步骤
六、实验结果分析
七、实验结论
八、思考题
注:
①1-4项内容为实验预习内容,学生须在进实验室之前完成。
②实验结果须有指导教师签字。
一、实验目的和要求
巩固强化微机系统中断的理解,掌握文本的计算机显示方法、常用汇编语言指令,掌握中断程序设计与DOS功能调用方法。
在此基础上,根据计算器的功能要求,提出计算器的实现原理与实现方法,完成系统框架设计,并完成系统的流程图描述,基于汇编语言设计开发计算器程序。
学会利用流程图描述系统工作过程,能够根据设计要求编制中断服务程序,响应中断实现设计功能,熟练应用开发工具完成汇编程序的设计、调试与分析。
二、实验主要仪器和设备
1.计算机及操作系统
2.EDIT、MASM、LINK与Debug软件
3.伟福实验系统及集成开发调试环境
三、实验原理
1.功能描述
✧系统给出提示“PleaseInputNumberAndOperation:
”,用户键盘输入加数与被加数后按下回车,计算器计算结果并显示。
✧一次计算结束,系统显示“CONTINUE(Y/N?
)”,用户键入“Y”,程序继续,键入“N”,系统退出
2.系统原理
✧系统输入采用DOS中断的01号功能获取键盘输入,系统只接受数字与“+”运算符,字母或其它字符时作为非法字符处理。
✧出错信息、结果等的显示利用DOS中断的02号功能实现,显示字符送DL完成显示。
✧加数、结果与被加数分别分配存储单元分开存储,计算结束,系统取结果存储区内容显示。
✧加运算通过指令带进位的加法指令ADC实现,输入输出按位相加依次相加并存入结果存储段
四、实验方案设计、实验方法
1.实验方案
计算器的实现方法有很多,本设计中主要采用汇编语言中常用的带进位加法指令、十进制调整指令、程序控制指令,加1指令、减1指令、DOS中断指令等实现计算器的设计,设计流程如下图,详细方案与方法略。
2.实验方法
根据所述原理,对照设计流程细化分析设计过程,编制汇编语言程序,而后编译并连接,生成可执行代码,利用MASM调试软件Debug或集成环境WAVE6000跟踪调试可执行程序,观察各变量、寄存器等内容,调试无误后,运行并测试程序。
五、实验步骤
1.代码编制利用wave软件或WINDOWS的EDIT编辑器,创建源文件并编制汇编语言代码,存储为.asm文件
2.设计项目的创建
…
3.设计编译
采用汇编语言工具MASM或WAVE集成环境的编译菜单编译….
4.设计链接…..
5.设计调试…..
6.系统测试…..
六、实验结果与分析
1.汇编语言源程序清单
DATASEGMENT
NUM1DB20DUP(?
)
NUM2DB20DUP(?
)
INFODB'PleaseInputNumber:
'
QINFDB'CONTINUE(Y/N)?
$'
DATAENDS
STACKSEGMENTSTACK
DB20DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
REIN:
MOVSI,OFFSETINFO;Informationdisplay
MOVCX,14H
DISP1:
MOVDL,[SI]
MOVAH,02H
INT21H
INCSI
LOOPDISP1
MOVDL,0AH;Linechangedisplay
MOVAH,02H
INT21H
MOVDL,0DH;returndisplay
INT21H
MOVSI,OFFSETNUM1
MOVCL,00H
A1:
MOVAH,01H;theFirstnumberinputting
INT21H
CMPAL,2BH;+ispressed
JZA22
MOV[SI],AL
INCSI
INCCL
JMPA1
A22:
MOVSI,OFFSETNUM2;thesecondnumberinputting
MOVCH,00H
A23:
MOVAH,01H
INT21H
CMPAL,0DH
JZA2;enterispressed
MOV[SI],AL
INCSI
INCCH
JMPA23
A2:
PUSHCX
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
INT21H
MOVSI,OFFSETNUM1;thefirstnumberisdisplayed
MOVCH,00H
A3:
MOVDL,[SI]
MOVAH,02H
INT21H
INCSI
LOOPA3
MOVDL,2BH
MOVAH,02H
INT21H
MOVSI,OFFSETNUM2;thesecondnumberisdisplayed
POPCX;
PUSHCX;numberprotect
MOVCL,CH
MOVCH,00H
A33:
MOVDL,[SI]
MOVAH,02H
INT21H
INCSI
LOOPA33
POPCX;
PUSHCX;
MOVCH,00H;
MOVSI,OFFSETNUM1
DCON1:
SUBBYTEPTR[SI],30H
INCSI
LOOPDCON1;
POPCX;
PUSHCX;
MOVCL,CH;
MOVCH,00H
MOVSI,OFFSETNUM2
DCON2:
SUBBYTEPTR[SI],30H
INCSI
LOOPDCON2;
POPCX;
PUSHCX;
CMPCL,CH
JGN1GN2
CMPCL,CH
JZCALC
MOVSI,OFFSETNUM1;ADD"0"intheheadofnum2;N2GN1:
N1AD0:
MOVBL,CL
MOVBH,00H
MOVAL,[BX+SI-1]
MOVBL,CH
MOVBH,00H
MOV[BX+SI-1],AL
DECCL
DECCH
CMPCL,00H
JNZN1AD0
POPCX;
PUSHCX
SUBCH,CL
MOVCL,CH
MOVCH,00H
AD0N1:
MOVAL,00H
MOV[SI],AL
INCSI
LOOPAD0N1
JMPCALC
N1GN2:
MOVSI,OFFSETNUM2;ADD"0"intheheadofnum2
POPCX;
PUSHCX;
N2AD0:
MOVBL,CH
MOVBH,00H
MOVAL,[BX+SI-1]
MOVBL,CL
MOVBH,00H
MOV[BX+SI-1],AL
DECCH
DECCL
CMPCH,00H
JNZN2AD0
POPCX;
PUSHCX
SUBCL,CH
MOVCH,00H
AD0N2:
MOVAL,00H
MOV[SI],AL
INCSI
LOOPAD0N2
CALC:
POPCX
CMPCL,CH
JGADFUC
XCHGCH,CL
ADFUC:
MOVCH,CL
PUSHCX
MOVCH,00H
CLC
MOVSI,OFFSETNUM1
MOVDI,OFFSETNUM2
ADDSI,CX
ADDDI,CX
DECSI
DECDI
CLC
LCAL:
MOVAL,[SI]
MOVAH,00H
ADCAL,[DI]
AAA
MOV[SI+1],AL
DECSI
DECDI
LOOPLCAL
MOVSI,OFFSETNUM1
MOV[SI],AH
POPCX;
PUSHCX
INCCL
MOVCH,00H
MOVSI,OFFSETNUM1
DCON3:
ADDBYTEPTR[SI],30H;Resultadgsted
INCSI
LOOPDCON3;
MOVDL,3DH
MOVAH,02H
INT21H
POPCX;
PUSHCX;
RSTD:
INCCL
MOVSI,OFFSETNUM1;theresultisdisplayed
MOVCH,00H
CMPBYTEPTR[SI],30H
JZNCRY
MOVDL,[SI]
MOVAH,02H
INT21H
NCRY:
INCSI
DECCL
A34:
MOVDL,[SI]
MOVAH,02H
INT21H
INCSI
LOOPA34
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH;returndisplay
INT21H
MOVDX,OFFSETQINF
MOVAH,09H
INT21H
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH;returndisplay
INT21H
MOVAH,01H
INT21H
CMPAL,'N'
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH;returndisplay
INT21H
JZOVER
JMPSTART
OVER:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.系统调试
调试窗口如下图
采用WAVE集成工具调试,利用单步指令F8、跟踪指令F7、执行到断点指令CTRL+F9、断点设置指令CTRL+F8等调试软件,利用观察窗查看寄存器值等内容,考察程序执行状况与各段结果。
3.系统测试
系统测试结构如下图,从中可以得出,系统计算结果正确,功能达到设计要求
4.测试分析
通过上述调试测试结果可以得到,采用前文所述原理与设计流程可以实现简易计算器的设计,设计中采用非组合的BCD码表述数据及计算过程,占用计算机资源较多,同时容错性与界面友好性有待提高,同时作为计算器,系统的乘、除、减等运算模块尚待添加。
七、结论
利用WAVE的8086汇编语言集成工具与汇编语言实现了简易计算器的设计,并完成了程序的设计编译、调试、测试等工作,结果表明采用所提出的设计方案与实现方法,能够达到设计目标,设计方案可行
八、思考题
画流程图说明采用基本的加法指令与移位指令如何实现多字节的乘法运算?
多字节的乘法运算可以通过带进位的加法与移位指令实现,原理如下…..