微机原理实验报告Word格式.docx
- 文档编号:5846495
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:24
- 大小:36.02KB
微机原理实验报告Word格式.docx
《微机原理实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告Word格式.docx(24页珍藏版)》请在冰点文库上搜索。
周六下午:
撰写课程设计报告。
三、应收集资料及主要参考文献:
(一)应收集资料
1.有关DOS调用、ASCII码、BCD码、补码的知识;
2.大小写字母、二进制与十六进制、十六进制与十进制的转换方法;
3.8086宏汇编的相关定义、调用。
(二)主要参考文献
1.宋杰,汪志宏,江敏.微机原理与接口技术课程设计[M].北京:
机械工业出版社,2006
2.冯博琴.微型计算机计原理与接口技术[M].北京:
清华大学出版社,2007
3.王玉良.微机原理与接口技术[M].北京:
北京邮电大学出版社,2000
4.龚尚福.微机原理与接口技术[M].西安:
西安电子科技大学出版社,2008
5.刘锋.微机原理与接口技术[M].北京:
机械工业出版社,2009
四、课程设计摘要(中文):
本实验使用汇编语言设计一个程序,实现大小写字母、二进制与十六进制、十进制与十六进制的转换,要求有输入的例子及出错提示信息,实现从键盘输入-32768~+32767范围十进制正负数,转换成4位十六进制有符号补码显示出来。
由于本实验要实现的功能较多,如果放在一个程序一面编写比较直观,但会很复杂,不容易检查错误,所以用了模块法,用子程序实现各个功能,再通过调用连接起来。
本实验难点在于“实现从键盘输入-32768~+32767范围十进制正负数,转换成4位十六进制有符号补码显示出来”,这样涉及到把十进制转换成十六进制,判断正负,判断是否溢出,求负数补码等。
五、课程设计摘要(英文):
Thisexperimentusestheassemblylanguagedesignaprogram,andrealizethecaseletters,binaryandhex,decimalandhexconversion,Requirethatithastheinputexampleanderrormessage,realizedfromthekeyboardinput-32768~+32767ofdecimal,changeitintofourhexsignsshowcomplement.
Astheexperimenttoachievealotoffunction,ifwewriteitonthesideofaprogram,itwillbequiteintuitive,however,itwillalsobeverycomplex,andnoteasytocheckforerrors,sowechoosetouseamodularapproach,usingasubroutinetoachievevariousfunctions,intheendweconnectthosemodules
Thedifficultyoftheexperimentliesinthat"
toinputadatafromarangeof-32768to+32767positiveandnegativedecimalnumberintoa4-digithexadecimalcodesignedupdisplay"
thiswouldinvolvetoconverthextodecimaltodeterminethepositiveandnegativetodeterminewhetheranoverflow,andsocomplementofnegativenumber.
六、成绩评定:
指导教师评语:
指导教师签字:
200年月日
项目
评价
调查论证
工作量、工作态度
实践能力
分析、解决问题能力
质量
创新
得分
七、答辩记录:
答辩意见及答辩成绩
答辩小组教师(签字):
200年月日
总评成绩:
(教师评分×
75%+答辩成绩×
25%)
课程设计评审标准(指导教师用)
评价内容
具体要求
权重
能独立查阅文献和从事其他调研;
能提出并较好地论述课题的实施方案;
有收集、加工各种信息及获得新知识的能力。
0.1
能正确选择研究(实验)方法,独立进行研究工作。
如装置安装、调试、操作。
0.2
分析解决问题能力
能运用所学知识和技能去发现与解决实际问题;
能正确处理实验数据;
能对课题进行理论分析,得出有价值的结论。
按期圆满完成规定的任务,工作量饱满,难度较大,工作努力,遵守纪律;
工作作风严谨务实。
综述简练完整,有见解;
立论正确,论述充分,结论严谨合理;
实验正确,分析处理科学;
文字通顺,技术用语准确,符号统一,编号齐全,书写工整规范,图表完备、整洁、正确;
论文结果有应用价值。
工作中有创新意识;
对前人工作有改进或独特见解。
代码转换程序设计说明书
1、方案论证
(1)大小写字母、二进制与十六进制、十六进制与十进制的转换方法
大小写字母转换方法:
小写字母的ASC码比大写字母的ASC码大20H,因此,大写转小写就是将大写字母的ASC码加20H,反之,将小写字母的ASC码减20H。
二进制与十六进制:
在数据段中定义一个长为16字节的空间用于存储输入的二进制数,每一位二进制数占一个字节,在输入二进制的时候,用一个指针DI指向定义的段DATA1,每输入一位二进制数,DI就加一。
当输入结束时,DI指向存储二进制最低位的位置。
再用另外一个指针SI指向段DATA1。
在取数时,将所取的数减30H,将它由ASC码变成真正的二进制。
首先二进制数最后一位取数,如果该数是1,就将DL加1。
DI减1,指向倒数第二位,如果倒数第二位是1,将DL加2。
DI减1,再取倒数第三位,如果取得的数是1,DL就加4。
DI减1,取倒数第四位,如果取得1,DL就加8。
这样就将二进制的第四位求和,DL再加30H,与39H比较,如果小于39H,就将DL入栈。
如果大于39H,再将DL加07H,然后将其入栈。
就这样向前取数,每四位像前面一样求和、入栈。
每次取数后,DI减1,比较SI和DI,如果两者相等,表示数已取完,直接进入入栈操作。
就这样每四位求和、转换、入栈,就将每四位作为一体转换为一位十六进制数。
由于低位先入栈,所以每出栈一位并显示,最后得到的十六进制也是从高到低的。
十六进制与十进制:
(1)输入一位十六进制数,将它由ASC码转换为二进制,将它赋给BX。
(2)再输入第二位十六进制数,转换为二进制后,将它赋给AX,BX向左移四位,执行语句“ADDBX,AX”。
(3)依次输入第三位十六进制数,转为二进制后将它赋给AX,重复第二步后面的操作。
(4)最后输入第四位十六进制数,重复第二步操作,最后得到的是这个四位十六进制数的求和。
(5)利用这个和除10000得到十进制数的万位,并显示万位。
余数在除以1000,得到千位并显示。
余数在除100,得到并显示百位。
余数除10,得到并显示十位。
最后的余数就是个位,显示个位。
这样一个四位十六进制数就转换为十进制数。
(2)宏汇编程序设计要点
要点包括:
1.汇编语言源程序格式——(段定义、数据变量定义、过程定义、汇编程序功能及汇编语言源程序上机过程)
2.基本汇编语言程序设计技法——(应用汇编语言实现的顺序程序设计、分支程序设计、循环程序设计)
2、程序设计
(1)总体设计
设计分析与思路说明
将转换操作都写成一个个模块,整个程序由若干个模块组成,zcx为主模块,调用模块1和模块6。
模块1又调用模块2、3、4和5四个模块,其中:
模块2实现小写字母向大写字母的转换
模块3实现大写字母向小写字母的转换
模块4实现二进制数向十六进制数的转换
模块5实现十进制向十六进制数的转换
模块6实现十六进制数向十进制数的转换
总体框图(框图中每一个模块的功能说明)
(2)程序设计
流程图:
程序代码及注释:
模块ZCX;
;
FILENAME:
CZX.ASM
内容:
代码转换
EXTRNMAIN:
FAR,CHANGE5:
FAR
STACKSEGMENTPARAPUBLIC'
STACK'
DB200DUP(0)
STACKENDS
DATASEGMENT
*****主程序中的提示信息*****
STR1DB0AH,0DH,'
********************************************$'
STR2DB0AH,0DH,'
****$'
STR3DB0AH,0DH,'
**WELCOMEYOU!
**$'
STR4DB0AH,0DH,'
STR5DB0AH,0DH,'
**THISISPROGRAMMEOFSHUZHIZHUANGHUAN**$'
STR6DB0AH,0DH,'
STR7DB0AH,0DH,'
**PRESSbTOBEGINEXCHANGE!
STR8DB0AH,0DH,'
**PRESSqTOEXIT!
STR9DB0AH,0DH,'
STR10DB0AH,0DH,'
STR11DB0AH,0DH,'
INPUTERROR,PLEASEREPESS!
'
'
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
DISPMACROM;
宏定义
LEADX,M
MOVAH,9
INT21H
ENDM
DISPSTR1;
disp宏调用
DISPSTR3
DISPSTR4
DISPSTR5
DISPSTR6
DISPSTR7
DISPSTR8
DISPSTR9
DISPSTR10
LOP:
MOVAH,8
CMPAL,'
b'
;
输入小写b则继续否则提示出错
JZLTOL
q'
;
输入小写q则退出
JZEXIT
DISPSTR11
JMPLOP
LTOL:
CALLMAIN
CALLCHANGE5
JMPstart
EXIT:
MOVAH,4CH
CODEENDS
ENDSTART
模块一;
1.ASM调用其他程序的main程序
PUBLICINFO1,INFO2,BUFA,BUFB,BUF,MAIN,INFO0,INFO3
EXTRNCHANGE1:
FAR,CHANGE2:
FAR,CHANGE3:
FAR,CHANGE4:
DATASEGMENT
INFO0DB0AH,0DH,'
THISISTHECHANGEOFLETTERTOLETER:
INFO1DB0AH,0DH,'
PLEASEINPUTANUMBER:
INFO2DB0AH,0DH,'
OUTPUTSTRING:
BUFADB81
DB?
DB80DUP(?
)
BUFBDB80DUP(?
INFO3DB0AH,0DH,'
THISISTHECHANGEOFDIGITALTODIGITAL:
0AH,0DH,'
BUFDB0DH,0AH,'
THENUMBERIS:
0100101010001111B'
THERESULTIS:
INFO4DB0AH,0DH,'
THISISTHECHANGEFROMDECIMALTOHEXNNUMBER:
INFO5DB0AH,0DH,'
FOREXAMPLE255DWILLBECHANGEDINTOFFH:
INFO6DB0AH,0DH,'
INFO7DB0AH,0DH,'
INPUTERROR!
:
DATAENDS
STACKSEGMENTSTACK
DB200DUP(?
STACKENDS
MAINPROCFAR
ASSUMEDS:
DATA,CS:
CODE,SS:
MOVAX,DATA
DISPMACROM
CALLCHANGE1;
调用,小写转大写
CALLCHANGE2;
调用大写转小写
DISPINFO3
DISPBUF
CALLCHANGE3;
调用显示4a8f的子程序
CALLCHANGE4;
调用把十进制转换成十六进制的子程序
RET
MAINENDP
END
模块二:
2.ASM;
小写转大写程序
EXTRNINFO1:
BYTE,INFO2:
BYTE,BUFA:
BYTE,BUFB:
BYTE,INFO0:
BYTE
PUBLICCHANGE1
ASSUMECS:
CODE
LOWTOHIGHPROCNEAR;
定义子程序,段内调用near
CMPAL,'
a'
判断,在a-z之间则转换成相应大写
JBSTOP
z'
JASTOP
SUBAL,20H
STOP:
RET
LOWTOHIGHENDP
CHANGE1PROCFAR
LEADX,INFO0;
提示输入
MOVAH,9
INT21H
LEADX,INFO1
LEADX,BUFA
MOVAH,10
LEASI,BUFA+1;
指针指向实际输入个数单元
LEADI,BUFB
MOVCH,0
MOVCL,[SI]
ADDSI,1
NEXT:
MOVAL,[SI]
CALLLOWTOHIGH
MOV[DI],AL
INCSI
INCDI
LOOPNEXT;
循环,依次把小写字母转换成大写字母
MOVBYTEPTR[DI],'
LEADX,INFO2
LEADX,BUFB;
显示转换后的字符串
CHANGE1ENDP
END
模块三:
3.ASM;
与2模块相似
PUBLICCHANGE2
HIGHTOLOWPROCNEAR
A'
JBSTOP
Z'
JASTOP
ADDAL,20H
STOP:
HIGHTOLOWENDP
CHANGE2PROCFAR
LEADX,INFO1
LEADX,BUFA
MOVAH,10
LEASI,BUFA+1
LEADI,BUFB
MOVCH,0
MOVCL,[SI]
CALLHIGHTOLOW
LOOPNEXT
MOVBYTEPTR[DI],'
LEADX,BUFB
CHANGE2ENDP
模块四:
4.ASM本模块仅显示固定的一个四位十六进制数
EXTRNBUF:
BYTE,INFO3:
PUBLICCHANGE3
CHANGE3PROCFAR
SUBAX,AX
MOVCH,4
MOVCL,4
MOVBX,4A8FH
ROTATE:
ROLBX,CL
MOVAL,BL
ANDAL,0FH
ADDAL,30H
CMPAL,3AH
JLPRINTIT
ADDAL,7H
PRINTIT:
MOVDL,AL
MOVAH,2
DECCH
JNZROTATE;
四次循环把十六进制数依次变成ASCLL码
MOVDL,'
H'
MOVAH,2
CHANGE3ENDP
END
模块五:
5.ASM
EXTRNINFO4:
BYTE,INFO5:
BYTE,INFO6:
BYTE,INFO7:
PUBLICCHANGE4
BUF1DB0AH,0DH,'
PLEASEINPUTNumber,Forexample:
255:
提示部分
BUF2DB0AH,0DH,'
INPUTERROR!
BUF3DB0AH,0DH,'
Theresuleis:
CODESEGMENT
CHANGE4PROCFAR
ASSUMECS:
DATA
CALLDEC2BIN
CALLCRLF;
调用子程序,把十进制转换成二进制
CALLBIN2HEX;
二进制转换成十六进制程序
CALLCRLF;
回车换行程序
DEC2BINPROCNEAR
MOVDS,AX
LEADX,BUF1;
MOVAH,9
INT21H
LEADX,BUF3;
输出结果显示
XORBX,BX
NEWCHAR:
MOVAH,1
INT21H
SUBAL,30H;
输入的数字的ASCLL码与30h比较,在0-9内则继续
JLEXIT
CMPAL,9
JGEXIT
CBW
XCHGAX,BX;
把AX里面数值放到BX里面
MOVCX,10;
数值高位乘以10
MULCX
XCHGAX,BX
ADDBX,AX;
高位加地位,再放在BX中
JMPNEWCHAR;
依次循环把十进制转换成二进制
EXIT:
RET
DEC2BINENDP;
BIN2HEXPROCNEAR
MOVCH,4;
设置数据的位数
MOVCL,4;
设置移位次数
ROLBX,CL;
把第四位送到高四位
MOVAL,BL
ANDAL,0FH;
屏蔽高四位,结果是把BX最高的四位转换成十六进制数
ADDAL,30H
CMPAL,3AH
JLPRINTIT;
是0---9
ADDAL,07H;
是A_F
MOVDL,AL
MOVAH,2
INT21H
DECCH
JNEROTATE
BIN2HEXENDP
CRLFPROCNEAR
MOVDL,0DH;
回车
MOVDL,0AH;
换行
CRLFENDP
CHANGE4ENDP
模块六:
6.ASM把十六进制数转换成十进制数
PUBLICCHANGE5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 报告