汇编语言:根据规则对数字加密和解密

汇编语言:根据规则对数字加密和解密

题目要求

先从键盘上输入一串字符,将数字按照下表的密码数字进行加密,将加密后的数字在第2行显示出来。然后用解密数字对加密后的数字进行解密,并在第3行显示解密后的数字。
其中,显示功能由子程序OUTPUT完成,不适用与加密规则和解密规则的内容不做处理。
例如:输入:“18”,则在第2行显示:“52”,第3行显示:“18”。
数字0-9与加密和解密数据的对应关系如下:
       原数字: 0 1 2 3 4 5 6 7 8 9
    密码数字: 7 5 9 1 3 6 8 0 2 4
原密码数字: 0 1 2 3 4 5 6 7 8 9
    解密数字: 7 3 8 4 9 1 5 0 6 2

运行截图


编程平台

Masm for Windows 集成实验环境 2012.5

代码实现

DATAS SEGMENT
    buffer DB 100,0,100 DUP(?);存放输入的数字和加密、解密后的数字
    passwdnu DB 7,5,9,1,3,6,8,0,2,4;密码数字
    decrypnu DB 7,3,8,4,9,1,5,0,6,2;解密数字
    hint DB 'Please enter a string of numbers: $'
    before DB 'Encrypted: $'
    after DB 'Decrypted: $'
    break DB 13,10,'$'
DATAS ENDS

STACKS SEGMENT STACK
    DB 200H DUP(?)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
MAIN PROC
    MOV AX,DATAS
    MOV DS,AX
    
    LEA DX,hint;输入前提示
    MOV AH,9H
    INT 21H
    
   	LEA DX,buffer;定位到缓冲区
    MOV AH,0AH
    INT 21H
    
    LEA DX,break;换行
    MOV AH,9H
    INT 21H
    
    LEA DX,before;换行
    MOV AH,9H
    INT 21H
    
    CALL ENCRYPT;加密
    CALL OUTPUT;显示数据
    
    LEA DX,break;换行
    MOV AH,9H
    INT 21H
    
    LEA DX,after;换行
    MOV AH,9H
    INT 21H
    
    CALL DECODING;解密
    CALL OUTPUT;显示数据
    
    MOV AH,4CH
    INT 21H
MAIN ENDP
;子程序
;功能:加密数据。
;入口参数:buffer存放要加密的数据。
ENCRYPT PROC
	LEA SI,buffer;定位到缓冲区
	INC SI
	MOV CL,[SI]
	MOV CH,0;CX存放数据量
	INC SI
	LEA BX,passwdnu;定位到密码数字
	
encr:
	MOV AL,[SI]
	CMP AL,30H
	JB econt;不加密非数字
	CMP AL,39H
	JG econt;不加密非数字
	SUB AL,30H
	XLAT;AL<--((BX)+(AL))
	ADD AL,30H
	MOV [SI],AL
econt:
    INC SI
	LOOP encr
	
	RET
ENCRYPT ENDP
;子程序
;功能:解密数据。
;入口参数:buffer存放要解密的数据。
DECODING PROC
	LEA SI,buffer;定位到缓冲区
	INC SI
	MOV CL,[SI]
	MOV CH,0;CX存放数据量
	INC SI
	LEA BX,decrypnu;定位到解密数字
	
deco:
    MOV AL,[SI]
	CMP AL,30H
	JB dcont;不解密非数字
	CMP AL,39H
	JG dcont;不解密非数字
	SUB AL,30H
	XLAT;AL<--((BX)+(AL))
	ADD AL,30H
	MOV [SI],AL
dcont:
    INC SI
    LOOP deco
	
	RET
DECODING ENDP
;子程序
;功能:显示数据。
;入口参数:buffer存放要输出的数据。
OUTPUT PROC
	LEA BX,buffer;定位到缓冲区
	INC BX
	MOV CL,[BX]
	MOV CH,0;CX存放要输出的数据量
	INC BX
	
outp:
    MOV DL,[BX]
    MOV AH,2H
    INT 21H
    INC BX
    LOOP outp
	
	RET
OUTPUT ENDP
CODES ENDS
    END MAIN

如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值