基于汇编语言的文件加密和解密实验报告.doc
文本预览下载声明
贵州大学计算机科学与信息学院
计算机科学与技术系 实验报告纸
课程名称:实验日期:姓名:学号:实验序号:指导教师:实验成绩: 实验名称实验目的
2.掌握文件代号式磁盘管理程序的设计方法。
实验环境
Windows XP,masm宏汇编,link连接程序
四、实验内容实验内容算法描述及实验步骤
‘异或’运算为二元逻辑运算,运算规则为:参加运算的两位相同时结果为0,相异时结果为1。
‘异或’运算的特点:某逻辑变量与0异或时其值不变,与1异或时其值取反。若一字符字节与全1字节(FFH)异或,各位同时变反,原字符信息不可读出,可达到加密的目的。若重复上述操作,该字节将恢复原值。所以同一程序既可以实现加密也可实现解密。
2.文件缓冲区的设置
程序中应为读入的文本设置一个缓冲区,当缓冲区大于文件长度时,文件读入功能能自动获取读入文本的长度,当缓冲区小于文件长度时,文件读入功能将给出缓冲区满错误提示信息。
3.磁盘代号式文件读写操作的步骤
(1)从键盘输入待处理文件名,在文件名字符串后加0,形成ASCIIZ串。
(2) 打开待处理文件,保存文件代号。
(3)读文件。文件内容读入缓冲区。保存读入字节数。
(4)循环处理缓冲区中的文件字节(本例中为异或FFH)
(5)将文件指针移回到文件头。
(6)写文件。
(7)关闭文件。
3、源程序代码
DATA SEGMENT
FNAME DB 40
DB ?
DB 40 DUP(?)
HANDLE DW ?
LEN DW ?
BUF DB 2000 DUP(?)
str db YUELI 085# 2010(1)grade,0DH,0AH,$
INNAME DB Please input the files that locked or unlocked:$
OPENR DB 0DH,0AH,open error!,0DH,0AH,$
READR DB 0DH,0AH,read error!,0DH,0AH,$
WRR DB 0DH,0AH,write error!,0DH,0AH,$
MPTR DB 0DH,0AH,move error!,0DH,0AH,$
DATA ENDS
STACK SEGMENT PARA STACK STACK
DW 100H DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
mov ax,data
mov ds,ax
mov ah,9
mov dx,offset str
int 21h
LEA DX,INNAME
CALL DISPSTR ;提示输入文件名
LEA DX,FNAME
MOV AH,0AH
INT 21H ;从键盘接受文件名
MOV AL,FNAME+1
MOV AH,0
MOV BX,AX
MOV [BX+FNAME+2],0 ;形成ASCIZ串
LEA DX,FNAME+2
MOV AX,3D02H
INT 21H ;打开文件
JC OPENE
MOV HANDLE,AX ;保存文件代号
MOV BX,AX
MOV CX,2000
LEA DX,BUF
MOV AH,3FH
INT 21H
JC REDEE
MOV LEN,AX ;保存读入字节数
MOV CX,AX ;传送读入字节数
DEC CX
LEA BX,BUF
LOP: XOR BYTE PTR[BX],0FFH
显示全部