




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课 程 设 计 任 务 书专 业计算机科学与技术班 级姓 名设 计 起 止 日 期设计题目: 代码转换设计任务(主要技术参数):1硬件环境: CPU:1.6GH以上 内存:4GB以上2软件环境: 操作系统:Microsoft Windows xp运行环境:TE.EXE MASM.EXE LINK.EXE DEBUG.EXE3设计任务:本程序分为3个部分,运行程序,首先会显示主界面,用户可依据提示选择不同的编号,实现不同的功能:小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;指导教师评语:成绩: 签字:年 月 日 课程设计说明书 No.15 1 .课程设计的目的
2、本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。2 设计方案论证2.1开发环境软件环境:操作系统:Windows xp 硬件环境:处理器:英特尔 第三代酷睿 i3-3110M 2.40GHz 双核 内存:4GB(三星 DDR3 1333MHz) 主硬盘:希捷 ST500LM012 HN-M500MBB (500GB/5400转/分) 显示器:三星 SEC3649(14 英寸)MASM开发环境:Masm是汇编编译器,是微软公司开发的汇编开发环境,拥有可 视化的开发界面
3、,使开发人员不必再使用DOS环境进行汇编的开发的优点,支持伪指令和宏汇编,最后编译生成obj文件,通过link工具连接成可执行文件exe。使用步骤为:a使用编辑软件TE.EXE进行源程序的编写。 b使用汇编软件MASM.EXE对源程序汇编。 c使用连接软件LINK.EXE对目标文件进行连接。 d使用调试软件DEBUG.EXE对可执行程序进行调试。2.2 总体设计功能本程序分为3个部分,运行程序,首先会显示主界面,用户可依据提示选择不同的编号,实现不同的功能:小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;2.3详细设计功能2.3.1大小写字母间的转换当用户选择编
4、号1,便选择了这一个功能。通过判断标识符,程序跳转到标识符所在的位置。通过改变ASSIC码值,实现大小写字母间的转换。显示转换后的字母,然后跳转到主菜单。2.3.2二进制与十六进制数间的转换当用户选择编号3,便选择了这一个功能。根据提示首先输入一个数字表示二进制的位数,在程序中有变量记录二进制的位数。再根据提示输入一个二进制数。其转换的主要思想是二进制数的每位代表十六进制的,通过移位来逐一将四个二进制位数的和转换成十六进制数保存在一个寄存器中,然后再继续按照每四位一求和的方法保存十六进制数的每一位,直到二进制数的所有位计算完毕,当对四位二进制数相加完毕后,将保存和的寄存器清零,采用相对寻址改变
5、十六进制数每一位存放的位置。其中还会对十六进制每一位上的数字进行判断,若是大于9,则转换成相应的数字,最后采用相对寻址的方式将十六进制的每一位依次输出。显示完毕后,跳转到主菜单。2.3.3退出当用户选择编号q,便选择了退出。通过判断标识符,程序跳转到标识符所在的位置,实现退出。2.4主程序功能显示程序所能执行的四种功能选项以及推出选项,用户可根据给出的选项通过输入其序号来进入各子程序。2.4.1主程序功能流程主程序流程如图1。显示主界面信息调用功能接收键盘输入信息是“q”?是“1”?是“2”?退出YNNNYY实现大小写字母间的转换实现二进制与十六进制间的转换开始输出错误图1 主程序流程图2.4
6、.2大小写字母转换子程序功能该子程序能够实现从键盘读取字符后输出其对应大写或小写字符。大小写字母之间的转换如图2、图3。从键盘读取字符开始是否az之间?NY输出对应字符的大写输出错误结束图2 小写字母向大写字母转换流程图开始从键盘读取字符是否AZ之间?NY输出对应字符的小写输出错误结束图3 大写字母向小写字母转换流程图2.4.3进制转换子程序功能该子程序能实现二进制与十进制之间的转换,二进制与十六进制之间的转换以及十进制和十六进制之间的转换。 二进制向十六进制数的转换如图4。开始从键盘读取字符二进制数?NY输出错误结束输出对应的十六进制数图4 二进制向十六进制数的转换流程图3. 设计结果与分析
7、3.1调试程序启动DEBUG:C>DEBUG EXAM1.EXEA汇编U反汇编:T单步执行:G执行:3.2运行程序3.2.1进入主程序段显示提示信息,程序功能实现如图5所示: 图5 程序主界面图3.2.2选择编号1进入大小写字母转换子程序,程序功能实现如图6所示:图6大小写字母转换界面图3.2.3选择编号2进入进制转换子程序,程序功能实现如图7所示:图7二进制和十六进制转换界面图3.2.4在运行过程中按“q”键为返回主页面。如图8所示:图8 回到主界面图4. 总结通过本书的学习,我深入的掌握了汇编语言的编程方法、思路和技巧,并对计算机的底层编程有一定认识;还对计算机底层运行程序的机制及计
8、算机的工作原理有了深入的了解。在学汇编的过程中,最重要的就是要掌握汇编语言中的指令的一些基本用法。当然要能够真正的了解其中的内涵,这样在实际的编程中也能够像运用高级语言一样灵活的变通。汇编语言作为一种低级程序设计语言,既然是低级所以应该是最底层的,与计算机内部的结构联系应该联系很密切,而且我在学习中也深刻的了解到了这一点。汇编程序给人感觉最烦的就是好多程序的结果不能直接通过运行EXE文件显示出来,而更多的是经过DEBUG单步调试才能看到其内在变化,看是否正确。汇编程序不像其他的高级语言一样需要编译器,而是直接的就能在记事本上编写,然后进行汇编和连接就可以了。我认为汇编语言本身还是一门很重要的应
9、用技术。首先由于汇编的操作由于跟硬件紧密相关,所以,很多硬件设施的嵌入式编程使用的都是使用的汇编语言,因为汇编语言更直接有效率。现在的数码产品很多,而这些数码产品赖以生存的芯片,主板等,都包含了嵌入式程序,而这些程序中,汇编语言的使用是相当重要的。 通过一段时间的自主学习,我常常上网搜索资料辅助理解,遇到难以理解的问题时也学会自己解决,我想这不仅是知识层面上的提升,更是自己在学习能力上的提升。这样的学习能力将非常有助于我今后的个人能力提高,我会把这种自主学习培养成为习惯,持之以恒下去。5. 参考文献1 王爽 汇编语言M. 第二版. 北京:清华大学出版社,2003:96-1242 李真香,刘红海
10、,赵润林. 汇编语言课程设计案例精编M. 第二版. 2004.4:73-823 仇玉章.32位微型计算机原理与接口技术M.北京:清华大学出版社,2003.5:63-954 朱田,学峰,周豫滨译. 80386/80486编程指南M,第1版北京:电子工业出版社,1994:49-715 龚尚福. 微型计算机汇编语言程序设计M. 第一版. 西安:电子科技大学出版社,2003.7:45-716.附录(源代码) DATAS SEGMENTmenu DB0AH, 0DH, '-'DB0AH, 0DH, 'Please choice action:', 0AH, 0DHDB0A
11、H, 0DH, '1.Letter change' DB0AH, 0DH, '2.Binary to Hexadecimal' DB 0AH, 0DH, 'q.Exit' DB 0AH, 0DH, '-', 0AH, 0DH,'$' STR1 DB 0AH, 0DH, 'Please input a Letter', 0AH, 0DH,'$' STR11 DB 0AH, 0DH, 'The big Letter is:', 0AH, 0DH,'$' S
12、TR12 DB 0AH, 0DH, 'The litte Letter is:', 0AH, 0DH,'$' STR13 DB 0AH, 0DH, 'Please confirm you just inputed is a Letter', 0AH, 0DH,'$' STR2 DB 0AH, 0DH, 'Please input the binary string, Enter to confirm', 0AH, 0DH, '$' STR21 DB 0AH, 0DH, 'The string
13、 Hexadecimal is:', 0AH, 0DH, '$' STR3 DB 0AH, 0DH, 'Please input the Hexadecimal string, Enter to confirm', 0AH, 0DH, '$' STR31 DB 0AH, 0DH, 'change to binary is:', 0AH, 0DH, '$' STR4 DB 0AH, 0DH, 'change to Decimal is:', 0AH, 0DH, '$' DATA
14、S ENDS CODES SEGMENT ASSUME CS: CODES, DS: DATAS;宏定义 字符输入 CHARIN MACRO ;宏定义无参数的字符输入功能 MOV AH, 01H ;系统调用 输入一个字符用于功能选择 INT 21H ;字符默认输入到AL中 ENDM;宏定义 数字输入 数字输入到AL中 NUMIN MACRO CHARIN SUB AL, 48 ENDM;宏定义 字符串输入 STRIN MACRO STRINGIN ;将字符串输入到字符串STRINGIN中 LEA DX, STRINGIN ;将STRINGIN的偏移地址送到DX寄存器 MOV AH, 0AH ;
15、0AH字符串输入功能 INT 21H ;调用系统中断 ENDM;宏定义 字符输出 CHAROUT MACRO OUTCHAR ;宏定义 将字符outchar输出 PUSH AX PUSH DX MOV DL, OUTCHAR MOV AH, 02H ;系统调用 输出字符outchar INT 21H ;调用系统中断 调用过程中会改变AL中的值,故将AX中的值入栈保存 POP DX POP AX ENDM;宏定义 数字输出 NUMOUT MACRO OUTNUM PUSH AX PUSH DX MOV DL, OUTNUM ADD DL, 48 ;将数值转换为对应得数值字符 MOV AH, 02
16、H ;系统调用 输出字符outchar INT 21H ;调用系统中断 调用过程中会改变AL中的值,故将AX中的值入栈保存 POP DX POP AX ENDM;宏定义 字符串输出 STROUT MACRO STRINGOUT ;将字符串STRINGOUT输出 PUSH AX PUSH DX LEA DX, STRINGOUT ;将STRIN的偏移地址送到DX寄存器 MOV AH, 9 ;09H字符串输出功能 INT 21H ;调用系统中断 POP DX POP AX ENDM;宏定义 换行 ENDL MACRO ;宏定义换行 PUSH AX PUSH BX PUSH CX PUSH DX M
17、OV DL, 0AH ;先输出垂直Tab键 MOV AH, 2 INT 21H ;调用系统中断实现输出 MOV DL, 0DH ;再将输出输出调至段首 INT 21H ;调用系统中断 POP DX POP CX POP BX POP AX ENDM;宏定义 以baseNum进制输出AX中的数值 OUTAX MACRO BASENUM ;宏定义换行 PUSH AX PUSH BX PUSH CX PUSH DX MOV BX, BASENUM ;将要转换成的进制存入BX作为除数 CALL OUTAXP ;调用进制输出过程 POP DX POP CX POP BX POP AX ENDM;过程定义
18、以baseNum进制形式输出存放在AX中的数值过程 OUTAXP PROC MOV DX, 0 ;初始化DX配合AX一起进行处罚操作 MOV CX, 0 ;用CX计数取得个余数个数 OUTAXP_CIRCLE: CMP AX, 0 ;判断AX中的值是否为0 JE OUTAXP_NEXT ;是则跳转 DIV BX ;不是则进行除10运算 商保存在AX中 余数保存在DX中 PUSH DX ;将对10取到的余数入栈保存 MOV DX, 0 ;将DX中的余数清空 以便下一步对AX中的数进行除10运算 INC CX ;计数循环取得的余数个数 JMP OUTAXP_CIRCLE OUTAXP_NEXT:
19、;循环输出取得的余数 POP AX CMP AL, 10 ;当余数小于10时,直接将数值输出 JB NOUT ADD AL, 55 ;否则将余数转化为对应的字符10对应字符'A' CHAROUT AL JMP COUT NOUT: NUMOUT AL COUT: LOOP OUTAXP_NEXT RET OUTAXP ENDP;宏定义 以baseNum进制输入数据串到AX中,可输入2-37进制 INAX MACRO BASENUM ;宏定义换行 PUSH BX PUSH CX PUSH DX MOV CX, BASENUM ;将要转换成的进制存入BX作为除数 CALL INAX
20、P ;调用进制输入过程 POP DX POP CX POP BX ENDM;过程定义以baseNum进制形式输出存放在AX中的数值过程 INAXP PROC MOV AX,0 INAXP0: PUSH AX INAXP1: CHARIN ;逐个字符进行输入, 结果存放到AX中 CMP AL, 13 JE INAXE ;当按下Enter键后跳转AX的输出 CMP AL, '0' JB INAXP1 ;当输入字符小于'0'时,跳转inAXp1,跳转重新进行字符输入 CMP AL, '9' JA INAXNEXT1 ;当输入字符大于'9'
21、;时,跳转inAXnext1进一步进行比较 SUB AL, 48 ;当字符在'0'-'9'之间时,将字符转化为对应的数值 JMP INAXNUM ;跳转数值输入 INAXNEXT1: CMP AL, 'A' JB INAXP1 ;当输入字符小于'A'时,跳转重新进行字符输入 CMP AL, 'Z' JA INAXNEXT2 ;当输入字符大于'Z'时,跳转inAXnext2进一步进行比较 SUB AL, 55 ;当字符在'A'-'Z'之间时,将字符转化为对应的数值,并跳
22、转到数值输入 JMP INAXNUM INAXNEXT2: CMP AL, 'a' JB INAXP1 ;当输入字符小于'A'时,跳转重新进行字符输入 CMP AL, 'z' JA INAXP1 ;当输入字符小于'A'时,跳转重新进行字符输入 SUB AL, 87 ;当字符在'a'-'z'之间时,将字符转化为对应的数值,并跳转到数值输入 JMP INAXNUM INAXNUM: MOV BH, 0 ;将数值送到AX中 MOV BL, AL POP AX CMP AX, 0 ;当AX中的数值为0时,跳
23、过乘法操作 JE INAXADD MUL CX ;乘以CX中的进制基数 INAXADD: ADD AX, BX JMP INAXP0 INAXE: POP AX ;将计算得到的数值出栈到AX中 RET INAXP ENDP START: MOV AX, DATAS ;将数据段地址送到AX中 MOV DS, AX ;由AX转送到送到DS P0: STROUT MENU ;字符串输出宏调用 输出menu的提示菜单 CHARIN ;宏调用 字符输入 选择相应功能 CMP AL, '1' JE P1 CMP AL, '2' JE P2 CMP AL, '3' ;JE P3 CMP AL, &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚房产分割与共同债务分担协议
- 甲供材料设备仓储管理及保养合作协议
- 融资租赁担保合同风险评估与风险分担策略
- 生猪鲜蛋菜家禽产业扶贫与购销支持合作协议
- 企业并购投资担保协议签订流程及风险控制
- 2025私人汽车抵押借款合同范本
- 海洋工程结构健康监测-洞察及研究
- 新进入者市场定位策略-洞察及研究
- 2025-2030封装晶体振荡器行业原材料价格波动风险对冲策略
- 2025-2030复合集流体生产工艺突破与设备需求预测
- 2025贵州省贵阳市殡仪服务中心公开招聘(编外)工作人员25人考试参考试题及答案解析
- 2025年国家安全知识竞赛试卷(答案+解析)
- 2025年贵州省凯里市辅警招聘考试题题库(含参考答案)
- 2025年四川基层法律服务工作者执业核准考试复习题及答案二
- 2025年全国企业员工全面质量管理知识竞赛题库(含答案)
- 2025年音乐学科会考练习卷及答案
- 大数据产业课件
- 潮汐能发电站课件
- 化妆详细教程课件
- 良好学习习惯养成课件
- 国庆司机安全培训
评论
0/150
提交评论