(***)在内存中定义一个用于加密的key和明文字符串,key中的每个数字表示将明文字符串中的对应字符进行旋转移位的次数,负数表示左移位,正数表示右移位。加密key的长度为10个字节:-2, 4, 1, 0, -3, 5,2, -4, -4, 6。先用加密key处理字符串的前10个字节,再处理接下来的10个字节,以此类推。将密文字符串保存在另一个变量中。
DATAS SEGMENT
BUF1 DB 'ABCDEFGHIJABCDEFGHIJ'
COUNT1 EQU $-BUF1
BUF2 DB -2,4,1,0,-3,5,2,-4,-4,6
COUNT2 DB 10
BUF3 DB 100 DUP(?)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
MOV SI,0
MOV DI,0
MOV BH,COUNT1
MOV BL,COUNT2
L:
MOV AH,BUF1[SI]
MOV AL,BUF2[DI]
CMP AL,0
JL ZUO
MOV CL,AL
ROR AH,CL
MOV BUF3[SI],AH
JMP NEXT
ZUO:
NEG AL
MOV CL,AL
ROL AH,CL
MOV BUF3[SI],AH
JMP NEXT
NEXT:
DEC BL
DEC BH
CMP BH,0
JE END0
INC SI
CMP BL,0
JE L2
INC DI
JMP L
L2:
MOV DI,0
MOV BL,COUNT2
JMP L
END0:
;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
网友评论