1、微机原理与接口技术课程设计(学年论文)说明书课题名称: 代码转换程序设计(A3-2) 学生学号: 专业班级: 学生姓名: 学生成绩: 指导教师: 陈 裕 国 课题工作时间: 2011-6-13 至 2011-6-18 武汉工程大学教务处 制2填写说明:1. 一、二、三项由指导教师在课程设计(学年论文)开始前填写并交由学生保管;2. 四、五两项由学生在完成课程设计后填写,并将此表与课程设计一同装订成册交给指导教师;3. 成绩评定由指导教师按评定标准评分。4. 此表格填写好后与正文一同装订成册。3一、课程设计任务和基本要求:(一) 设计任务使用汇编语言设计一个程序,实现大小写字母、二进制与十六进制
2、、十六进制与十进制的转换。1. 有提示从键盘输入,在提示中最好给一个输入的例子;2. 输入错误或者输入其他字符,有提示输入错误的信息显示;3. 能够多次输入和显示结果。4. 实现从键盘输入 16 位二进制数,转换成 4 位十六进制数显示出来。(二) 基本要求1. 有程序设计的分析、思路说明;2. 有程序流程框图;3. 程序代码及注释说明;4. 上机实验步骤;5. 程序运行结果的截屏图片。指导教师签字: 教研室主任签字:年 月 日 年 月 日二、进度安排:周一上午:4明确课程设计任务和要求、设计原理。周一下午周三上午: 查看参考资料、完成理论设计(程序代码、原理图等) 。周三下午周五: 上机、实
3、验、调试,完成设计。周六上午: 检查设计结果、提问、答辩。周六下午:撰写课程设计报告。三、应收集资料及主要参考文献:(一)应收集资料1.有关 DOS 调用、ASCII 码、BCD 码的知识;2. 大小写字母、二进制与十六进制、十六进制与十进制的转换方法;3.8086 宏汇编的相关定义、调用。(二)主要参考文献1. 宋杰,汪志宏,江敏.微机原理与接口技术课程设计M.北京:机械工业出版社,20062. 冯博琴.微型计算机计原理与接口技术M.北京:清华大学出版社,20073. 王玉良.微机原理与接口技术M.北京:北京邮电大学出版社,20004. 龚尚福.微机原理与接口技术M.西安:西安电子科技大学出
4、版社,20085. 刘锋.微机原理与接口技术M. 北京:机械工业出版社,2009四、课程设计摘要(中文):本次课程设计的主要目的是利用汇编语言编写一个程序,实现从键盘多次输入和显示结果从而达到大小写字母、二进制与十六进制、十进制与十六进制之间的转换;5并且当输入错误的字符时,会显示错误信息.大小写转换,主要利用小写字母比大小字母大 20H 的关系,将小写字母减 20H就转换为大写字母,将大写字母加 20H 就转换为小写字母 ;二进制、十进制以及 16 进制,主要利用 0 到 9 的数值等于相应 ASCALL 码减 30H,而 A 到 F 的数值等于相应ASCALL 码减 37H,这样即可利用移
5、位,将键盘输入的值以二进制形式存储在寄存器中,除十取余取整等方法实现其相互转换。通过这次课程设计,我们了解了宏汇编指令的特点,DOS 功能调用的用法,加深了对程序进行汇编的理解,进一步掌握了 8088 系统中一些指令的用法,从而加深了对课本知识的理解,使我们学以致用,把理论应用于实践.五、课程设计摘要(英文):6六、成绩评定:指导教师评语:指导教师签字:200 年 月 日项目 评价 项目 评价调查论证实践能力工作量、工作态度质量分析、解决问题能力创新得分7七、答辩记录:答辩意见及答辩成绩答辩小组教师(签字): 200 年 月 日总评成绩:(教师评分75%+答辩成绩25% )课程设计评审标准(指
6、导教师用)评价内容 具 体 要 求 权重调查论证 能独立查阅文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获得新知识的能力。0.18实践能力 能正确选择研究(实验)方法,独立进行研究工作。如装置安装、调试、操作。0.2分析解决问题能力能运用所学知识和技能去发现与解决实际问题;能正确处理实验数据;能对课题进行理论分析,得出有价值的结论。0.2工作量、工作态度按期圆满完成规定的任务,工作量饱满,难度较大,工作努力,遵守纪律;工作作风严谨务实。0.2质量 综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学;文字通顺,技术用语准确,符号统一,编
7、号齐全,书写工整规范,图表完备、整洁、正确;论文结果有应用价值。0.2创新 工作中有创新意识;对前人工作有改进或独特见解。 0.19代码转换程序设计说明书1、 方案论证(1) 大小写字母、二进制与十六进制、十六进制与十进制的转换方法在计算机系统中有多种数制和编码,常用的有二进制,八进制以及 16 进制。这些数制和编码虽然在储存形式上各有差异,但彼此也相互联系。大小写转换,主要利用小写字母比大小字母大 20H 的关系,将小写字母减 20H 就转换为大写字母,将大写字母加 20H 就转换为小写字母。二进制,十进制以及 16 进制,主要利用 0 到 9 的数值等于相应 ASCALL 码减30H,而
8、A 到 F 的数值等于相应 ASCALL 码减 37H,这样即可利用移位,除十取余取整等方法实现其相互转换。(2) 宏汇编程序设计要点宏 是 源 程 序 中 的 一 段 有 独 立 功 能 的 程 序 代 码 。 宏 指 令 , 用 户 自 定 义 的 指 令 。 编程 序 时 候 , 将 多 次 使 用 的 功 能 用 一 条 宏 指 令 来 代 替 。 汇 编 包 括 指 令 , 伪 指 令 , 宏指 令 。 前 两 个 都 是 规 定 的 , 最 后 一 个 是 自 己 设 计 的 。 好 处 是 用 起 来 方 便 定 义 ,但 是 要 先 定 义 , 后 调 用 , 其 优 点 是
9、可 以 随 时 随 地 的 调 用 宏汇编程序。2、 程序设计(1) 总体设计 对“实现从键盘输入 16 位二进制数,转换成 4 位十六进制数显示出来。”的分析处理。首先将键盘输入的二进制数以二进制形式储存起来:每次输入,将其 ASCALL 码值将减去 30H,然后左移一位,在然后与下个输入的减 30H 的数相加,这样就将键盘输入的值以二进制形式储存在寄存器中.二进制转换为 16 进制数输出:用循环指令左移四位 ,取出最低 4 位,利用 16 进制所对应的 ASCALL 码值比其本身大 30H 或 37H 的关系 ,将低位转换成对应的 ASCALL 码值,再调用 DOS 系统显示字符功能,将转
10、换后的字符显示出来 ,如此循环四次即可.程序总流程图:10(2)程序设计二进制转十六进制流程图:主 程 序开 始 B还是 退 出 Q?退 出 B开 始主 程 序 1子 程 序 2:小 写 转 大 写显 示 提 示 信 息与 转 换 例 子输 入 字 符是 小 写字 母 吗 ?ASCL码减 20H输 出 转换 结 果YN显 示 输入 错 误子 程 序 3:大 写 转 小 写显 示 提 示 信 息与 转 换 例 子输 入 字 符是 大 写字 母 吗 ?ASCL码加 20H输 出 转换 结 果YN显 示 输入 错 误子 程 序 4:2进 制 转 16进 制显 示 提 示 信 息与 转 换 例 子 子
11、 程 序 7:2进 制 转 16进 制显 示 提示 信 息输 入 字 符是 2进制 数 吗 ?输 出 转换 结 果YN显 示 输入 错 误子 程 序 5:16进 制 转 2进 制显 示 提 示 信 息与 转 换 例 子输 入 字 符是 16进 制数 吗 ?输 出 转换 结 果 N显 示 输入 错 误Y 子 程 序 616转 0进 制显 示 提 示 信 息与 转 换 例 子输 入 字 符是 16进 制数 吗 ?输 出 转换 结 果 N显 示 输入 错 误Y主 程 序开 始 还是 退 出退 出 开 始主 程 序子 程 序小 写 转 大 写显 示 提 示 信 息与 转 换 例 子输 入 字 符是 小
12、 写字 母 吗 码减输 出 转换 结 果 显 示 输入 错 误子 程 序大 写 转 小 写显 示 提 示 信 息与 转 换 例 子输 入 字 符是 大 写字 母 吗 码加输 出 转换 结 果 显 示 输入 错 误子 程 序进 制 转 进 制显 示 提 示 信 息与 转 换 例 子 子 程 序进 制 转 进 制显 示 提示 信 息输 入 字 符是 进制 数 吗输 出 转换 结 果 显 示 输入 错 误子 程 序进 制 转 进 制显 示 提 示 信 息与 转 换 例 子输 入 字 符是 进 制数 吗输 出 转换 结 果 显 示 输入 错 误 子 程 序转 进 制显 示 提 示 信 息与 转 换 例
13、 子输 入 字 符是 进 制数 吗输 出 转换 结 果 显 示 输入 错 误主 程 序开 始 还是 退 出退 出 开 始主 程 序子 程 序小 写 转 大 写显 示 提 示 信 息与 转 换 例 子输 入 字 符是 小 写字 母 吗 码减输 出 转换 结 果 显 示 输入 错 误子 程 序大 写 转 小 写显 示 提 示 信 息与 转 换 例 子输 入 字 符是 大 写字 母 吗 码加输 出 转换 结 果 显 示 输入 错 误子 程 序进 制 转 进 制显 示 提 示 信 息与 转 换 例 子 子 程 序进 制 转 进 制显 示 提示 信 息输 入 字 符是 进制 数 吗输 出 转换 结 果
14、显 示 输入 错 误子 程 序进 制 转 进 制显 示 提 示 信 息与 转 换 例 子输 入 字 符是 进 制数 吗输 出 转换 结 果 显 示 输入 错 误 子 程 序转 进 制显 示 提 示 信 息与 转 换 例 子输 入 字 符是 进 制数 吗输 出 转换 结 果 显 示 输入 错 误11程序代码及注释:;7.ASMPUBLIC XPEXTRN INFO4:BYTE,INFO1:BYTE,INFO2:BYTECODE SEGMENTXP PROC FARASSUME CS:CODE CALL DEC2BIN ;调用将键盘输入的 ASCALL 值转换为二进制数LEA DX,INFO2MO
15、V AH,9INT 21H ;显示提示信息CALL BIN2HEX;调用将储存的二进制转换为 16 进制函数MOV DL,HMOV AH,2INT 21HRETCAL: MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H 子 程 序 7:2进 制 转 16进 制显 示 提示 信 息输 入 字 符是 2进制 数 吗 ?将 输 入 的 值 以二 进 制 形式 储 存 N显 示 输入 错 误每 次 左 移 四 位转 换 为 对 应 16进 制 数显 示 输 出显 示 结 果Y12LEA DX,INFO4MOV AH,9INT 21H;输入非
16、二进制数,显示错误DEC2BIN PROC NEAR LEA DX,INFO1MOV AH,9INT 21H;显示提示信息XOR BX,BX ;BX 清零NEWCHAR: MOV AH,1 INT 21H ;键盘输入 ,存放在 AL 中CMP AL,0DHJE RE;如果输入回车键 ,键盘输入结束SUB AL,30H JL CAL CMP AL,1 JG CAL ;输入为非二进制数 ,显示错误并退出CBW XCHG AX,BX MOV CX,2 MUL CXXCHG AX,BX ADD BX,AX JMP NEWCHAR;将键盘输入的制转换为二进制数,存放在 BX 中,并且每输入一个值,先将
17、BX 左移一位再相加.RE: MOV DL,BMOV AH,2INT 21HRET DEC2BIN ENDP BIN2HEX PROC NEAR MOV CH,4 ROTATE: MOV CL,4 ROLBX,CL ;BX 每左移 4 位输出,四位二进制表示一位十六13进制MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ;结果若为 0 到 9 的数,则加 30H 后直接输出ADD AL,07H ;结果若为 A 到 F 的数 ,则加 30H 后再加 07H 直接输出PRINTIT:MOV DL,AL MOV AH,2 INT 21H D
18、EC CH JNE ROTATE RET BIN2HEX ENDP CRLF PROC NEAR MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H ;回车换行RET CRLF ENDP XP ENDPCODE ENDSEND3、 程序调试步骤与结果(1) 编辑源程序(2) 汇编源程序14(3) 连接程序(4) 在 TD 中调试程序15(5)程序运行结果结果说明:当输入小写字母(如 a)时,就转换成相应的大写字母(如 A) ,反之亦然;当如入二进制(如 1011B) , ,就转换成相应的十六进数(000BH) ,反之亦然;如果输入的字母或数字不符合要求,就会显示“INPUT ERROR”4、 结论11