汇编语言编程:按照凯撒密码的规则加密 |
您所在的位置:网站首页 › 凯撒用英语怎么写 › 汇编语言编程:按照凯撒密码的规则加密 |
;要求:提示输入一字符串;键盘输入,Enter键结束输入;加密后换行显示加密结果。;;凯撒编码规律:;字母A 变为E,a 变为e,即变成其后的第 4 个字母(题目是这样要求的,也可改成别的数字);;字母W 变为A,Y 变为C,Z变为D,非字母不变。;如输入“China”变为“Glmre”。 ;;这是在网上看到的一个题目,已经有了最佳答案。;做而论道以为该答案的结构过于罗嗦了,功能还不尽全面,并且缺少注解,提问者并不理解。;网址:http://zhidao.baidu.com/question/279941785.html;;做而论道以前用C语言写过一个关于凯撒密码的程序,可见: http://hi.baidu.com/do_sermon/item/78589d7e9d00f9397044232a http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/b62441fa541839294f4aea9f.html;;用汇编来写,也是轻车熟路。但愿没有BUG,欢迎拍砖。;;用80x86汇编语言编程如下:;---------------------------------------------------DATA SEGMENT PARS DB 100 ;准备接收100个字符. NNN DB ? ;用于存放实际输入的个数. III DB 100 DUP(?) ;100字节的空间. K_S DB 100 DUP('$') ;100字节的空间. MES_I DB 13, 10, 'Input STR : $ ' ;用于提示. MES_O DB 13, 10, 'Output STR : $ ' ;用于提示. DATA ENDS;---------------------------------------------------CODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS, AX MOV DX, OFFSET MES_I MOV AH, 9 ;9号功能调用,显示提示. INT 21H MOV DX, OFFSET PARS MOV AH, 10 ;10号功能调用,接收键盘输入. INT 21H;--------------------------------------------------- MOV CL, NNN ;收到字符的个数. MOV CH, 0 CMP CX, 0 JNZ DO_IT JMP EXITDO_IT: LEA SI, III ;键入字符的起始地址. LEA DI, K_S ;加密字符的起始地址.;----------------------------下面开始循环统计.AGAIN: MOV AL, [SI] ;取来一个 CMP AL, 'A' JC NEXT ;小于'A'不用处理,转移到下一个 CMP AL, '{' ;- '{' JNC NEXT ;大于'z'不用处理,转移到下一个 CMP AL, 'a' JC BIG ;小于'a'可能是大写,转移SMALL: ADD AL, 4 ;加密 CMP AL, '{' JNC J_26 ;大于'z',超过了最后的字母,应减去26 JMP NEXT BIG: CMP AL, '[' ;- '[' JNC NEXT ;大于'Z'不用处理,转移到下一个 ADD AL, 4 CMP AL, '[' JNC J_26 ;大于'Z',超过了最后的字母,应减去26 JMP NEXT J_26: SUB AL, 26 NEXT: MOV [DI], AL ;保存密码 INC SI INC DI LOOP AGAIN;----------------------------加密结束 MOV DX, OFFSET MES_O MOV AH, 9 ;9号功能调用,显示提示. INT 21H MOV DX, OFFSET K_S MOV AH, 9 ;9号功能调用,显示密码. INT 21H;----------------------------显示结束.EXIT: MOV AH, 4CH INT 21H CODE ENDS END START ;注意:输入字符串的时候,不要输入'$',否则用“9号功能调用”进行显示的时候,它仅显示'$'前面的符号。;这都是微软闹的,它们编写的系统功能调用程序,看见了钱(美元符$),就自己保留了,不输出了。 ;不知那位网友来编写个解密的? |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |