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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

汇编语言代码转换课程设计Word格式文档下载.docx

1、优()、良()、中()、及格()、不及格()评阅人: 职称:2007年 1 月12 日目录一、需求分析 1二、概要设计 2三、详细设计 3四、测试结果 4五、设计体会 5一、需求分析1、实现大小写字母之间的转换:输入的字符串中,不是字母的字符不改变;大写字母改成小写字母时,若是大写字母则不改变;同样,小写字母改成大写字母时,若是小写字母则不改变2、二进制和十六进制数之间的转换:输入一个二进制数(或十六进制数),用十六进制数(或二进制数)表示输出;最多能把十六位二进制数(或四位十六进制数)用四位十六进制数(或十六位二进制数)表示输出;小于十六位(或四位)时按回车结束并输出3、十进制数和十六进制数

2、之间的转换:输入一个十进制数(或十六进制数),用十六进制数(或十进制数)表示输出;最大能把十进制数65535(或十六进制数FFFF)转换成十六进制数FFFF(或十进制数65535)表示输出;小于65535(或FFFF)时按回车结束并输出二、概要设计整个程序由四个主要的子程序和若干个辅助子程序组成,实现六个转换功能:HEXIDEC用来把一个十六进制数转换成十进制数表示BINARY用来把十六制数转换为十六位二进制数表示DETOHE用来把一个十进制数转换成十六进制表示BETOHE用来把一个十六位二进制数转换成十六进制输出1、INPUT用来输入字符串2、HEXIBIN用来输入一个十六进制数,并存放在B

3、X中3、BINIDEC用来把BX中十六进制转换到十进制4、DEC_DIV用来除以各位十进制的权5、PRINT用来把BX中的十六进制数转换成二进制6、DECIBIN输入一个五位的十进制数7、BINIHEX把BX中的十进制数转换成十六进制输出8、INBIN输入十六二进制数9、CRLF用来换行三、详细设计GAIXIE MACRO P1,P2,P3,P4,P5,P6 ;义该宏用来判定字母?P2: CMP BYTE PTR SI,P3 JB P5 CMP BYTE PTR SI,P4 JNB P5 CMP BYTE PTR SI,$ ;到$则结束 JZ P6 P1 BYTE PTR SI,20HP5:

4、INC SI LOOP P2P6: LEA DX,BUF1+2 ;出改写后的字母 MOV AH,9 ;调用9号中断功能,输出字符串 INT 21H LEA DX,BF ;把BF首地址给CX调用9号中断功能 INT 21H JMP START ;返回 ENDMDATA SEGMENT ;义数据段BUF DB *choose the operation*,0DH,0AH DB 1:big to small2:small to big3:hexadecimal to binary4:binary to hexadecimal5:hexadecimal to decimal6:decimal to h

5、exadecimal7:EXIT,0DH,0AH,BF DB 0DH,0AH,BUF1 DB 21,?,20 DUP(?) ;用来存放输入的字符串BUF2 DB enter a hex data:BUF3 DB The input is wrong,choose again please:BUF4 DB enter a deci data:BUF5 DB enter a bin data:DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF ;出选择界面 MOV AH,

6、1 ;入要选择的操作 PUSH AX ;NT 会改变AL的值,应压栈保护行 POP AX ;把AX压栈保护 CMP AL,1把AL中内容跟1比较 JZ BTOS ;相等则跳转到2 JZ STOB3 JZ HTOB4 JZ BTOH5 JZ HTOD 6 JZ DTOH 7 JZ EXIT LEA DX,BUF3 ;把BUF3的首地址给DX MOV AH,9 CALL CRLF ;调用子程序CALL返回,重新选择EXIT:MOV AH,4CH ;退出BTOH:CALL BETOHE ;调用二进制转十六进制子程序HTOB:CALL BINARY ;调用十六进制转二进制子程序HTOD:CALL HE

7、XIDEC ;调用十六进制转十进制子程序DTOH:CALL DETOHE ;调用十进制转十六进制子程序BTOS:CALL INPUT ;大写字母改为小写 MOV CX,20 ;作为循环条件 GAIXIE ADD,NEXT1,A,Z,N1,N2 ;宏GAIXIE展开STOB:小写字母改为大写 MOV CX,20 GAIXIE SUB,NEXT2,az,N3,N4INPUT PROC NEAR ;输入字符串 MOV DX,0 ;DX清零 MOV DX,OFFSET BUF1 ;把BUF1的首地址给DX MOV AH,10 ;调用10号中断功能,输出字符串把BF首地址给DX LEA SI,BUF1+

8、2 MOV BL,SI-1 ;把输入的字符个数给BL MOV BH,0 ;BH清零 MOV BYTE PTR BX+SI+1,把$作为字符串结束字符 LEA DX,BUF1+2 RET ;INPUT ENDPHEXIDEC PROC NEAR ;用该子程序把一个十六进制数转换成十进制数表示 PUSH DS ;保护初始数据段 SUB AX,AX ;AX清零START1: LEA DX,BUF2 CALL HEXIBIN ;调用输入一个十六进制数子程序 CMP AL,1BH ;遇Esc则退出 JZ EXIT1换行 CALL BINIDEC CALL CRLF JMP START1 ;EXIT1:R

9、ETHEXIDEC ENDPHEXIBIN PROC NEAR ;输入一个十六进制数,并存放在BX中 MOV BX,0 ;把BX清零作为输入四位的记数器INHEX:CMP DX,4 ;把DX跟4比较 JNB HEXEND ;大于则跳转输入数据 遇到Esc则退出 JZ HEXEND SUB AL,30H ;判断是否数字或字母?否则跳出 JL HEXEND CMP AL,10 ;判断是否数字 JL ADD_TO ;是则存放BX中 SUB AL,7 ;把AL内容减7转为字母判断是否小写字母(af) JL HEXEND CMP AL,16 小于则跳转 SUB AL,20H ;判断是否大写字母(AF)

10、CMP AL,10 CMP AL,16 JGE HEXENDADD_TO:MOV CL,4 ;作为循环条件 SHL BX,CL ;BX乘以16 MOV AH,0 ADD BX,AX ;两数相加 INC DX ;DX加1 JMP INHEXHEXEND:HEXIBIN ENDPBINIDEC PROC NEAR ;用来把BX中十六进制转换到十进制 MOV CX,10000 ;把10000给CX,作为万位的权 CALL DEC_DIV ;调用除权子程序 MOV CX,1000 CALL DEC_DIV MOV CX,100 MOV CX,10 MOV CX,1 RETBINIDEC ENDPDEC

11、_DIV PROC NEAR ;除以各位十进制的权 MOV AX,BX ;把BX内容给AX DIV CX MOV BX,DX MOV DL,AL ADD DL,30H ;转换为ASSII MOV AH,2DEC_DIV ENDPCRLF PROC NEAR ; LEA DX,BFCRLF ENDPBINARY PROC NEAR ;该子程序用来把十六制数转换为十六位二进制数表示START2:LEA DX,BUF2把DS压栈 PUSH AX CALL HEXIBIN CMP AL,1BH JZ EXIT2 CALL PRINT JMP START2EXIT2:BINARY ENDPPRINT P

12、ROC NEAR ;把BX中的十六进制数转换成二进制 MOV CX,16D ;记数ROT: SHL BX,1D ;每移一位最高位变为CF JC SET ;CF为1则跳到SET,否则输出0 MOV DL,30H MOV AH,2 DEC CX JNZ ROTSET:MOV DL,31H ;输出1 PRINT ENDPDETOHE PROC NEAR ;用该子程序来把一个十进制数转换成十六进制表示REPEAT:LEA DX,BUF4 PUSH DS SUB AX,AX CALL DECIBIN JZ EXIT3 CALL BINIHEX JMP REPEATEXIT3:DETOHE ENDPDEC

13、IBIN PROC NEAR ;输入一个五位的十进制数 MOV BX,0 MOV CX,0NEWCHAR:CMP CX,5 JNB EXIT4 MOV AH,1 JZ EXIT4 SUB AL,30H JL EXIT4 CMP AL,9 JG EXIT4 CBW INC CX XCHG AX,BX MOV DX,10 MUL DX ADD BX,AX JMP NEWCHAREXIT4:DECIBIN ENDPBINIHEX PROC NEAR ;把BX中的十进制数转换成十六进制输出 MOV CH,4ROTATE:MOV CL,4 ROL BX,CL ;把BX中高四位移到低四位,放到AL中 MO

14、V AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH ;判断是否为数字 JL PRINTIT ADD AL,7PRINTIT:MOV DL,AL DEC CH JNZ ROTATEBINIHEX ENDPBETOHE PROC NEAR ;用该子程序来把一个十六位二进制数转换成十六进制输出START3:LEA DX,BUF5 CALL INBIN JZ EXIT5 JMP START3EXIT5:BETOHE ENDPINBIN PROC NEAR ;输入十六二进制数PUTIN:CMP CX,16 JNB EXIT6 JZ EXIT6 JL EXIT6 CMP AL

15、,1 JG EXIT6 CBW MOV DX,2 JMP PUTINEXIT6:INBIN ENDPCODE ENDS END START 四、测试结果经过多次调试、修改,测试结果胜利通过,符合要求:选择大写改小写功能:输入字符串,字母全变成小写,其他字符不变,遇回车结束输入并执行选择小写改大写功能:输入字符串,字母全变成大写,其他字符不变,遇回车结束输入并执行选择十六进制转换成二进制功能:输入一个不大于四位的十六进制数,输出对应的二进制数,遇回车结束输入并执行选择二进制转换成十六进制功能:输入一个不大于十六位的二进制数,输出对应的十六进制数,遇回车结束输入并执行选择十六进制转换成十进制功能:

16、输入一个不大于四位的十六进制数,输出对应的十进制数,遇回车结束输入并执行选择十进制转换成十六进制功能:输入一个不大于65535的十进制数,输出对应的十六进制数,遇回车结束输入并执行五、设计体会通过这次的课程设计,让我对汇编有了更进一步的认识,加强了我用汇编语言编程的能力。汇编语言程序设计是一门很抽象的学科,学起来也比较乏味。一开始学的时候感觉很难,也没什么兴趣。但随着学习的推进,以及上机编程,逐渐感到轻松。在这次课程设计中,让我更加熟悉了汇编语言的一些基本的指令;掌握了汇编语言的一些基本的中断调用功能,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制;能够熟练的利用子程序和宏进行编程

17、。在设计过程中,不断对程序进行修改、改进,增强了自己分析问题、解决问题的能力;在不断的调试中,也让自己发现了自己存在的一些错误以及一些调试时应注意的问题,同时也更深的理解了寄存器、存储器等工作原理以及一些指令执行后对它们的改变,例如INT指令会改变AL的值,在编程时应注意这方面的问题。在编写过程中,让我深刻的体会到了搞科学的严谨性。有时一个逗号或者写错一个字母这样一点点小小的错误,就会产生十几个错误,导致调试的失败。不管做什么事,都要认认真真,否则就会得不偿失了。当设计一步步接近成功,每一个子程序的调试成功,都让自己感到喜悦,从中体会到了编程的乐趣,有一种成就感,也让自己树立了信心,增强了对汇编语言程序设计的兴趣。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2