版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学 号: 微机原理及接口技术上机实习题 目代码转换程序设计学 院自动化学院专 业班 级姓 名指导教师李道远年月日上机实习任务书学生姓名: 专业班级: 指导教师: 李道远 工作单位: 自动化学院 题 目: 代码转换程序设计 初始条件: 完成一个字母或数制之间的转化程序,主程序分别具有3 种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“Q”键退出。1)实现二进制数向十六进制数的转换2)实现十六进制数向二进制数的转换3)实现十六进制数向十进制数的转换要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 设计任务及要求分析(2) 方案比较
2、及认证说明(3) 系统原理阐述(4) 硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6) 调试记录及结果分析(7) 总结(8) 参考资料(9) 附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录摘要11 原理分析12 程序设计流程22.1 程序流程图22.2 设计思路33 程序设计34 运行结果45 心得体会8参考文献9附录. 10摘要计算机处理的信息是往往是多种多样的,如各种进位制的数据,不同语种的文字符号和各种图像信息等。但在计算机内部采用的是二进制计数制,这种进制表达方法对于人们研究分析不是很直观。本
3、次课程设计将通过所学的微机原理知识理论,用汇编语言编写程序,程序设计成一个数据转换系统,给出一个可供选择的菜单,根据界面的信息选择不同的子功能,实现二进制、十进制与十六进制数据之间的相互转换。通过这种转换中数据的流向能够更好的理解计算机的一些基本原理,如计算机数据的存储形式和一些基本的DOS功能调用的基本方法与注意事项。关键词:二进制,十进制,十六进制,数据1 原理分析进位计数制是人们利用符号来计数的方法。一种进位计数制包含一组数码符号和两个基本因素。数码是用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。基是数制所使用的数码个数称为”基”。权是某数制每一位所具有的值称为”权”。
4、十六进制(Hexadecimal) :0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十进制(Decimal) : 0、1、2、3、4、5、6、7、8、9 二进制(Binary) : 0、1 计算机中采用的是二进制计数制,这种进制表达方法对于人们研究分析不是很直观。本次课程设计通过所学的微机原理,用汇编语言编写程序,实现二进制转换成十六进制,十六进制转换成二进制或十进制。二进制转换为十六进制用取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求
5、的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。将十六进制转换为二进制,取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。十进制转换为十六进制整数部分的方法叫做除16取余法,每次将整数部分除以16,余数为该位权上的数,而商继续除以16,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。2 程序设计流程2.1 程序流程图图2-12.2 设计思路运行程序,首先会显示主界
6、面,用户可依据提示选择不同的编号,实现不同的子功能。 1、二进制向十六进制的转换。当用户选择编号1,便选择了这一个子功能。通过判断标识符,程序跳转到标识符所在的位置。根据提示输入一个二进制数,按回车键结束。将二进制数存入内存单元,然后调用输出十六进制的程序,其转换的主要思想是:将内存中存储的2进制数输出为16进制数,需要将内存中的码进行移位运算,将4位2进制数合并为1位16进制数,再循环输出显示。显示完毕后,跳转到主菜单。 2、十六进制向二进制的转换。当用户选择编号2,便选择了这一个子功能。通过判断标识符,程序跳转到标识符所在的位置。根据提示输入一个十六进制数,按回车键结束
7、。将十六进制数存入内存单元,然后调用输出二进制的程序,将内存中存储的2进制数输出为2进制数,只需要将内存中所存储的码循环输出显示出来即可。将转换后的二进制数输出后,跳转到主菜单。 3、十六进制向十进制的转换。当用户选择编号3,便选择了这一个子功能。通过判断标识符,程序跳转到标识符所在的位置。根据提示输入一个十六进制数,按回车键结束。将十六进制数存入内存单元,然后调用输出十进制的程序,转换成十进制的主要思想是,将内存中存储的2进制数输出为10进制数,需要将内存中的码进行除法运算,再循环输出显示。显示完毕后,跳转到主菜单。 4、退出。当用户选择编号q,便选择了退出。通过判断标识
8、符,程序跳转到标识符所在的位置,实现退出。3 程序设计首先定义堆栈段的程序,然后定义数据段,在数据段中有后面程序要用到的数据MENU,mess1到mess6和error,还有数据表TABLE。在定义完堆栈段和数据段后,就是主程序的设计。首先对寄存器AX清零,压栈。读取数据,在屏幕上显示字符串MENU,根据MENU的提示,从键盘输入一字符串。将该字符串减30H后于4进行比较,若小于4,则跳转到DONE程序,否则提示error。在DONE程序中,若输入的数字为1,则立即跳转到L1,进行二进制转换为十六进制;若输入的数字为2,则跳转到L2,十六进制转换为二进制;若为3,则跳转到L3进行十六进制转换为
9、十进制;如果为Q,则退出程序;结束其余字符均提示error。子程序有输入二进制程序、输入十进制程序、输入十六进制程序、输出二进制程序、输出十六进制程序、输出十进制程序、回车键确定程序。输入二进制程序,二进制数从键盘键入之后只需要直接完成从键盘向内存的循环输入即可;输入十六进制程序,十六进制数从键盘键入之后需要进行从1位变为4位的移位运算转换成二进制数,再完成从键盘向内存的循环输入;输出二进制程序,将内存中存储的2进制数输出为2进制数,只需要将内存中所存储的码循环输出显示出来即可;输出十进制程序,将内存中存储的2进制数输出为10进制数,需要将内存中的码进行除法运算,再循环输出显示;输出十六进制程
10、序,将内存中存储的2进制数输出为16进制数,需要将内存中的码进行移位运算,将4位2进制数合并为1位16进制数,再循环输出显示。回车键确定程序,当输入指定数制的数之后,需要依靠此程序来确定输入完成并执行转换过程并输出,完整程序代码见附录。4 运行结果(1)在微机原理实验平台集成开发环境EMU8086上输入该汇编程序,点击EMULATE,再点击运行程序。这时弹出DOS窗口,窗口如图4-1所示。图4-1(2)首先进行二进制转换成十六进制,在窗口中输入1,这时窗口中提示“Please input a Bin2 number:”如图4-2。图4-2输入二进制数1101111,运行显示结果如图4-3所示。
11、图4-3(3)要进行十六进制转换成二进制,在窗口中输入2,这时窗口中提示“Please input a Hex16 number:”.如图4-4。图4-4输入十六进制数FF66,运行显示结果如图4-5所示。图4-5(4)要进行十六进制转换成十进制,在窗口中输入3,这时窗口中提示“Please input a Hex16 number:”.如图4-6。图4-6输入十六进制数00FF,运行显示结果如图4-7所示。图4-7(5)当输入Q的字符时,系统退出,运行显示结果如图4-8所示。图4-8(6)当输入非1、2、3、Q的字符时,系统报错,请求重新输入,运行显示结果如图4-9所示。图4-95 心得体会
12、经过近一个星期的工作,才把课程设计完成。经过这次课程设计,我加深了对汇编语言的理解,也对上课时所说的语法有了深刻的认识。在编写代码的过程中让我充分感受到了不同编程语言之间的差别。对与高级语言来说或许是很简单的一个程序或者只需要调用已有的函数库,可是对于汇编来说却要写上几十行甚至更多的代码。可是更加深刻的了解了寄存器、存储器之间的数据流向,因为每个考虑不周都会导致一大堆的错误出现,常常令人感到一种无力感,想要放弃。 此次课程设计收获颇多,不仅仅是体会到了分析问题,想出解决方案的重要性,我进一步了解到了汇编语言的一些基本的指令,以及各个寄存器的功能及使用的方法。在设计的过程中不断地修改,
13、改进,增强了自己分析问题解决问题的能力;在不断地调试过程中,不断的发现问题,解决问题,通过查资料,翻阅相关的书籍,以及向同学们请教,来逐一的解决各个问题。同时也更深的了解到了寄存器,存储器等的工作原理以及需要注意的一些问题。 在每一个子功能的编写过程中,需要十分的注意到各个变量名的统一化,以便于将其嵌入到主菜单中去,在编写标识符的名字的时候,尽量要做到看名字知其含义,使程序的可读性进一步增高。 在编写代码转换程序的过程中,更是体会到了严谨的重要性,一个小小的错误都可能使整个程序无法运行,再小的错误都不容忽视,再细小的地方都需要注意。不管在做什么,都需要十分的认真和谨慎,将每
14、一步都做到最好。 当设计一步步接近成功,每一个子功能调试正确,都会让自己感到很高兴,从中体会到了编程的乐趣,让自己更有信心,增强了对汇编语言程序设计的兴趣.参考文献【1】微机原理与接口技术,姚燕男、薛钧义编著,高等教育出版社,2004【2】微型机原理与接口技术,刘永华,王成端编著,清华大学出版社,2006【3】微型计算机原理与接口技术,杨立等编著,中国水利水电出版社,2005【4】微机原理应用实践,王萍、周根元等编著,机械工业出版社,2001 附录STACK SEGMENT DB 200 DUP(0)STACK ENDSDATA SEGMENT MENU DB 'Please
15、 Input your Choice:',0dh,0ah db '1: Bin2 ->Hex16',0dh,0ah db '2: Hex16 ->Bin2',0dh,0ah db '3: Hex16 ->Dec10',0dh,0ah db 'Q: Exit. $' mess1 db 'Please input a Bin2 number:$' mess2 db 'Please input a Dec10 number:$' mess3 db 'Please inpu
16、t a Hex16 number:$' mess4 db 'Output Bin is: $' mess5 db 'Output Dec is: $' mess6 db 'Output Hex is: $' error db ' error!please input your choice again$' TABLE DW L0,L1,L2,L3DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DS XOR AX,AX
17、;清零 PUSH AX MOV AX,DATA MOV DS,AX LKS:LEA DX,MENU ;取存储区首址 MOV AH,09H ;显示字符串 INT 21H MOV AH,01H ;从键盘输入字符串 INT 21H CMP AL,51H JZ EXIT SUB AL,30H CMP AL,04h JB DONE ;AL小于04H跳转到DONE LEA DX,error MOV AH,09H ;显示字符串error INT 21H JMP MAINDONE:LEA SI,TABLE MOV AH,0 SHL AX,1 ADD SI,AX JMP SI ;二进制转换成十六进制 L1:CA
18、LL INBIN ;调用输入二进制程序 CALL CRLF CALL OUTHEX ;调用输出十六进制程序 CALL CRLF JMP LKS ;十六进制转换成二进制L2:CALL INHEX ;调用输入十六进制程序CALL CRLFCALL OUTBIN ;调用输出二进制程序CALL CRLFJMP LKS ;十六进制转换成十进制L3:CALL INHEX ;调用输入十六进制程序CALL CRLFCALL OUTDEC ;调用输出十进制程序CALL CRLFJMP LKS L0: LEA DX,error MOV AH,09H ;显示字符串error INT 21H JMP MAINEXIT
19、: MOV AX,4C00H INT 21H MAIN ENDP ;输入二进制程序INBIN PROC LEA DX,MESS1 MOV AH,09H ;显示字符串MESS1 INT 21H MOV BX,0 INBL1:MOV AH,01H ;从键盘输入字符 INT 21H CMP AL,0DH ;比较输入的是否是回车键 JZ INBEXIT ;等于零(回车键)跳转到INBEXIT AND AL,01H ;保留低四位 SHL BX,1 ;逻辑左移一位 OR BL,AL JMP INBL1 INBEXIT:RET INBIN ENDP ; 输入十六进制程序INHEX PROC LEA DX,M
20、ESS3 MOV AH,09H ;显示字符串MESS3 INT 21H MOV BX,0 IHL1:MOV AH,01H ;从键盘输入字符 INT 21H CMP AL,0DH ;比较输入的是否是回车键 JZ IHEXIT ;等于零(回车键)跳转到IHEXIT SUB AL,30H CMP AL,9 JBE IHL2 ;如果AL小等于9跳转到IHL2 SUB AL,7 IHL2:MOV CL,4 SHL BX,CL ;BX逻辑左移CL位 OR BL,AL JMP IHL1 IHEXIT:RET INHEX ENDP;输出二进制程序OUTBIN PROC LEA DX,MESS4 MOV AH,
21、09H ;显示字符串MESS4 INT 21H MOV CX,16 OBL1:ROL BX,1 ;BX循环左移一位 MOV DL,BL AND DL,01H OR DL,30H MOV AH,02H ;字符输出 INT 21H LOOP OBL1 ;循环OBL1 RET OUTBIN ENDP;输出十进制程序OUTDEC PROC LEA DX,MESS5 MOV AH,09H ;显示字符串MESS5 INT 21H PUSH BX ;压栈 MOV AX,BX MOV DX,0 MOV CX,10000 DIV CX ;AX除以CX MOV BX,DX MOV DL,AL OR DL,30H
22、MOV AH,02H INT 21H MOV AX,BX MOV DX,0 MOV CX,1000 DIV CX MOV BX,DX MOV DL,AL OR DL,30H MOV AH,02H INT 21H MOV AX,BX MOV DX,0 MOV CX,100 DIV CX MOV BX,DX MOV DL,AL OR DL,30H MOV AH,02H INT 21H MOV AX,BX MOV CL,10 DIV CL MOV BL,AH MOV DL,AL OR DL,30H MOV AH,02H INT 21H MOV DL,BL OR DL,30H INT 21H POP BX RET OUTDEC ENDP; 输出十六进制程序OUTHEX PROC LEA DX,MESS6 MOV AH,09H ;显示字符串MESS6 INT 21H MOV CX,4OHL1:ROL BX,1 ;循环左移 ROL BX,1 ROL BX,1 ROL BX,1 MOV DL,BL AND DL,0FH ;保留低四位 ADD DL,30H CMP DL,39H JBE OHL2 ADD DL,7 OHL2:MOV AH,02H INT 21H LOOP OHL1 RET OUTHEX ENDP;回车键确定程序;当输入指定数制的数之后,需要依靠此
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年销售部绩效考核方案
- 2026年幼儿园教育教学考核项目
- 2026年夏季育儿知识中班
- 2026年结构工程师考试仿真题精题集
- 2025年工业低碳转型融资效率提升策略
- 2026年学生防火安全知识教育
- 2026年房地产策划师中级考试题集
- 2026年大学生金融法知识竞赛
- 大一摄影基础试题及答案
- 2026年键盘使用基础知识
- 城市轨道交通运营设备维修与更新技术规范 第5部分:通信
- 苏教版科学四年级下册全册试卷
- 家庭户用光伏系统第4部分:验收规范
- 目标探测与识别智慧树知到期末考试答案章节答案2024年北京航空航天大学
- (2024版)人教版中国历史七年级下册单元测试题-第一单元隋唐时期-繁荣与开放的时代
- 施工机具进场验收与维修保养制度模版
- 深度学习与区块链的结合
- GB/T 20138-2023电器设备外壳对外界机械碰撞的防护等级(IK代码)
- 贵州省2023年九年级中考备考语文专题复习:默写题(含解析)
- GB/T 29332-2012半导体器件分立器件第9部分:绝缘栅双极晶体管(IGBT)
- GB/T 24431-2009假肢、矫形器装配机构设施设备
评论
0/150
提交评论