编写一个加密程序,实现将数据段中YW开始的6个字节原文加密存入MW开始的6个字节中
设’0123456789’对应的密码为"9082746315"。
如原文YW为‘449255’,则加密后MW中为’775844’.
;实现将数据段中YW开始的6个字节原文加密存入MW开始的6个字节中,
;设'0123456789'对应的密码为"9082746315"。
;如原文YW为‘449255’,则加密后MW中为'775844'
ASSUME CS:CODE,DS:DATA,SS:STACK
DATA SEGMENT
YW DB 6 DUP(0) ;要输入的6位待加密数字
MW DB 6 DUP(0) ;输出的加密后文件
;SORCE DB 0,1,2,3,4,5,6,7,8,9 ;加密源文件样例
KEY DB 10 DUP(0) ;对应加密规则
KEY_RULE DB 'Please input the key rule:',0DH,0AH,'$'
TEXT DB 'Please input the text:',0DH,0AH,'$'
KEY_TEXT DB 'The text is:',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT
DB 128 DUP(0)
STACK ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,128
;------提示输入加密规则------
LEA DX,KEY_RULE
MOV AH,9
INT 21H
;-------输入加密规则-------
MOV CX,10
MOV SI,0
IN_KEYRULE: ;循环输入对应的加密规则
MOV AH,1
INT 21H
MOV KEY[SI],AL
INC SI
LOOP IN_KEYRULE
;-------换行--------
MOV DL,0AH
MOV AH,2
INT 21H
;------打印输入要加密的text-----
LEA DX,TEXT
MOV AH,9
INT 21H
;-------输入加密文件-------
MOV CX,6
MOV DI,0
IN_TEXT:
MOV AH,1
INT 21H
MOV YW[DI],AL
INC DI
LOOP IN_TEXT
;-------换行--------
MOV DL,0AH
MOV AH,2
INT 21H
;-------输出加密后文件-----
LEA DX,KEY_TEXT
MOV AH,9
INT 21H
MOV AX,0
MOV SI,0
MOV DI,0
MOV CX,6
OUT_TEXT:
SUB YW[DI],30H
MOV AL,YW[DI]
MOV SI,AX
MOV BL,KEY[SI]
MOV MW[DI],BL
INC DI
LOOP OUT_TEXT
MOV CX,6
MOV DI,0
PRINT:
MOV DL,MW[DI]
MOV AH,02H
INT 21H
INC DI
LOOP PRINT
EXIT:
MOV AX,4C00H
INT 21H
CODE ENDS
END START