#include<string.h>
#define N 1000
void main()
{
char str[N]
int i
putchar('\n')
printf("********start ********\n")
printf("please input your code: ")
gets(str)
for(i=0str[i]!='\0'i++) //加密控制,仅对字母 *** 作,若是数字则不 *** 作
{
if((str[i]>='a'&&str[i]<'y')||(str[i]>='A'&&str[i]<'Y')) //用于对a至y及A至Y之间的字符加密
str[i]+=2
else if(str[i]=='仔漏逗y') //单独对y加密
str[i]='a'
else if(str[i]=='z') //单独对z加密
str[i]='b'
else if(str[i]=='Y') //单独对Y加密
str[i]='A'
else if(str[i]=='Z'念卖) //单独对Z加密
str[i]='B'
}
putchar('\n')
printf("the resoult we need is: ")
puts(str)
putchar('\n')
printf("********the end ********\n")
putchar('\搜液n')
}
char key = 0xabvoid encode(char *s, int len)
{
char ch = 0
for(int i=0i<leni++)
{
*s = *s ^key ^ch
ch = *s
s++
}
}
去掉了那个中断部分。本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
-----------------让槐绝------------------------
功能:显示指定地址(Str_Addr)的字符串
入口:
Str_Addr=字符串地址(要求在数据段)
用法: Output Str_Addr
用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
-----------------------------------------
Encode db '7846302951'
Prompt_Str1 db 'Please input the orical code: $'
Prompt_Str2 db 7,13,10,13,10,'The encode: $'
Prompt_Str3 db 13,10,13,10,'Please record the encode and than press any key to continue...$'
String db 20,?,20 dup(?) 明码输入缓冲区
Start:push cs
pop ds
push cs
pop es
Output Prompt_Str1 提示输入明码
cld
lea di,String 明码字符串地址
mov cx,20 明码数明顷字个数,可以不到20个数字,回车键结束明码输入
Read_Encode:mov ah,1
int 21h
cmp al,13 回车?
jz Disp_Encode
cmp al,'0'
jb Read_Encode
cmp al,'9'
ja Read_Encode
stosb
loop Read_Encode
Disp_Encode:mov cx,di
sub cx,offset String 实际输入的明码数字个数
lea si,String 明码字符串地址
lea bx,Encode 密码地址
Encoding: lodsb 读入1位明码
and al,0fh
xlat 查表,取得对应的密码
mov [si-1],al 写密码
loop Encoding
mov byte ptr [si],'$' 显示字符串采用DOS调用,9号功能,要求字符串以“$”结尾
Output Prompt_Str2 提示显示密码
Output String 显示密码
Output Prompt_Str3 提示用户记录密码
mov ah,1
int 21h
Exit_Proc: mov ah,4ch 结束程序
int 21h
CodeENDS
ENDStart 编译到此结束
补充回答:未知楼主要怎样的原创,这个是我百分之百的原创。此前提供的连接,也是我百分之百的原创。不知楼主用什么坦姿方法来判断回答者的答案是否原创。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)