二进制数和十六进制数之间转换
北 华 航 天 工 业 学 院
课程设计
(论文)
设计课题:二进制数和十六进制数之间转换 专业班级: 3
学生姓名:
指导教师:
设计时间:
1
北华航天工业学院电子工程系
微型计算机原理与接口技术 课程设计任务书 姓 名: 专 业: 电子信息工程 班 级: 指导教师: 职 称: 讲师 课程设计题目:
代码转换(二进制数和十六进制数之间转换)
已知技术参数和设计要求:
1(编写一个程序,要求从键盘上连续输入二进制或十六进制字符,然后
在屏幕上自动显示出二---十六进制之间转换的结果。
2(利用ROL和RCL循环指令以及十六进制数所对应的ASCII码比其本
身大30H(0,9)或37H(A,Z)的关系, 将输入数转换成对应的ASCII
码,再调用DOS系统功能调用中的2号(显示字符)功能,将转换后
的字符显示出来。
所需仪器设备:
计算机、MASM软件
成果验收形式:
程序说明,计算机演示,设计报告
参考文献:
微机原理与接口技术
8086实验指导书
十六周:程序编辑,上机运行结果
时间 十七周:验收成果 安排
指导教师: 教研室主任:
年 月 日
2
内 容 摘 要
在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCII码和七段显示码等。这些数制和编码根据其作用的不同,在存储形式上也有差异。在实际应用中,它们也因使用的要求不同而有所差异。在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。还有些代码转换需要根据使用要求通过编程完成。因此,代码转换是非数据处理中最常见的情况。
索引关键词:代码转换 二进制 十六进制 DOS系统
3
目 录
一 概 述……………………………………………………………………4 1-1设计目的……………………………………………………………………4 1-2设计要求……………………………………………………………………4
二
设计与论证……………………………………………………………4 2-1二进制向十六进制的转换…………………………………………………4 2-2十六进制向二进制的转换…………………………………………………4
三 程序分析……………………………………………………………………5
四 程序流图……………………………………………………………………7
五 运行结果……………………………………………………………………10
六 心得体会……………………………………………………………………10
七 参考文献……………………………………………………………………10
4
一、 概述
1. 设计目的
(1)增进对汇编语言的认识,加强汇编语言编辑能力;
(2)掌握汇编语言的中断调用的功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现了对硬件的控制;
(3)了解和掌握汇编语言程序的设计过程,方法和实现,为以后的学习打下良好的基础;
(4)培养分析解决问题的能力;
(5)提高科技论文写作能力。
2设计要求
按屏幕提示要求输入,从屏幕上获得正确结果。
二、方案设计与论证
在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCll码和七段显示码等。这些数制和编码根据其作用的不同,在存储形式上也有差异。在实际应用中,它们也因使用的要求不同而有所差异。在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。还有些代码转换需要根据使用要求通过编程完成。因此,代码转换是非数据处理中最常见的情况。
模块1实现二进制数向十六进制数的转换,用循环左移指令ROL每次移动4位,取出移到最低的4位,利用十六进制数所对应的ASCll码比其本身大30H(0,9)或37H(A,Z)的关系,将低4位转换成对应的ASCll码,再调用DOS系统功能调用中的2号(显示字符)功能,将转换后的字符显示出来。如此循环4次。
模块2实现十六进制数向二进制数的转换,完成此功能需要两个步骤,第一步是十六进制数的输入和对应二进制数的转换。方法是利用DOS系统功能调用中的1号输入字符的功能,接收键盘输入的十六进制数,将其转换成对应的二进制数(若是0,9之间的数,直接屏蔽高4位;若是A,F之间的数,在屏蔽高4位后还要加9)。BX中存放的是二进制数的结果,利用算术左移指令每次将BX左移4位,然后与下一次转换后的数相加。如此循环4次,得到对应的二进制数。第二步是显示转换后的二进制数,方法是利用ROL和RCL指令,从最高位起循环取出每位二进制数,将其转换成对应的ASCll码,调用DOS系统功能调用中的2号(显示字符)功能显示。
5
三 程序分析
DATAS SEGMENT
BUF DB 'PLIEASE ENTER CHARACTERS',0DH,0AH,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START: MOV AH,1
INT 21H
CMP AL,5
JB NEXT2
NEXT: MOV AX,DATAS ;十六进制转为二进制
MOV DS,AX;
LEA DX,BUF
MOV AH,9
9号功能调用,键盘显示 INT 21H ;
MOV CL,4
MOV CH,4
SUB BX,BX ;BX清零
L1: MOV AH,1
INT 21H
MOV AH,0
CMP AL,'A' ;AL与A比较
JB L2 ;低于A则转移到L2子程序
AND AL,0FH ;AL和0F按位与
ADD AL,9 ;AL和9相加,结果送回AL
JMP L3
L2: AND AL,0FH
L3: SHL BX,CL ;将BX逻辑左移4次
ADD BX,AX
DEC CH;将CH-1
JNZ L1
MOV CX,10H
L4: ROL BX,1 ;BX中的值左移1位
MOV DX,BX
AND DX,1H
OR DL,30H ;DL和30H按位或
CMP DL,3AH
JB DDD
6
ADD DL,07H
DDD: MOV AH,2 ;2号功能调用,键盘显示
INT 21H
L4循环 LOOP L4 ;
JMP OOO
NEXT2: MOV AX,DATAS ;二进制转为十六进制
MOV DS,AX
LEA DX,BUF
MOV AH,9
INT 21H
MOV CX,10H
AX清零 SUB AX,AX ;
SUB DX,DX
L6: MOV AH,1
INT 21H
AND AX,0FH
SHL DX,1
ADD DL,AL
LOOP L6
MOV CH,4
MOV CL,4
LLP: ROL DX,CL
PUSH DX ;入栈
AND DX,0FH
OR DL,30H
CMP DL,3AH
JB DDT
ADD DL,07H
DDT: MOV AH,2
INT 21H
POP DX ;出栈
DEC CH
JNZ LLP
MOV AH,4CH OOO:
INT 21H ;返回DOS
CODES ENDS
END START
7
四、程序流图
开始
键盘输入字母
是 判断输入否大于5
否
调用NEXT2子程序 调用NEXT子程序
结束
8
4,CH4, AX,BX清零 CL
0 键盘输入一个数,AH
AL与OFH按位求与结果送AL之后加9
判断AL是否大于’A’ AL与OFH按位求与结果送AL
是
AH0
BL左移AL位,最高位移入CF
DX与BX求和结果送到DX, CH
减1
判断CH是否等于0
是 否
CX10
BX左移循环移位
、,DXBX
DX与1H按位求与,DL与30H按位求
或
是 判断DL是否大于
否 3AH DL加07H
调用2号功能显示,CX减1
判断CX是否等于0
否 是
9 结束
五、运行结果
六、心得体会
通过这次课程设计,我对汇编语言有了更进一步的认识,加强了我用汇编语言编程的能力,经过努力,我完成了简单的课程设计。
在开始之前,首先复习了一下相关知识,尤其是汇编语言.定下题目,仔细思考了编程思路及所需要的程序
,并上网查阅了类似资料,经历了一周多的时间,最终完成了题目。
这次课设最大的收获就是巩固了所学的知识,并认识到自己的不足之处,在理论学习和运用方面还存在很到不足,以后再学习理论的基础上不断进行实践操作来巩固理论,这是我这次课程设计的最大收获,同时培养了对微机原理这门课的兴趣。
七、参考文献
微型计算机原理与接口技术 张荣标编著 机械工业出版社
10
电子工程系 微机原理与接口技术 课程设计成绩评定
专业: 班级: 学号: 姓名: 课题名称 代码转换(二进制十六进制数之间转换)
已知技术参数和设计要求: 1编写一个程序,要求从键盘上连续输入二进制或十六进制字符,然设后在屏幕上自动显示出二---十六进制之间转换的结果。 计2. 利用ROL和RCL循环指令以及十六进制数所对应的ASCII码比其任本身大30H(0,9)或37H(A,Z)的关系, 将输入数转换成对应的务ASCII码,再调用DOS系统功能调用中的2号(显示字符)功能,将与转换后的字符显示出来。 要 求
指
导
教
师
评
语
建议成绩: 指导教师:
课
程
小
组
评
定
评定成绩: 课程负责人:
年 月 日
11
12