汇编语言课程设计报告报告(8页)
时间:2020-09-12 12:03:52 来源:勤学考试网 本文已影响 人
-
- PAGE # - / 8
-
- PAGE # - / 8
湖南农业大学课程设计报告
学 院: 班 级:
姓 名: 学 号:
课程设计题目:编密码 课程名称:汇编语言与微机原理 评阅成绩:
评阅意见:
成绩评定教师签名:
日期: 年 月 日
目录
TOC \o "1-5" \h \z 概述 3
一设计内容与要求 3
二设计思想 3
三程序流程图 4
四程序源代码 5
五效果图 7
设计过程中遇到的问题及解决方法 7
设计心得 7
编密码
概述
汇编语言:是用英文缩写形式的助记符书写指令。汇编语言是一种面向
CPU 指令系统的程序语言,它采用指令系统的助记符来表示操作码和操作数, 用符号地址表示操作数地址。
用汇编语言编写程序在输入计算机后, 需要将其翻 译成目标程序, 计算机才能执行相应指令, 这个翻译过程成为汇编, 完成汇编任 务的程序称为汇编程序。所以我在 MASM 汇编程序中进行汇编,通过相应的代 码来调用相应的指令实现编密码。
一、设计要求 (小标题一律用宋体 小四 加粗 )
要求: 按照以下规律编密码:
字母 A 变为 E ,a 变为 e 即是字母变成其后面的第 4 个字母。
但 W变 Aa , Xx 变 Bb , Yy 变 Cc, Zz 变为 Dd.
非字母不变如 1234567890, !@$
并可以循环转换
例如“ 123CHINA@ 变为“ 123GLMRE@
二、设计思想
首先,先定义两个缓存区,一个用来存放输入的密码( 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 ,重新输入一个字符串并对它进行编密码转 换。
-
- PAGE # - / 8
-
- PAGE # - / 8
、流程图
-
- PAGE # - / 8
-
- PAGE # - / 8
显示变换后的字符串
masl byte mas2 byte**',13,10,0
masl byte mas2 byte
**',13,10,0
四、程序源代码
in elude io32.i nc
.data '*************************************' 13 10 0
编密码
mas3 byte
\ *************************************
',13,10,0
BUF1 byte 'Please in put random stri ng,e nd with En ter key:'; 提示输入
BUF2 dword 10 dup(O);存放输入的字符,假设最多 10个字符
BUF3 dword ?;存放转换过的字符
.code start:
mov eax,offset mas1 call dispmsg
mov eax,offset mas2
call dispmsg
mov eax,offset mas3 call dispmsg
start1:
mov eax,offset BUF1
call dispmsg
mov eax,offset BUF2
call readmsg ;输入一个字符串
mov esi,0
mov ecx,le ngthof BUF2 ;字符串的长度
mov edx,offset BUF2 ; EDX指向输入缓冲区 mov edi,offset BUF3
aga in:
mov al,[edx] ;取一个字符
inc edx cmp al,0
jz zui
cmp al,41H;判断是不是字母
jc read1;是数字转到read1 cmp al,61H;判断是不是小写 jc read6;小于是大写 cmp al,77H;是不是超过小写z
jae read5;大于等于
jmp read4;小写加 4
read1:
mov [edi],al
inc edi
jmp again read2:
cmp al,57h; 超过大写 Z
jae read3
add al,04H ;是大写,先 +4
mov [edi],al
inc edi
jmp again
jmp read4 read5:
cmp al,7BH; 不是小写字母 jae read1 jmp read3 read6:
cmp al,5BH
jc read2; 小于是小写的
jmp read1
read3:
sub al,22 ;减 22
jmp read1
read4:
add al,04H
mov [edi],al
inc edi
jmp again
loop again zui:
mov eax,offset BUF3
call dispmsg
call dispcrlf
mov edx,offset BUF2 ; 清空缓存区 mov edi,offset BUF3 mov ecx,10
mov esi,0
qing:
mov [edx],esi
mov [edi],esi
loop qing
jmp start1
exit 0 end start
五、效果图
■71
胆:町匚编语言逞序实验€匚编语言程序实
2012/06/83
2012/06/03
1?:H
23 H8
eZ匚编语言程序实验弋匚编语言程序实殓wsn的目录
"百匚编语言程序实验殆匚编语盲程序实M^1ftSM>nake32 00B
Mic^soJt <B> Macro Assemblep Uepsi?n &.15.8803
Copifriglit <<!> Microsoft Corp 1981-2iB00. All fights reserved
000,asn
l 00exe
MtJU.lst
000. obj
425宇爷
.344可用字节
Micro^oft UindoiPtr 【扳卒 &0OJ
版权、所有 ?)2609 Microsoft Cdf^orationD保留所有■权列
Assembling: 00U_asn
Microsoft CJt》I ncrenen tai Linket* Ue rs io n 6 - 80.81^S
CupprlyliL <€> Hiurusuf t Corjj 丄952—1$96 - All t'lyhlsi retiefued
琶理员刃血垃
F: X编语窖程序实验弋匚编语言程序实验^ASM>000 戸KJCKKXJC 弱其 X>C XMLJCJCXJtX JCJC KK X如騎MLJCJt JCHJCKMKK 其竝 ** 编密码 **
string^end with string^end uith striny^encl with ati'in^,cr
string^end with string^end uith striny^encl with ati'in^,cr)d witl> 口-歧ntl uith
Please input random 123-15
Please in put randon gleur
Please in put random glenrrsl
Please in put randon ,,ue}ivsl
Please inQttt FEndori
Enter key=12345
Enter- ke^:chaii
Entei* ke9:chainnol
Enter heir:,?jmdl
Enter* key:
六、遇到问题及解决方法
在开始编好程序的时候,我发现输出的并不是我想要的结果,后来在调试程 序中我用-t指令进行逐步运行程序,我才发现我的错误之处。原来我在程序的里 面没有注意看wyzx的转变,后来在加了两个判断,并将 wxyz减22得到相应的 abed,在改正之后,整个程序就运行得到我想要的结果了。
七、体会和心得
体会:在做实验之前,我有很多的指令不熟悉,不少指令都不会用,通过做 实验,我对这些指令更加熟悉,用起来更加熟练。有很多问题,不通过做实验, 可能永远也不会知道。也许很多知识我们也知道,当在真正解决问题时,不一定 能够想到。只有通过做实验,我才对很多知识有了更深的认识。
在做实验时,我也碰到很多问题,正是通过分析这些问题,解决这些问题, 我才逐渐真正掌握了某些知识。以前看书的时候,我感觉很多知识我似乎也会了, 某些题目我似乎也能解决了。
但是真正做起实验, 我才发现, 实际上我还有很多 知识没有掌握好。通过实验的学习,我对学习汇编语言有了一个更深的认识。
同时,我也真正认识到, 学习这些计算机语言, 只有通过大量的实验才能够 真正的掌握那些知识。
也只有通过实验才能够让我们意识到自己的不足之处, 从 而改正。在做实验的过程中,我通过调试,让我解决了很多问题,也让我以前一 些不理解的知识变得更加明白。
最重要的是让我对一些知识有了深刻的印象, 不 容易遗忘。
意见:我想,可以用来做汇编实验的软件有很多,依我看来,这是完全没有 必要的, 我们完全可以用更方便的实验工具来进行汇编实验。
例如: Masm 集成 实验环境 ,这种软件编起汇编来很方便,为我们做起汇编实验大大的节省了时 间。我想:我们做汇编实验的目的就是让我们对汇编语言的相关知识有更深的了 解,对掌握知识进行更好的巩固。
而用更方便的编辑工具并不影响我们对相关知 识的理解和掌握