首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

关于汇编语言加密,该怎么处理

2012-03-25 
关于汇编语言加密DATA SEGMENTSTORE DB 16 DUP(?)INPUT DB PLEASE INPUT FORMER PASSWORD IS:,$IN_PAS

关于汇编语言加密
DATA SEGMENT
STORE DB 16 DUP(?)
INPUT DB 'PLEASE INPUT FORMER PASSWORD IS:','$'
IN_PASS DB 16 DUP(?)
PASSTABLE DB 2,5,1,0,4,3,8,7,9,6
MESS4 DB '输入密码非法','$'
MESS5 DB 0DH,0AH,'$'

USER_NAME DB 'ABC'
USER_PASS DB '123'

PASS_LEN EQU $-USER_PASS



DATA ENDS

CODE SEGMENT
ASSUME DS:DATA,ES:DATA,CS:CODE
START:
  MOV AX,DATA
  MOV DS,AX
  MOV ES,AX

  MOV DX,OFFSET INPUT ;提示输入密码
  MOV AH,09
  INT 21H
   
  MOV SI,OFFSET IN_PASS ;输入密码
  MOV AH,10
  INT 21H
   
  MOV DX,OFFSET MESS5
  MOV AH,09
  INT 21H

  MOV CX,PASS_LEN ;加密循环,输入密码作为al的初值,进行查表,所对应的表中数字,即为加密后的数字
  MOV BX,OFFSET PASSTABLE
  MOV BP,OFFSET STORE  
  MOV SI,OFFSET IN_PASS
   
  L6: 
  MOV AL,[SI]
  SUB AL,30H
  XLAT
  ADD AL,30H
  MOV [BP],AL ;将加密之后的数字依次存入到申请的STORE中
  INC BP
  INC SI
  DEC CX
  JNZ L6
   
   
  MOV DX,OFFSET MESS5
  MOV AH,09
  INT 21H
   

   
MOV AH,4CH
INT 21H

CODE ENDS
END START

想要输入0-9的数字,加密之后变成密码表中的数字,然后将加密后的数字存入到自己申请的空间中,但无法实现呢?求各位牛人给予解释啊!

[解决办法]
进 debug 调试下看看了。首先开始的输入部分就有问题吧,int21h 的 10(0ah)功能,输入缓冲区是 ds:dx 而不是 ds:si,而且这个缓冲区有特别的规定的。

热点排行