关于华教的 Filevxd.vxd (虚拟C: 可写), RPL 编程...

请教高手:
Filevxd.vxd 是虚拟写到用户盘吗? 实现过程还要设置什么?

有谁正在用华教的可否在无盘98中复一个发给本人,先谢了!

Email: pwq@gfzj.com
zjpwq@tom.com

没人知道吗? 为什么不说两句.

jmp begin
;------------------------------ data
r_error db 0dh,0ah," Read user name error!“,0dh,0ah,07h,”$"
environ1 db “USER=”
environ2 db “NETID=”
buf1: db 64 dup(0) ; 控制数据
buf2: db 132 dup(0) ; 返回数据
BCDBUF: db 16 dup(0)
db “$”
byteb dw 0
byteb1 dw 0
read_err: mov ah,9
lea dx,r_error
int 21h
jmp exit1
nwuser: mov ax,0ee00h
int 21h
cmp ax,0ee00h
jz read_err
; mov cx,1234h
; mov bx,5678h
; mov ax,90abh
mov bcdbuf+0,ch
mov bcdbuf+1,cl
mov bcdbuf+2,bh
mov bcdbuf+3,bl
mov bcdbuf+4,ah
mov bcdbuf+5,al
jmp netid
begin: mov ax,355ch
int 21h
mov ax,es
mov dx,cs
cmp ax,dx
jz nwuser
mov ax,cs
mov es,ax
mov byte ptr [buf1+0ah],2ah
mov byte ptr [buf1+1ah],2ah
mov byte ptr [buf1+40h],90h
mov byte ptr [buf1],0b3h
mov word ptr [buf1+06h],cs
lea di,buf2
mov word ptr [buf1+04h],di
mov word ptr [buf1+08h],0d000h
lea bx,buf1
int 5ch ; 读 ID 和用户名
lea dx,buf2
add dx,60
mov bx,dx
mov di,dx
mov ax,0
cld
mov cx,0ffffh
repne scasb
sub di,bx
mov dx,di
dec dx
mov byteb1,dx

;==============================
mov bx,16h ; 找环境变量 xxxx:0000
mov bx,[bx]
mov es,bx
mov bx,2ch
mov bx,es:[bx]
mov es,bx
mov al,0
mov di,0
cld
loc2: mov cx,0ffffh
repne scasb
cmp byte ptr es:[di],0 ; 找最后的一个 (标志=‘0’)
jne loc2 ;
;---------------------------- user=
lea si,environ1 ; environ1 db “USER=”
mov cx,5
rep movsb ; set USER=
lea bx,buf2
add bx,60
mov si,bx
cld
mov cx,byteb1
rep movsb
mov byte ptr es:[di],0 ; END symbols
inc di
mov byteb,di
;netid=
;----------------- BCD to ASCII ------------
NETID: mov si,offset buf2
mov di,offset bcdbuf
mov cx,06h
cld
trant: mov dx,cx
mov al,[si]
inc si
mov bl,al
mov cl,4
shr al,cl
cmp al,0ah
jc bcd1_9
add al,37h
jmp bcd1
bcd1_9: or al,30h
bcd1: mov [di],al
inc di
mov al,bl
and al,0fh
cmp al,0ah
jc bcd1_9a
add al,37h
jmp bcd1a
bcd1_9a: or al,30h
bcd1a: mov [di],al
mov cx,dx
inc di
loop trant
;---------------------- End BCD to ASCII
mov di,byteb
lea si,environ2 ; environ2 db “netid=”
mov cx,6
rep movsb ; set netid=
lea bx,bcdbuf
mov si,bx
cld
mov cx,0ch
rep movsb
mov byte ptr es:[di],0 ; END symbols
inc di
mov byte ptr es:[di],0 ; END symbols
;==============================
exit1: mov ax,4c00h
int 21h
end.

运行后 设置环境变量 user=用户名 ,netid= 网卡mac地址