字符加密汇编语言程序设计_第1页
字符加密汇编语言程序设计_第2页
字符加密汇编语言程序设计_第3页
字符加密汇编语言程序设计_第4页
字符加密汇编语言程序设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书目录1.课题背景11.1课程设计题目11.2课程设计要求11.3课程设计内容12运行环境23总体设计23.1各个模块功能设计33.2 各个模块之间的联系64.详细设计64.1系统流程图84.2子功能程序代码84.3调试4.4运行结果115.总结146.参考文献157.附录(程序清单)161 课题背景1.1课程设计题目:字符加密程序设计1.2课程设计要求:本课程设计要求如下:采用汇编语言对字符串进行简单的加密和解密,以获得汇编语言程序设计的基本知识概念。我们设计的程序需要满足以下一些功能:(1)运行程序后屏幕提示1加密,2解密; (2)功能选择后,屏幕提示输入一字符串; (3)根据

2、功能选择对输入的字符串进行加密/解密处理,加密方法自选; (4)输出处理后的字符串,并再次屏幕提示功能选择; (5)可连续输入字符串进行加密/解密处理,直至单击“Q”或“q”键退出程序。1.3课程设计内容 对字符串进行简单的加密和解密处理。主要通过两种方法来实现题目主功能:方法一:调用DOS的1号功能逐个输入明码字符,此时由于1号的功能对输入的字符显示,故输入的明码会显示。再即时对输入的字符明码保存并调用加密子程序对明码字符进行加密并输出显示在屏幕上,直到把明码输入完,此时加密结果也输出结束,最后把保存的明码输出,即输出一个完整的明码字符串。方法二:调用DOS的OAH号功能输入一串完整的字符串

3、,即要求加密的字符串,输入后进行保存,然后保存在另一个内存区中,再调用加密子程序对字符串中各个元素加密,调用DOS的9号功能把之前加密好的并保存的密码字符串完整输出,显示在屏幕上,最后用解密函数对密码解密并输出明码。在本设计中,我选择了方法二,这样需要加密的字符串可以一次性全部输入,而且操作起来更简单。另外为了防止使用者的一些误操作,自己还设计了一些起警示作用的子程序,使程序更加实用。2.运行环境1.硬件环境: CPU:2.0GH以上 内存:2GB以上2.软件环境: 操作系统:Microsoft Windows 7 ,MASM,LINK汇编编译链接软件。3.总体设计3.1各个模块功能

4、设计3.1.1主模块功能说明:主程序开始执行后,先显示程序标题,此处程序标题由天蓝色字体显示,然后显示功能选择提示符。当键盘输入选择后,程序开始进行判断属于哪一类,判定完毕后则执行相应跳转加密或者解密。当输入不是所要求的按键时,程序输出红色错误警告,提醒用户重新进行选择。3.1.2程序标题模块功能说明:程序标题子程序中设置光标位置采用2号功能调用定位到0行0列,写字符部分包括字符的文本显示方式,此处为彩色文本,方式3。3.1.3警示信息功能模块功能说明:当输入选择功能信息有误时,调用警示子程序。首先设置光标位置采用2号功能调用定位到0行0列,写字符部分包括字符的文本显示方式,此处为彩色文本,方

5、式4。流程图如图3-3所示。3.1.4加密/解密程序功能模块功能说明:用户输入的字符串存在WORD中,我们再调用SHURU子程序存入CHEN中,对CHEN中每个元素进行加密或者解密后存入CHEN中。当加密时,对CHEN中明码相应加10得密码;当解密时,将CHEN中的密码相应的减10即可的解密,得原码。3.1.5转存程序模块功能说明:将用户输入的字符串从WORD缓冲区逐个循环赋值转到CHEN缓存区,从而使得原码和密码能同时对应显示出来。3.1.6清屏程序模块 功能说明:清屏程序调用6号功能AL=0表示整个屏幕为空白,即清屏幕。3.2各个模块之间的联系根据课程设计题目的要求画出系统流程图,然后根据

6、流程图可知需要哪些子功能,再分别编写数据代码段以及各个模块然后通过程序的组合和调用来完成设计要求。4.详细设计4.1 系统流程图4.1.1主程序图 图2程序标题设计流程图 图3 警示信息设计流程图 图4 加密/解密程序流程图 图5 转存程序流程图图6 清屏程序流程图4.2子功能程序的代码4.2.1主菜单的功能选择菜单的代码如下:START: MOV AX,DATAMOV DS,AXCALL TittleONE: LEA DX,BUFF MOV AH, 09INT 21H ;功能选择MOV AH,1INT 21H ;单字符输入 CMP AL,31HJE AA1 CMP AL,32HJE AA2C

7、MP AL,51H JE DONE CMP AL,71HJE DONE ;比较跳转 CALL CLEARCALL WARNING ;警报LOOP ONEAA1: CALL JIAMI ;选择加密AA2: CALL JIEMI ;选择解密SCREEN: LEA DX,CHENMOV AH, 9INT 21H ;输出显示LEA DX,BLANKMOV AH, 9INT 21H ;回车换行LOOP ONEDONE: MOV AX,4C00HINT 21H4.2.2标题信息子程序本子程序采用BIOS9号功能调用,显示天蓝色的标题信息。AH=9为入口类型号,BH为页号,AL为要写的字符,BL为字符属性值

8、,CX为重复次数,代码如下:Tittle PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0BIAOTI:MOV AH,2 ;设置光标位置MOV BH,0 ;页号MOV DH,0 ;行号MOV CX,SI MOV DL,CL ;DL,列号INT 10H MOV AH,9 ;写当前光标MOV BH,0 ;页号MOV AL,ZHIWEISI ;要写的字符MOV BL,3 ;属性值(颜色)MOV CX,1 ;重复次数INT 10HINC SICMP SI,60JB BIAOTILEA DX,BLANKMOV AH, 9INT 21H ;回车换行

9、POP DXPOP CXPOP BXPOP AXPOP SIRETTittle ENDP4.2.3 加密/解密子程序加密子程序采用ASCII码值加4的方法,而解密则是采用ASCII码值减4的方法,循环赋值,代码如下:JIAMI(JIEMI) PROC NEAR CALL CLEAR ;清屏LEA DX,BYTE MOV AH, 9INT 21H ;提示输出LEA DX,WORD MOV AH,0AHINT 21H ;键盘输入LEA DX,BLANKMOV AH,9INT 21H ;回车换行CALL ZHUANCUN ;转存MOV CL,WORD1 ; 键盘输入个数MOV SI,0AA3:ADD

10、 CHENSI,4 ;加密方法INC SILOOP AA3MOV CHENSI+1,0AHMOV CHENSI+2,0DHMOV CHENSI+3,'$' ;结束符JMP SCREENRETJIAMI(JIEMI) ENDP4.2.4转存子程序 转存子程序是通过指针的移动将WORD中的字符串逐字读取并存入CHEN中,其代码如下:ZHUANCUN PROC NEAR PUSH BXMOV SI,0 MOV CL,WORDSI+1 ;输入个数MOV CH,0AA5: MOV BL,WORDSI+2MOV CHENSI,BLINC SILOOP AA5 ;转存POP BX RETZH

11、UANCUN ENDP4.2.5清屏子程序调用BIOS6号功能,AL为上滚行数,BH为显示属性,CX为上滚部分左上角行列号,DX为上滚部分右下角行列号,代码如下: MOV AH,6 ;6号功能调用-屏幕上滚 MOV AL,0 ;上滚的行数 MOV BH,7 ;黑底 MOV CH,0 ;上滚部分左上角在0行0列 MOV CL,0 MOV DH,24 ;上滚部分右下角在24行79列 MOV DL,79 INT 10h4.3 调试将编写好的程序输入到MF平台上,进行以下操作:汇编源程序连接目标码运行程序。4.4运行结果(1)将编写好的程序输入到MF平台上,进行以下操作:汇编源程序连接目标码运行程序。

12、弹出对话框,如图7所示。图7程序开始运行后界面其中字符串“Character encryption/translation program”显示为天蓝色,这样显示醒目标题信息,这是因为在程序的开始处有这样的输出提示符的程序,并调用了BIOS的2号功能(显示光标位置)、9号功能(在当前光标位置写字符及其属性)使其显示为黄色,在以后的循环执行中也会有这样的提示。(2)当操作者按下Q/q时,对话框自动关闭:当按下1或2时,则会显示以下内容,如图8所示。图8 选择加密或解密后界面 若选择其他按键,则会出错报警,并要求重新选择,对话框显示如图9所示。图9 错误警告信息(3)当操作者选择按键1,即加密时,

13、接着先输入要加密的字符,输完后按回车键,即会出现图10所示信息,上一行为原码,下一行为密码。加密后回到功能选择提示符,用户可重新选择加密,解密或退出。图10加密显示界面(4)当操作者选择按键2,即解密时,接着先输入密码字符,输完后按回车键,即会出现图11所示信息,上一行为需要解密的密码,下一行为原码。解密后回到功能选择提示符,用户可重新选择加密,解密或退出。图11 解密显示界面5总结经过一个星期的时间,我们完成了汇编语言课程设计,个人觉得还是相当有收获的。平时上课只是接触课本上已经写好的程序,只是知道它大概有什么功能,却始终没有去真正验证这些功能,去感受汇编语言真正的用途。这次的课程设计不仅要

14、我们能读懂一些程序,还要求我们能自己根据要求设计程序。我们小组的题目是“字符加密汇编语言程序设计”,刚开始拿到题目是觉得并不是特别难,但当真正入手编程时,却发现有许多问题要考虑,比如:操作者输入的字符是未知的,字符的数量也是未知的;当操作人输入原码或密码时,两者要对应同时显示出来;当程序运行后,屏上显示的信息要有条理,要让操作人能看懂,知道下一步该干什么等等问题。不过办法总比问题多,有些问题我们通过小组讨论就解决了,但一些技术性的问题,我们又通过看书,上网查资料的方式慢慢琢磨,不断地修改程序,不断地运行,在不断地改错中进步,最终得到还算比较完整的程序,可以满足要求。通过这次课设,自己还是有很大

15、收获的。不仅加深了对之前微机课堂学习到的汇编知识,同时也让自己接触到了一些新鲜的汇编功能,比如对DOS调用和BIOS调用的一些编程,这些功能可以让我们在满足主程序逻辑功能的同时,让程序更加的丰满、生动。在这次编程中我就利用DOS调用和BIOS调用功能让程序标题信息以及警示信息以不同的颜色显示在程序运行的对话框中。还利用网上资料实现了清屏和换行的功能,使得程序运行重复运行或输入有误时,窗口中不至于太凌乱。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的掌握所学的知识,从而提高自己的实际动手能力和独立思考

16、的能力 6.参考文献1刘其明. 汇编语言程序设计教程M. 江苏:中国矿业大学出版社, 2010.102沈美明. IBM-PC汇编语言程序设计实验教程M. 北京:清华大学出版社,2010.63 方立友.微机原理与汇编语言实用教程,北京:清华大学出版社,2007 4 温冬蝉、沈美明IBM PC汇编语言程序设计北京:清华大学出版社,2007.5 5 钱晓捷.新版汇编语言程序设计.北京:电子工业出版社,20075 彭虎等编著微机原理与接口技术(第二版)北京:电子工业出版社,2008 6沈美明,温东禅IBM-PC汇编语句程序设计(第2版)北京:清华大学出版社,2001 7任向明,卢惠林汇编语言程序设计实

17、用教程北京:清华大学出版社,2009 8马力妮80x86汇编语言程序设计北京:机械工业出版社,2004 9曹加恒,苏光奎,许先斌新一代汇编语言程序设计北京:高等教育出版社,2003 10 姜蓉 微机原理汇编语言及接口技术西安:西安交通大学出版社,2006附录(程序清单)DATA SEGMENTZHIWEI DB ' Character encryption/translation program',0DH,0AH,'$'BUFF DB '1:encrypt 2:translate Q/q:exit ?',0DH,0AH,'$'BY

18、TE DB 0DH,0AH,'please press the sentence ',0DH,0AH,'$'BLANK DB 0DH,0AH,'$'WORD DB 100,?,40 DUP(?)CHEN DB 50 DUP(0)AGAIN DB 'sorry,please choose again!',0DH,0AH,'$'DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCALL TITTLEONE: LEA DX,BUF

19、F MOV AH, 09INT 21H ;功能选择MOV AH,1INT 21H ;单字符输入 CMP AL,31HJE AA1 CMP AL,32HJE AA2CMP AL,51H JE DONE CMP AL,71HJE DONE ;比较跳转 CALL CLEARCALL WARNING ;警报LOOP ONEAA1: CALL JIAMI ;选择加密AA2: CALL JIEMI ;选择解密SCREEN: LEA DX,CHENMOV AH, 9INT 21H ;输出显示LEA DX,BLANKMOV AH, 9INT 21H ;回车换行LOOP ONEDONE: MOV AX,4C00

20、HINT 21H;*TITTLE PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0BIAOTI:MOV AH,2 ;设置光标位置MOV BH,0 ;页号MOV DH,0 ;行号MOV CX,SI MOV DL,CL ;DL,列号INT 10H MOV AH,9 ;写当前光标MOV BH,0 ;页号MOV AL,ZHIWEISI ;要写的字符MOV BL,3 ;属性值(颜色)MOV CX,1 ;重复次数INT 10HINC SICMP SI,60JB BIAOTILEA DX,BLANKMOV AH, 9INT 21H ;回车换行POP

21、DXPOP CXPOP BXPOP AXPOP SIRETTITTLE ENDP;*;*WARNING PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0PP:MOV AH,2 ;设置光标位置MOV BH,0 ;页号MOV DH,0 ;行号MOV CX,SI MOV DL,CL ;DL,列号INT 10H MOV AH,9 ;写当前光标MOV BH,0 ;页号MOV AL,AGAINSI ;要写的字符MOV BL,4 ;属性值MOV CX,1 ;重复次数INT 10HINC SICMP SI,26JB PPLEA DX,BLANKMOV

22、AH, 9INT 21H ;回车换行POP DXPOP CXPOP BXPOP AXPOP SIRETWARNING ENDP;*;加密算法JIAMI PROC NEAR CALL CLEAR ;清屏LEA DX,BYTE MOV AH, 9INT 21H ;提示输出LEA DX,WORD MOV AH,0AHINT 21H ;键盘输入 LEA DX,BLANKMOV AH,9INT 21H ;回车换行CALL ZHUANCUN ;转存MOV CL,WORD1 ;键盘输入个数MOV SI,0AA3:ADD CHENSI,4 ;加密方法INC SILOOP AA3MOV CHENSI+1,0AHMOV CHENSI+2,0DHMOV CHENSI+3,'$' ;结束符JMP SCREENRETJIAMI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论