汇编代码转换程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理与课程设计课程设计

班级:

姓名:

学号: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,便选择了退出。通过判断标识符,程序跳转到标识符所在的位置,实现退出。

四、程序流程图

其他

a b

c d e q

N

N

N

N

Y

Y

Y

Y

d

e

开 始

主菜单,用户选择子功能

输入有误,重新输入

输入大写字母

判断输入是否合法 输入错误 转换

输出 输入小字母写

判断输入是否合法

输入错误

转换

输出

输入二进制数

判断输入是否合法

输入错误

输出

输入十六进制数

判断输入是否合法

输入错误

转换

转换十进制

判断子功能

输出

转换二进制数

输出

退出

结 束

附图:

图1:编译显示的主菜单

图2:各个子功能显示五、程序源代码

include io32.inc

.data

m1 byte ' 代码转换系统 ',13,10,0 ;菜单 m2 byte '----------------------------------------------',13,10,0 ;分割线 m3 byte ' 编号操作 ',13,10,0

ma byte ' a 实现大写字母向小写字母的转换',13,10,0 mb byte ' b 实现小写字母向大写字母的转换',13,10,0 mc byte ' c 实现二进制向十六进制数的转换',13,10,0 md byte ' d 实现十六进制向二进制数的转换',13,10,0 me byte ' e 实现十六进制向十进制数的转换',13,10,0 mq byte ' q 退出',13,10,0

m_err byte ' 输入错误,请重新输入',13,10,0

m_meau byte '请输入菜单中的编号: ',0

m_inputs byte '请输入一个小写字母: ',0

m_inputl byte '请输入一个大写字母: ',0

m_outputl byte '对应的小写字母: ',0

m_outputs byte '对应的大写字母: ',0

m_input1 byte '请输入二进制位数: ',0

m_input11 byte '请输入二进制数: ',0

m_output1 byte '转换后的十六进制数: ',0

m_output2 byte '转换后的二进制数: ',0

m_input3 byte '请输入一个十六进制数: ',0

m_output3 byte '转换后的十进制数: ',0

array byte 8 dup (0) ;用字符串数组保存十六进制数

sum dword ? ;十进制数变量

len byte ? ;字符串数组的长度

m byte ?

array1 byte 100 dup (0) ;定义一个数组用来保存初始二进制数

array2 byte 100 dup (0) ;用来保存转换后的十六进制数

n dword ?

k dword ?

相关文档
最新文档