是因为缺失WindowsCodecs.dll文件,解决步骤如下:
1、通过一定的途径获取到WindowsCodecs.dll文件,例如网上寻找并下载。
2、将WindowsCodecs.dll文件复制到“C:\Windows\System32”这个目录下。
3、然后,点击“开始菜单”中的“运行”按钮,输入:regsvr32 WindowsCodecs.dll,点击确定。
4、此时d出安装完成WindowsCodecs.dll文件的提示,点击确定。
这是我1993年自娱自乐编制的一个简单的加密解密程序(按内存映像文件编写,可转换为com文件),里面用了较多的文件处理dos功能调用,也包括42H。供参考 !!!编程的关键是基础性的东西,不要想着一口就吃成个胖子 !!!
code segment
assume cs:code
org 100h
start: jmp begin
filename db 64
db 0
namee db 64 dup('0')
newname db 64 dup(0)
password db '123456'
message db 0ah,0dh,'Pack and Unpack Software Ver 3.00'
db 0ah,0dh,'$'
prompt1 db 0ah,0dh,'input file_name: ','$'
prompt2 db 0ah,0dh,'password : ','$'
prompt3 db 0ah,0dh,'warning ! please wait . . . ',0ah,0dh,'$'
prompt4 db 0ah,0dh,'finished ','$'
prompt5 db 0ah,0dh,'pack or unpack other file(n/otherkey)? ','$'
prompt6 db 0ah,0dh,'input pack or unpack key_char : ','$'
errmsg db 0ah,0dh,'file operation error',0ah,0dh,'$'
key_ db 2
db ?
key_char db 2 dup(0)
buf db ?
cur_pos dw ?
disp db 0,0,0,0
number dw 0
begin: push cs
pop ds
mov ah,15
int 10h
mov ah,0
int 10h
mov ah,9
mov dx,offset message
int 21h
mov di,5
line: mov ah,9
mov dx,offset prompt2
int 21h
mov si,offset password
mov cx,6
loop1: mov ah,8
int 21h
cmp al,[si]
je pass
dec di
cmp di,0
jg line
int 20h
pass: inc si
loop loop1
mov ah,9
mov dx,offset prompt6
int 21h
mov ah,1
mov dx,offset key_
int 21h
mov byte ptr key_char,al
repeat: mov ah,9
mov dx,offset prompt1
int 21h
mov cx,64
mov al,0
mov di,offset newname
push cs
pop es
cld
rep stosb
mov ah,10
mov dx,offset filename
int 21h
mov al,filename[1]
mov ah,0
mov si,offset namee
add si,ax
mov byte ptr [si],0
mov ah,9
mov dx,offset prompt3
int 21h
mov ah,3eh
mov bx,0
int 21h
call getcur
mov ah,3dh
mov dx,offset namee
mov al,2
int 21h
mov di,ax
jnc loop2
jmp error
loop2: mov ah,3fh
mov bx,di
mov cx,1
mov dx,offset buf
int 21h
jnc line10
jmp error
line10: cmp ax,0
je close
mov al,buf
xor al,byte ptr key_char
mov buf,al
call list
mov ah,42h ##########################
mov al,1
mov bx,di
mov dx,-1
mov cx,-1
int 21h
jnc line11
jmp error
line11: mov ah,40h
mov bx,di
mov cx,1
mov dx,offset buf
int 21h
jnc loop2
jmp error
jmp loop2
close: mov ah,3eh
mov bx,di
int 21h
jnc line12
jmp error
line12: mov ah,9
mov dx,offset prompt4
int 21h
push cs
pop es
mov di,offset namee
mov cl,filename[1]
mov ch,0
mov al,'$'
repne scasb
jz next1
mov si,offset namee
mov di,offset newname
mov cl,filename[1]
mov ch,0
loop4: mov al,[si]
cmp al,'.'
jne l2
mov byte ptr [di],'$'
inc di
l2: mov [di],al
inc si
inc di
loop loop4
mov bx,di
mov si,offset newname
sub di,si
mov cl,filename[1]
mov ch,0
cmp cx,di
jne l3
mov byte ptr [bx],'$'
l3: nop
jmp next2
next1: mov si,offset namee
mov di,offset newname
mov cl,filename[1]
mov ch,0
loop3: mov al,[si]
cmp al,'$'
je l1
mov [di],al
inc di
l1: inc si
loop loop3
next2: nop
mov ah,56h
mov dx,offset namee
mov di,offset newname
int 21h
mov ah,3dh
jmp line9
kbd db 'con',0
line9: mov dx,offset kbd
mov al,0
int 21h
line20: mov ah,9
mov dx,offset prompt5
int 21h
mov ah,1
int 21h
cmp al,'n'
je exit
jmp repeat
exit: int 20h
error: mov ah,3dh
mov dx,offset kbd
mov al,0
int 21h
mov ah,9
mov dx,offset errmsg
int 21h
jmp line20
int 20h
convert proc near
mov cx,4
mov ax,number
mov si,offset disp
lp: mov bl,0
shl ax,1
rcl bl,1
shl ax,1
rcl bl,1
shl ax,1
rcl bl,1
shl ax,1
rcl bl,1
cmp bl,10
jl ad30
add bl,7
ad30: add bl,30h
mov [si],bl
inc si
loop lp
ret
convert endp
list proc near
inc word ptr number
call convert
mov ah,2
mov bh,0
mov dx,cur_pos
int 10h
mov ah,40h
mov bx,1
mov cx,4
mov dx,offset disp
int 21h
ret
list endp
getcur proc near
mov ah,3
mov bh,0
int 10h
mov cur_pos,dx
mov word ptr number,0
ret
getcur endp
code ends
end start
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)