汇编语言-编写一个加密与解密0~9位字序的程序

来源:百度知道 编辑:UC知道 时间:2024/05/21 23:40:23
编写一个加密与解密0~9位字序的程序,设0,1,2,3,4,5,6,7,8,9,0对应密码表为9,0,8,2,7,4,6,3,1,5,键盘输入任意一个4位数要求程序能够马上输出这4位数对应的密码。如,键盘输入4925,显示输出7584。

-------------------------------------------------------
小弟刚接触汇编语言不久,水平很菜,高手莫笑。。
以下是小弟编写的加密程序,得不出正确答案,还望高手指教,若您能附上解密程序,感激不尽。

TABLE SEGMENT
TAB DB '9082746315'
TEM DB 4 DUP(?)
TABLE ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:TABLE
START:MOV AX,TABLE
MOV DS,AX

MOV CX,4
MOV SI,0

IN_S: MOV AH,01H
INT 21H
MOV TEM[SI],AL
INC SI
LOOP IN_S

MOV DL,0DH
MOV AH,02H
INT 21H

MOV DL,0AH
MOV AH,02H
INT 21H

MOV CX,4
MOV SI,0
MOV BX,OFFSET TAB
OUT_S: MOV AL,TEM[SI]-30H
XLAT TAB
MOV DL,AL
MOV AH,02H
INT 21H
INC SI

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
CR equ 000DH
LF equ 000AH
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; -------------------------------------
; 功能:输出回车换行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
; -------------------------------------
Input_Code proc Near ;键盘输入指定位数的明码或密码并保存