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

    技术2022-07-11  90

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

    题目要求运行截图 编程平台代码实现

    题目要求

    先从键盘上输入一串字符,将数字按照下表的密码数字进行加密,将加密后的数字在第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

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

    Processed: 0.008, SQL: 9