我试图读入并加密文件的内容。使用以下代码加密函数,我将其从C转换为汇编:
unsigned short int r;
unsigned short int c1 =52845;
unsigned short int c2 = 22719:
unsigned char eencrypt(char plain) unsigned char plain;
{ unsigned char cipher;
cipher = (plain ^ (r >> 8));
r = (cipher + r) * c1 + c2;
return cipher;
}
到目前为止我的代码是:
.data
file db "File.txt",0
buffersize = 512
buffer db ?
filehandle dw ?
cipher db ?
r db ?
c1 dw 52845
c2 dw 22719
RSP db ?
.code
org 100h
start:
mov ax,@DATA
mov ds, ax
mov ah,3dh ;open text file
mov al,0
mov dx, offset file
int 21h
mov filehandle,ax
mov ah, 3fh ;read file
mov bx, filehandle
mov cx, buffersize
mov dx, offset buffer
int 21h
cmp ax,0
mov dx, offset buffer
mov ah, 09h
int 21h
call Encrypt
Encrypt:
mov DWORD PTR [RSP - 4], 0
movzx EAX, BYTE PTR [cipher]
movzx ECX, WORD PTR [r]
sar ECX, 8
xor EAX, ECX
mov DL, AL
mov BYTE PTR [RSP - 5], DL
movzx EAX, BYTE PTR [cipher] ;# cipher
movzx ECX, WORD PTR [r]
add EAX, ECX
movzx ECX, WORD PTR [c1] ;#c1
imul EAX, ECX
movzx ECX, WORD PTR [c2] ;#c2
add EAX, ECX
mov SI, AX
mov WORD PTR [r], SI
movzx EAX, BYTE PTR [RSP - 5]
mov ax, 4c00h
int 21h
end start
我无法理解如何将文件中的文本发送到加密功能,然后将新的加密代码打印到屏幕上。