📄 jiami.asm
字号:
include C:\001.mac
.model small
.386
.stack 200
.data
secret db 'bdycsu'
codes db 6 dup(?)
tp label byte
mtl db 50
tl db ?
tf db 50 dup(?)
array db 50 dup(?)
array1 db 50 dup(?)
crlf db 13,10,'$'
mess db 'input the text : ','$'
mess1 db 'the first time : ','$'
mess2 db 'the second time : ','$'
mess3 db 'decryot or not(y/n) : ','$'
mess4 db 'input the code : ','$'
mess5 db 'jie mi : ','$'
mess6 db 'error!! input again : ','$'
.code
;*******************************************************
main proc far
initz
call rt
cmp tl,0
jz a0
call encrypt
prompt crlf
prompt mess3
mov ah,01
int 21h
cmp al,'y'
jz yes
cmp al,'n'
jz a0
finish
yes: prompt crlf
prompt mess4
call check
prompt crlf
prompt mess5
call decrypt
a0: finish
main endp
;**************************************************************
rt proc near
prompt mess
mov ah,0ah
lea dx,tp
int 21h
prompt crlf
mov bl, tl
mov cx,50
sub cx,bx
blank1:
mov tf[bx],20h
inc bx
loop blank1
ret
rt endp
;*******************************************
encrypt proc near
prompt mess1
mov bx,0
st0:
xor dh,dh
xor ah,ah
mov al,tf[bx]
add al,14
mov ch,9
div ch
mov array[bx],al
mov al,ah
and ax,00ffh
mov ch,5
div ch
mov array1[bx],al
mov tf[bx],ah
mov dl,ah
mov ah,02
add dx,23h
int 21h
inc bl
cmp bl,tl
jge go_on
jmp st0
go_on: prompt crlf
prompt mess2
mov si,0
mov cl,tl
a20: mov al,tf[si]
mov dl,al
xor dh,dh
mov ah,02
add dx,3fh
add dx,si
mov tf[si],dl
int 21h
inc si
cmp si,bx
jge exit
jmp a20
exit:
ret
encrypt endp
;**************************************************************
decrypt proc near
mov di,bx
xor bx,bx
mov cl,5
mov ch,9
mov si,0
b2: mov al,tf[si]
xor ah,ah
sub ax,si ;// 对应第二次加密
sub ax,3fh
push ax
mov al,array1[si] ;/ 对应第二次加密
mul cl ; mod 5解密
pop bx ;
add ax,bx ;
push ax ;
mov al,array[si] ;
mul ch ;mod 9解密
pop bx ;
add ax,bx ;
sub ax,14 ;减去随机加数//
mov dx,ax
mov ah,02
int 21h
inc si
cmp si,di
jge exit1
jmp b2
exit1:ret
decrypt endp
;******************************************************
check proc near
push ax
push bx
push cx
push dx
stt: mov cx,6
mov si,0
check0:
mov ah,01
int 21h
mov codes[si],al
inc si
loop check0
mov si,0ffffh
check1: inc si
mov al,codes[si]
cmp al,secret[si]
jz exit2
prompt crlf
prompt mess6
jmp stt
exit2: cmp si,6
jg exit3
exit3: pop dx
pop cx
pop bx
pop ax
ret
check endp
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -