版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与课程设计课程设计
班级:
姓名:
学号:2
课程设计题目:代码转换程序设计
课程名称:微机原理与接口技术
2015年6月
目录
概述............................................1
一设计题目....................................1
二设计内容与要求..............................1
三设计思想......................................1
四程序流程图..................................3
五程序源代码..................................5
六设计过程中遇到的问题及解决方法................14
七设计心得......................................15
代码转换程序设计
概述:
代码转换程序主要是实现字母间的转换和数值之间的转换。其中字母转换是大小写
字母之间的互换,二进制转换则是二进制,十进制,十六进制之间的转换。程序设计成一个
代码转换系统,给出一个可供选择的菜单,根据界面的信息选择不同的子功能。通过做这个
程序,加强汇编语言编程的能力,更好的「解其基本原理,基本的思想,基本的方法以及相
关的注意事项。
一、设计题目
代码转换程序设计
二、设计内容与要求
完成一个字母或数制之间的转化程序,主程序分别具有5种可选择的子功能,按
相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。5种可选择的
子功能分别为:
1)实现小写字母向大写字母的转换
2)实现大写字母向小写字母的转换
3)实现二进制数向十六进制数的转换
4)实现十六进制数向二进制数的转换
5)实现十六进制数向十进制数的转换
三、设计思想
运行程序,首先会显示主界面,用户可依据提示选择不同的编号,实现不同的子功
能。
1、大写字母向小写字母的转换,当用户选择编号a,便选中了这一个子功能。通过
判断标识符,程序跳转到标识符所在的位置。根据提示输入一个大写字母,会有一个判断输
入是否合法的过程,若输入的是非大写字母,则会提示愉入错误,请重新输入,宜到输入正
确为止。通过改变assic码值,实现大写字母向小写字母的转换。显示转换后的字母,然后
跳转到主菜单。
2、小写字母向大写字母的转换。当用户选择编号b,便选择了这一个子功能。通过
判断标识符,程序跳转到标识符所在的位置。根据提示输入一个小与字母,接下来判断具合
法性,若输入的字母是非小写字母,则会提示输入错误,请重新输入,直到输入正确为止。
通过改变assic码值,实现小写字母向大写字母的转换。显示转换后的字母后,跳转到主菜
单。
3、二进制向十六进制的转换。当用户选择编号c,便选择了这一个子功能。通过判
断标识符,程序跳转到标识符所在的位置。根据提示首先输入一个数字表示二进制的位数,
在程序中有变量记录二进制的位数。再根据提示输入一个二进制数。其转换的主要思想是
二进制数的每四位代表十六进制的,通过移位来逐一将四个二进制位数的和转换成十六进制
数保存在一个寄存器中,然后再继续按照每四位一求和的方法保存十六进制数的每一位,直
到二进制数的所有位计算完毕,当对四位二进制数相加完毕后,将保存和的寄存器清零,采
用相对寻址改变十六进制数每一位存放的位置。其中还会对十六进制每一位上的数字进行判
断,若是大于9,则转换成相应的字母,最后采用相对寻址的方式将十六进制的每一位依次
输出。显示完毕后,跳转到主菜单。
4、十六进制向二进制的转换。当用户选择编号d,便选择了这一个子功能。通过判
断标识符,程序跳转到标识符所在的位置。根据提示输入一个十六进制数,此时会进行判断,
判断输入的字符串是否符合十六进制数的要求,若是输入错误,则提示输入错误,重新输入,
直到输入正确为止。其转换的主要思想是通过转换成十进制,然后将十进制数转换成二进制,
在十六讲制转换成十讲制中,按权值展开再相加的思想,在十注制转换成二讲制的中,主要
是采用连除的方法,将每一次的余数保存在堆栈中,直到商为零。最后出栈,根据栈的先进
后出的原则,出栈的顺序就是转换后的二进制数的顺序。将转换后的二进制数输出后,跳转
到主菜单。
5、十六进制向十进制的转换。当用户选择编号e,便选择了这一个子功能。通过判
断标识符,程序跳转到标识符所在的位置。根据提示输入一个十六进制数,此时会进行判断,
若是输入字符串不符合十六进制数的要求,则提示输入错误,重新输入,直到输入正确为止。
十六进制数转换成十进制的士要思想是,按权值展开再相加。首先是将输入的字符转换成相
应的数字,通过设置相应的变量,在最低位上的权值是1,然后依次是16,256……依次进行
累乘,直到十六进制数位数全部循环完毕,将每一位所得的数保存在寄存器中,每进行一次
就实现一次求和运算。最后将转换成的十进制数输出,跳转到主菜单。
6、退出。当用户选择编号q,便选择了退出。通过判断标识符,程序跳转到标识符
所在的位置,实现退出。
四、程序流程图
开始
附图:
P:5ASM>my2
代码转换系统
编号操作
现
本
尢
向
写
写
母
4■母X
CL>
实
小T
现X
向
母A
显
盘
子
一
尊Lf
数x
*
向
现
六
十Z
^
实
六
进~
一T
二
现
向
进
数Z.H
十
六
进Y
十
现
向
十
塞Z.J
e出Y
图1:编译显示的主菜单
菜
骸
号
请
字
一
请
母
小
盼
倒
可a
号
请
编
匚
菜
,
请
母
字
w一
本8
挈ZZ7
请
号
编:
二
请5
数-
二
请
:
1
0
-
后的
十
六进
泠H制数
IV「
|kI
入
的
《
菜
号
|编
月
Ivl罕
入
六
一
・
制
^灌
至
后
制
数
的
进
:
编
一
入
的
号
菜
月H*
进1:0
鼻
入
六
一
制
数
主
数
后
制
十
的
:
带
月
编
入
的
号
单
IV菜18
「:
卜
图2:各个子功能显示
五、程序源代码
includeio32.inc
.data
mlbyte'代码转换系统’,13,10,0;菜单
1.,,1QiA.中」J1?
m2oyLG--------------------------------,ij,iu,u,TT刮我
m3byte'编号操作',13,10,0
mabyte'a实现大写字母向小写字母的转换',13,10,0
mbbyte'b实现小写字母向大写字母的转换',13,10.0
mebyte'c实现二进制向十六进制数的转换',13,10.0
mdbyte'd实现十六进制向二进制数的转换',13,10,0
mebyte'e实现十六进制向十进制数的转换',13,10,0
mqbyte'q退出',13,10,0
merrbyte'愉入错误,请重新输入‘,13,10,0
mmeaubyte'请输入菜单中的编号:',0
m_inputsbyte'请输入一个小写字母:',0
m_inputlbyte'请输入一个大写字母:',0
m_outputlbyte'对应的小写字母:',0
m_outputsbyte'对应的大写字母:',0
m_inputlbyte'请输入二进制位数:',0
m_inputl1byte'请输入二进制数:',0
moutputlbyte'转换后的十六进制数:’,0
m_output2byte'转换后的二进制数:’,0
m_input3byte'请输入一个十六进制数:',0
moutputsbyte'转换后的十进制数:',0
arraybyte8dup(C);用字符串数组保存十六注制数
sumdword?;十进制数变量
lenbyte?;字符串数组的长度
mbyte?
array1byte100dup(0);定义一个数组用米保存初始二进制数
array2byte100dup(0);用来保存转换后的十六法制数
ndword?
kdword?
jdword?
.code
start:
moveax,offsetml;显示菜单中的内容
calldispmsg
moveax,offsetm2
calldispmsg
moveax,offsetm3
calldispmsg
moveax,offsetma
calldispmsg
moveax,offsetmb
calldispmsg
moveax,offsetme
calldispmsg
moveax,offsetmd
calldispmsg
moveax,offsetme
calldispmsg
moveax,offsetmq
cal1dispmsg
meau:moveax,offsetmmeau
calldispmsg;提示输入相应的菜单编号
callreadc;输入对应的编号
calldispcrlf;换行
empal,'a';判断输入
jza;若输入'a',则跳转到标识符'a'
empal,*b*
jzb;若输入'b',则跳转到标识符廿
empal,*c,
jzcc;若输入%',则跳转到标识符'cc
cmpal,'d,
jze;若输入d,则跳转到标识符七'
cmpal,*e*
jze;若输入'e',则跳转到标识符'e'
cmpal,'q'
jzq;若输入'q',则跳转到标识符«
moveax,offsetmerr
calldispmsg;输入错误,提示错误的信息
jmpmeau
;大写字母向小写字母的转换
returna:
moveax,offsetm_err
calldispmsg
a:moveax,offsetm_inputl
calldispmsg;提示输入一个大写的字母
callreadc;获得字母
movbl,al;将输入的内容存储到bl中
cal1dispcrlf;换行
cmpal,'A';判断输入的字母是否合法
jbreturna;如果比'A'小,则跳转到returna标识符
cmpal,*Z,
jareturna;如果比'Z'大,则跳转到returna标识符
calldispc;显示字母
moveax,offsetm_outputl
calldispmsg;输入正确,则提示输出相应的小写字母
addbl.ZOh;实现大写向小写的转换
moval,bl
calldispc;显示转换后的字母
cal]dispcrlf;换行
jmpmeau
;小写字母向大写字母的转换
returnb:
moveax,offsetm_err
calldispmsg
b:moveax,offsetm_inputs
cal1dispmsg;提示输入一个小写字母
cal1readc;获得字母
movbl,al;将输入的内容存储到bl中
calldispcrlf
cmpal,*a,;判断输入合法性
jbreturnb;如果比'a'小,则跳转到relurnb标识符
cmpal,*z'
jareturnb;如果比“大,则跳转到returnb标识符
calldispe;显示字母
moveax,offsetm_outputs
calldispmsg;提示输出相应的大写字母
subb1,20h;实现小写到大写字母的转换
moval,bl
cal1dispe;将转换的字母输出
calldispcrlf;换行
jmpmeau
;二进制向十六进制转换
cc:
movcax,offsetm_inputl
calldispmsg
callreaduid;输入二进制数的位数
movj,eax;保存二进制位数
moveax,offsetminput11;提示输入一进制数
calldispmsg
calldispcrlf
movecx,0;清零,计数器
cl:
callreaduid
movarray1[ecx],al;一位一位的输入
incecx
cmpecx,j
jbcl;低于位数,继续输入
movecx,j
dececx
moveax,1
xorcbx,ebx;记录移动的位数
xoredx,edx:表示四个二讲制位的和
xorcsi,esi;保存十六进制当前的位置
c2:
movn,0;n作为二进制位数是否已达4位的一个标志
movk,0;k作为数值是否已经结束的一个标志
cmparray1[ecx],1
jnzcl1;判断二进制数的某•位是否为1
moveax,1
cmpebx,1
jnzc3;判断数据所在的位数,不相等,转向c3
shleax,1;逻辑左移
jmpc5
c3:cmpebx,2
jnzc4;根据比较来确定移动的位数
shleax,2;逻辑左移
jmpc5
c4
cmpebx,3
jnzc5;根据比较来判断移动的位数
shleax,3;逻辑左移
c5:
addedx,eax;保存和
ell:
cmpebx,3;判断二进制数是否已经有四位
jnzc12
movn,1
cl2:
cmpecx,0;判断数值是否已经全部计算完毕
jnzcl3
movk,1
C13:
movcdi,n
oredi,k;保存n或者k的值
cmpedi,1
jnzcl6
cmpedx,9
jnacl4
subedx,10;edx大于。
addedx,'A';转换成相应的字母
movarray2[esi],dl;将十六进制数保存至数组
jmpcl5
cl4:
addcdx,’0'
movarray2[csi],dl;edx大于等于。小于等于9
clb:
incesi;改变当前十六进制数所在位置
xoredx,edx;清零以便下一次运用
movebx,-1
cl6:
inccbx
dececx
cmpecx,0
jnlc2;小于0,退出循环
moveax,offsetm_outputl
calldispmsg
movecx,esi;16进制数的位数
dececx
ccc:
moval,array2[ecx]
calldispc;输出每一个十六进制数
dececx
cmpecx.0:输出转换后的数据
jnlccc
calldispcrlf
jmpmeau;返回主菜单
;十六进制向二进制的转换
d:
moveax,20
pusheax;将20作为一个判断标识
moveax,sum;将十进制数存入eax中
jmpdl
(11:movedx,0
movcbx,2;除数2
divcbx
movecx,eax;保存商
moveax,edx
pusheax;将余数压入栈
moveax,ecx
cmpeax,0;判断商是否为0
jzd2
jmpdl
d2:movecx,eax;暂存
moveax,offsetm_output2
calldispmsg
moveax,ecx
jmpd3
d3:popeax;出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 计算机中的数制和编码
- 心态决定执行高度
- 羊水栓塞的观察和护理
- 人教版初中政治下册第3章同步练习题及答案
- 班主任与班级管理教学
- 湖南省湘教版高二地理选择性必修第3章综合练习题及答案
- 牛津苏教三下Unit7Where课件之三
- 部编版高中英语高一上册第6单元阅读理解练习题及答案
- 美妆课堂生活妆
- 西班牙留学生活小贴士住宿
- 2026年计算机二级考试试卷(含答案)专项训练
- 国有企业领导人员廉洁从业规定知识测试题及答案
- 2026新教材数学 第四单元 图形的运动 第2节 平移 人教版 五年级上册数学
- 2026年摩托车考试科目一、科目四题库(含详细答案解析)
- 2026年贵州中考物理真题试卷附答案
- 侵袭性真菌感染护理查房
- 《周长与面积的变化》教案(2课时)-2026-2027学年苏教版(新教材)小学数学四年级上册
- 2026新版译林版初中九年级上册英语全册词汇预习清单
- 2026-2030环保行业市场发展分析及发展前景与投资机会研究报告
- 初中语文文学讨论美文荐读鹭湖的忧郁
- 2026年广西壮族自治区高职单招职业适应性测试题库及答案
评论
0/150
提交评论