汇编语言课程设计报告报告.docx
- 文档编号:3642068
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:15
- 大小:228KB
汇编语言课程设计报告报告.docx
《汇编语言课程设计报告报告.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计报告报告.docx(15页珍藏版)》请在冰豆网上搜索。
汇编语言课程设计报告报告
湖南农业大学课程设计报告
学院:
班级:
学号:
姓名:
课程设计题目:
编密码
课程名称:
汇编语言与微机原理
评阅成绩:
评阅意见:
成绩评定教师签名:
日期:
年月日
-1-
概述…………………………………………………………3
3设计内容与要求………………………………………一
3设计思想…………………………………………………二
4程序流程图……………………………………………三
5四程序源代码……………………………………………
7…………………………………………………效果图五
7设计过程中遇到的问题及解决方法……………………六
7设计心得…………………………………………………七
-2-
编密码
概述
汇编语言:
是用英文缩写形式的助记符书写指令。
汇编语言是一种面向
CPU指令系统的程序语言,它采用指令系统的助记符来表示操作码和操作数,
用符号地址表示操作数地址。
用汇编语言编写程序在输入计算机后,需要将其
翻译成目标程序,计算机才能执行相应指令,这个翻译过程成为汇编,完成汇
编任务的程序称为汇编程序。
所以我在MASM汇编程序中进行汇编,通过相应
的代码来调用相应的指令实现编密码。
一、设计要求(小标题一律用宋体小四加粗)
要求:
按照以下规律编密码:
1.字母A变为E,a变为e即是字母变成其后面的第4个字母。
但Ww变Aa,Xx变Bb,Yy变Cc,Zz变为Dd.2.非字母不变如1234567890,!
@$3.并可以循环转换4.例如“123CHINA@”变为“123GLMRE@”5.
二、设计思想
首先,先定义两个缓存区,一个用来存放输入的密码(BUF2),一个用
来存放变换后的密码(BUF3)。
先输入一个十位数内的密码,然后一一对一个
个字符进行判断。
先判断ascall是否小于41H,如果是则不是字母那就不变换
直接转到read1,存入BUF3。
如果大于41H在判断是否大于61H即判断是不
是小写的,如果小于的话在判断大于5bH吗?
如果大于则不是字母那就不变换
直接转到read1,存入BUF3。
如果小于的话,在判断是不是大于w的ascall,
如果大于就转到read3,减22在,存入buf3.否则转到read4,加4在存入
BUF3。
如果大于等于61H的话,同样的道理,判断是否大于W,如果大于在
判断大于7AH吗。
判断是不是字母,如果不是那就不变换直接转到read1,存
入BUF3。
否则转到read3减22,在存入BUF3。
如果没有大于77H,直接转到
read4,加4在存入BUF3。
最后将变换后的密码输出来。
输出后并将其转到
qing,既将BUF2和BUF3缓存区的数据清空,在回到start1,重新输入一个字
符串并对它进行编密码转换。
-3-
三、流程图
输入一个字符串
取一个字符
是read1小于41H
?
否
小于是read6
61H
?
否read1小于5BH?
小于否read5是read277H小于是read4否read357H小于否read17BH是read4
是read3对该字符加4
对该字符减22
将字符存入BUF3
Edi加1
-4-
4、程序源代码
includeio32.inc
.data
mas1byte'*************************************',13,10,0
mas2byte'**编密码**',13,10,0
mas3byte'*************************************',13,10,0
BUF1byte'Pleaseinputrandomstring,endwithEnterkey:
';提示输入BUF2dword10dup(0);存放输入的字符,假设最多10个字符
BUF3dword?
;存放转换过的字符
.code
start:
moveax,offsetmas1
calldispmsg
moveax,offsetmas2
calldispmsg
moveax,offsetmas3
calldispmsg
start1:
moveax,offsetBUF1
calldispmsg
moveax,offsetBUF2
callreadmsg;输入一个字符串
movesi,0
movecx,lengthofBUF2;字符串的长度
movedx,offsetBUF2;EDX指向输入缓冲区
movedi,offsetBUF3
again:
moval,[edx];取一个字符
incedx
cmpal,0
jzzui
cmpal,41H;判断是不是字母
jcread1;是数字转到read1
cmpal,61H;判断是不是小写
jcread6;小于是大写
cmpal,77H;是不是超过小写z
jaeread5;大于等于
jmpread4;小写加4
read1:
mov[edi],al
-5-
显示变换后的字符串
incedi
jmpagain
read2:
cmpal,57h;超过大写Z
jaeread3
addal,04H;是大写,先+4
mov[edi],al
incedi
jmpagain
jmpread4
read5:
cmpal,7BH;不是小写字母
jaeread1
jmpread3
read6:
cmpal,5BH
jcread2;小于是小写的
jmpread1
read3:
subal,22;减22
jmpread1
read4:
addal,04H
mov[edi],al
incedi
jmpagain
loopagain
zui:
moveax,offsetBUF3
calldispmsg
calldispcrlf
movedx,offsetBUF2;清空缓存区
BUF3edi,offsetmov
ecx,10mov
esi,0mov
qing:
[edx],esimov
[edi],esimov
qingloop
start1jmp
0exit
startend
、效果图5
-6-
6、遇到问题及解决方法
在开始编好程序的时候,我发现输出的并不是我想要的结果,后来在调试程
序中我用-t指令进行逐步运行程序,我才发现我的错误之处。
原来我在程序的
里面没有注意看wyzx的转变,后来在加了两个判断,并将wxyz减22得到相
应的abcd,在改正之后,整个程序就运行得到我想要的结果了。
七、体会和心得
体会:
在做实验之前,我有很多的指令不熟悉,不少指令都不会用,通过
做实验,我对这些指令更加熟悉,用起来更加熟练。
有很多问题,不通过做实
验,可能永远也不会知道。
也许很多知识我们也知道,当在真正解决问题时,
不一定能够想到。
只有通过做实验,我才对很多知识有了更深的认识。
在做实验时,我也碰到很多问题,正是通过分析这些问题,解决这些问题,
我才逐渐真正掌握了某些知识。
以前看书的时候,我感觉很多知识我似乎也会
-7-
了,某些题目我似乎也能解决了。
但是真正做起实验,我才发现,实际上我还
有很多知识没有掌握好。
通过实验的学习,我对学习汇编语言有了一个更深的
认识。
同时,我也真正认识到,学习这些计算机语言,只有通过大量的实验才能
够真正的掌握那些知识。
也只有通过实验才能够让我们意识到自己的不足之处,
从而改正。
在做实验的过程中,我通过调试,让我解决了很多问题,也让我以
前一些不理解的知识变得更加明白。
最重要的是让我对一些知识有了深刻的印
象,不容易遗忘。
意见:
我想,可以用来做汇编实验的软件有很多,依我看来,这是完全没
有必要的,我们完全可以用更方便的实验工具来进行汇编实验。
例如:
Masm
集成实验环境,这种软件编起汇编来很方便,为我们做起汇编实验大大的节省
了时间。
我想:
我们做汇编实验的目的就是让我们对汇编语言的相关知识有更
深的了解,对掌握知识进行更好的巩固。
而用更方便的编辑工具并不影响我们
对相关知识的理解和掌握
-8-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计 报告