ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:228.68KB ,
资源ID:856678      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-856678.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言课程设计--代码转换程序.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

汇编语言课程设计--代码转换程序.doc

1、汇编语言课程设计目 录1 设计目的12 设计内容13 实现方法13.1 系统目标13.2 主体功能13.3 开发环境14系统概要设计14.1 系统的功能模块划分14.2 系统流程图25系统详细设计45.1 程序功能菜单模块设计45.2小写字母向大写字母转换模块设计45.3大写字母向小写字母转换模块设计55.4 二进制数向十六进制数转换模块设计55.5 十六进制数向二进制数转换模块设计55.6 十六进制数向十进制数转换模块设计66 测试66.1 测试方案66.2 测试结果77小 结7参考文献9附 录10附录1 源程序清单10附录1.1程序功能菜单模块源程序10附录1.2小写字母向大写字母转换模块

2、源程序12附录1.3大写字母向小写字母转换模块源程序13附录1.4二进制数向十六进制数转换模块源程序13附录1.5十六进制数向二进制数转换模块源程序14附录1.6十六进制数向十进制数转换模块源程序153代码转换程序1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。2 设计内容功能菜单的编制;小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;十六进制数向二进制数的转换;十六进制数向十进制数的转换。3 实现方法3.1 系统目标实

3、现代码转换:大小写字母之间转换,二进制、十进制、十六进制之间的相互转换。3.2 主体功能Change1模块实现小写字母向大写字母的转换,change2模块实现大写字母向小写字母的转换。在实际应用中,不仅有数值的运算,还有更多的是大量的非数值的处理,特别是在现代或今后的社会活动中,非数值处理在管理程序、文字处理和过程控制中将会得到广泛的应用。Change3模块实现二进制数向十六进制数的转换,change4实现十六进制数向二进制数的转换,change5实现十六进制数向十进制数的转换。由于用户输入的数一般是用十进制表示的,而这些数在计算机内存储、运算时一般都是用二进制,这就涉及到了十进制数向二进制的

4、转换问题,所以二进制和十进制之间的转换算法是汇编语言程序员应该掌握的基本算法之一。3.3 开发环境TASM5.0集成环境。4系统概要设计4.1 系统的功能模块划分本程序共有7个模块,start模块为核心模块,该模块调用main模块和change5模块,main模块又调用change1、change2、change3和change4四个模块,其中:change1模块实现小写字母到大写字母的转换;change2模块实现大写字母向小写字母的转换;Change3模块实现二进制数向十六进制数的转换;change4实现十六进制数向二进制数的转换;change5实现十六进制数向十进制数的转换。4.2 系统流

5、程图图3-2-1 程序流程图开始从键盘读取字符是否az之间输出对应字符的大写输出错误结束YN开始从键盘读取字符AZ之间输出对应字符的小写输出错误结束YN图3-2 小写向大写转换 图3-3 大写向小写转换开始从键盘读取字符十六进制数输出对应二进制数输出错误结束YN开始从键盘读取字符二进制数输出对应十六进制数输出错误结束YN图3-4 二进制向十六进制转换 图3-5 十六进制向二进制转换开始从键盘读取字符十六进制数输出对应十进制数输出错误结束YN图3-6 十六进制向十进制转换 5系统详细设计5.1 程序功能菜单模块设计主菜单的功能选择菜单的代码如下:;*主程序中的提示信息*str1 DB 0AH,0

6、DH, *$str2 DB 0AH,0DH, * Welcome you ! *$str3 DB 0AH,0DH, *-*$str4 DB 0AH,0DH, * This is programme of code conversion! *$str5 DB 0AH,0DH, * Please input your choice: *$str6 DB 0AH,0DH, * 1:Lowercase letters to Capital letters *$str7 DB 0AH,0DH, * 2:Capital letters to Lowercase letters *$str8 DB 0AH,

7、0DH, * 3:Binary to Hex *$str9 DB 0AH,0DH, * 4:Hex to Binary *$str10 DB 0AH,0DH, * 5:Hex to Decimal *$str11 DB 0AH,0DH, * 6:Quit or exit *$str12 DB 0AH,0DH, *$通过disp语言将其打印在屏幕上,用户可以通过输入不同的字母来选择实现不同的功能。(输入的字母不区分大小写)5.2小写字母向大写字母转换模块设计先从键盘上读取字符:start:push ds sub ax,ax push ax mov ax,data mov ds,ax并判断字符是否

8、有效:again:mov ah,1 int 21h cmp al,0得到有效字符之后,通过ASCII值进行运算得到相应的大写字母并输出。5.3大写字母向小写字母转换模块设计先从键盘上读取字符:start:push ds sub ax,ax push ax mov ax,data mov ds,ax并判断字符是否有效:again:mov ah,1 int 21h cmp al,0得到有效字符之后,通过ASCII值进行运算得到相应的小写字母并输出。5.4 二进制数向十六进制数转换模块设计先从键盘上读取字符:start:push ds sub ax,ax push ax mov ax,data mo

9、v ds,ax并判断字符是否有效:again:mov ah,1 int 21h cmp al,0当得到有效字符时,对得到的二进制数进行运算得到十六进制数并输出,在输出时在数字的结尾加上十六进制标识符H。5.5 十六进制数向二进制数转换模块设计先从键盘上读取字符:start:push ds sub ax,ax push ax mov ax,data mov ds,ax并判断字符是否有效:again:mov ah,1 int 21h cmp al,0当得到有效字符时,对得到的十六进制数进行运算得到二进制进制数并输出,在输出时在数字的结尾加上二进制数标识符B。5.6 十六进制数向十进制数转换模块设计

10、先从键盘上读取字符:start:push ds sub ax,ax push ax mov ax,data mov ds,ax并判断字符是否有效:again:mov ah,1 int 21h cmp al,0当得到有效字符时,对得到的十六进制数进行运算得到十进制数并输出,在输出时在数字的结尾加上十进制数标识符D。6 测试6.1 测试方案图6-1-1 程序运行时的主界面图6-1-2 小写字母转换为大写字母图6-1-3 大写字母转换为小写字母图6-1-4 二进制数转换为十六进制数图6-1-5 十六进制数转换为二进制数图6-1-6 十六进制数转换为十进制数图6-1-7 当输入错误时提示重新输入6.2

11、 测试结果程序在设计完成之初汇编时出现非法错误,在进行修改后可正常运行。程序能够正常的进行大小写字母的转换,二进制数、十进制数、十六进制数之间的转换,但在主程序和子程序之间的衔接仍存在部分问题,未完全达到预计的功能,输入选项与子程序的调用存在部分缺陷,需要进一步进行细节上的改进。7小 结经过近一个星期的工作,才把课程设计完成。经过这次课程设计,我加深了对汇编语言的理解,也对上课时所说的语法有了深刻的认识。相对于以前学习的高级语言,对汇编语言的第一印象是很酷,因为它很抽象。怀着崇拜的心情学着汇编语言,虽然枯燥,但是每当完成一个很简单的程序就会感到非常的有成就感。 当我刚开始选择这个题目是因为课本

12、上有一个相近的代码转换,所以感觉这个题目应该很好写。可是等到真正动手的时候就感到了困难。首先是对字符串的输入输出的处理, 解决不了就改成了字母大小写转换是每次只输入一个字母,然后根据其大小写转换,如大写就转换成小写,否则反之。然而在随后的进制转换中用遇到了同样的问题,发现 这是一个不能不解决的问题,随后查阅了资料才解决。课程设计过程,是对团队精神考察的过程,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询或者同学间相互讨论,只要认真钻研,动脑思考,动手

13、实践,就没有克服不了的难题。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的掌握所学的知识,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 参考文献1刘其明. 汇编语言程序设计教程M. 江苏:中国矿业大学出版社, 2010.102沈美明. I

14、BM-PC汇编语言程序设计实验教程M. 北京:清华大学出版社,2010.6附 录附录1 源程序清单附录1.1程序功能菜单模块源程序start主菜单:extrn main:far,change1:far,change2:far,change3:far,change4:far,change5:farstack segment para public stack db 200 dup (0)stack endsdata segment;*主程序中的提示信息*str1 DB 0AH,0DH, *$str2 DB 0AH,0DH, * Welcome you ! *$str3 DB 0AH,0DH, *

15、-*$str4 DB 0AH,0DH, * This is programme of code conversion! *$str5 DB 0AH,0DH, * Please input your choice: *$str6 DB 0AH,0DH, * 1:Lowercase letters to Capital letters *$str7 DB 0AH,0DH, * 2:Capital letters to Lowercase letters *$str8 DB 0AH,0DH, * 3:Binary to Hex *$str9 DB 0AH,0DH, * 4:Hex to Binary

16、 *$str10 DB 0AH,0DH, * 5:Hex to Decimal *$str11 DB 0AH,0DH, * 6:Quit or exit *$str12 DB 0AH,0DH, *$str13 DB 0Ah,0Dh,Input error,please repess!,$str14 DB 0AH,0DH,0AH,0DH, Input your choice:,$data endscode segment assume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,axdisp macro m lea dx,m mov ah,

17、9 int 21h endm disp str1 disp str2 disp str3 disp str4 disp str5 disp str6 disp str7 disp str8 disp str9 disp str10 disp str11 disp str12 disp str14lop: mov ah,8 int 21h cmp al,1 jz ltol cmp al,2 jz lto2 cmp al,3 jz lto3 cmp al,4 jz lto4 cmp al,5 jz lto5 cmp al,6 jz exit disp str13 disp str14 jmp lo

18、pltol: call main call change1 jmp loplto2: call main call change2 jmp loplto3: call main call change3 jmp loplto4: call main call change4 jmp loplto5: call main call change5 jmp lopexit: mov ah,4ch int 21hcode ends end startmain菜单:public info1,info2,bufa,bufb,buf,main,info0,info3extrn change1:far,ch

19、ange2:far,change3:far,change4:fardata segmentinfo0 db 0ah,0dh,this is the change of letter to leter:$ info1 db 0ah,0dh,please input string:$info2 db 0ah,0dh,output string:$bufa db 81 db ? db 80 dup (?)bufb db 80 dup (?)info3 db 0ah,0dh,this is the change of digital to digital:,0ah,0dh,$buf db 0dh,0a

20、h,the number is:0100101010001111b,0ah,0dh,the result is:$data endsstack segment stack db 200 dup (?)stack endscode segmentmain proc far assume ds:data,cs:code,ss:stack mov ax,data mov ds,ax disp macro m lea dx,m mov ah,9 int 21h endm call change1 call change2 disp info3 disp buf call change3 call ch

21、ange4 retmain endpcode ends end 附录1.2小写字母向大写字母转换模块源程序extrn info1:byte,info2:byte,bufa:byte,bufb:byte,info0:bytepublic change1code segment assume cs:codelowtohigh proc near cmp al,a jb stop cmp al,z ja stop sub al,20hstop :retlowtohigh endpchange1 proc far lea dx,info0 mov ah,9 int 21h lea dx,info1 m

22、ov ah,9 int 21h lea dx,bufa mov ah,10 int 21h lea si,bufa+1 lea di,bufb mov ch,0 mov cl,si add si,1next:mov al,si call lowtohigh mov di,al inc si inc di loop next mov byte ptr di,$ lea dx,info2 mov ah,9 int 21h lea dx,bufb mov ah,9 int 21h retchange1 endp code ends end 附录1.3大写字母向小写字母转换模块源程序extrn inf

23、o1:byte,info2:byte,bufa:byte,bufb:bytepublic change2code segment assume cs:codehightolow proc near cmp al,A jb stop cmp al,Z ja stop add al,20hstop:rethightolow endpchange2 proc far lea dx,info1 mov ah,9 int 21h lea dx,bufa mov ah,10 int 21h lea si,bufa+1 lea di,bufb mov ch,0 mov cl,si inc sinext:mo

24、v al,si call hightolow mov di,al inc si inc di loop next mov byte ptr di ,$ lea dx,info2 mov ah,9 int 21h lea dx,bufb mov ah,9 int 21h retchange2 endp code ends end附录1.4二进制数向十六进制数转换模块源程序extrn buf:byte,info3:bytepublic change3code segmentchange3 proc far assume cs:code sub ax,ax mov ch,4 mov cl,4 mov

25、 bx,4a8fhrotate: rol bx,cl mov al,bl and al,0fh add al,30h cmp al,3ah jl printit add al,7hprintit: mov dl,al mov ah,2 int 21h dec ch jnz rotate mov dl,H mov ah,2 int 21h retchange3 endpcode ends end附录1.5十六进制数向二进制数转换模块源程序public change4data segmentbuf db 0ah,0dh,please input the four hexnumber:$data e

26、ndscode segment assume cs:code,ds:datachange4 proc far mov ax,data mov ds,ax lea dx,buf mov ah,9 int 21h mov bx,0 mov ch,4input: mov cl,4 sal bx,cl mov ah,1 int 21h cmp al,39h ja af and al,0fh jmp binaryaf: and al,0fh add al,9binary: or bl,al dec ch cmp ch,0 jne input mov dl,H mov ah,2 int 21h mov d

27、l,0ah mov ah,2 int 21h mov dl,0dh mov ah,02 int 21h mov cx,16disp: mov dl,0 rol bx,1 rcl dl,1 or dl,30h mov ah,02h int 21h loop disp mov dl,B mov ah,2 int 21h retchange4 endpcode ends end附录1.6十六进制数向十进制数转换模块源程序public change5data segmentbinary dw 7fffh,50h n=($-binary)/2buf db 7 dup(0)info1 db 0ah,0dh

28、,this is the change from hexnumber to decimal:$info2 db 0ah,0dh,the number is:7fffh,50h$,0ah,0dhinfo3 db 0ah,0dh,the result is:$data endsstack segment stack db 200 dup(0)stack ends code segment assume cs:code,ds:data,ss:stackf2to10 proc near push bx push dx push si push cxdisp macro m lea dx,m mov a

29、h,9 int 21h endm lea si,buf or ax,ax jns plus neg ax mov si,byte ptr - inc siplus: mov bx,10 mov cx,0lop1: mov dx,0 div bx push dx inc cx or ax,ax jne lop1lop2: pop ax cmp al,10 jb l1 add al,7l1: add al,30h mov si,al inc si dec cx jne lop2 mov si,byte ptr D inc si mov si,byte ptr $ disp info3 disp buf pop cx pop si pop dx pop bx retf2to10 endpchange5 proc farstart: mov ax,data mov ds,ax disp info1 disp info2 mov cx,n lea di,binarylopa: mov ax,di call f2to10 add di,2 loop lopa retchange5 endpcode ends end. .此处忽略!18

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922