📄 dvv.asm
字号:
mov si,offset ofcbname
mov cx,11
flop: mov al,[bx]
mov [si],al
add bx,1
add si,1
loop flop
mov ofcbblk,0
mov ofcbrcsz,0
mov ax,0
mov bx,offset hh
add bx,1
mov [bx],ax
mov [bx+2],ax
mov oendcode,0
mov wbuff,0
mov ax,dat1
mov es,ax
call onewrit
no2: mov bx,offset file2
mov si,offset ofcbname
mov cx,11
flop2: mov al,[bx]
mov [si],al
add bx,1
add si,1
loop flop2
mov ofcbblk,0
mov ofcbrcsz,0
mov ax,0
mov bx,offset hh
add bx,1
mov [bx],ax
mov [bx+2],ax
mov oendcode,0
mov wbuff,0
mov ax,dat2
mov es,ax
call onewrit
no3: mov bx,offset file3
mov si,offset ofcbname
mov cx,11
flop3: mov al,[bx]
mov [si],al
add bx,1
add si,1
loop flop3
mov ofcbblk,0
mov ofcbrcsz,0
mov ax,0
mov bx,offset hh
add bx,1
mov [bx],ax
mov [bx+2],ax
mov oendcode,0
mov wbuff,0
mov ax,dat3
mov es,ax
call onewrit
no4: mov bx,offset file4
mov si,offset ofcbname
mov cx,11
flop4: mov al,[bx]
mov [si],al
add bx,1
add si,1
loop flop4
mov ofcbblk,0
mov ofcbrcsz,0
mov ax,0
mov bx,offset hh
add bx,1
mov [bx],ax
mov [bx+2],ax
mov oendcode,0
mov wbuff,0
mov ax,dat4
mov es,ax
call onewrit
no5: mov bx,offset file5
mov si,offset ofcbname
mov cx,11
flop5: mov al,[bx]
mov [si],al
add bx,1
add si,1
loop flop5
mov ofcbblk,0
mov ofcbrcsz,0
mov ax,0
mov bx,offset hh
add bx,1
mov [bx],ax
mov [bx+2],ax
mov oendcode,0
mov wbuff,0
mov ax,dat5
mov es,ax
call onewrit
no6: mov bx,offset file6
mov si,offset ofcbname
mov cx,11
flop6: mov al,[bx]
mov [si],al
add bx,1
add si,1
loop flop6
mov ofcbblk,0
mov ofcbrcsz,0
mov ax,0
mov bx,offset hh
add bx,1
mov [bx],ax
mov [bx+2],ax
mov oendcode,0
mov wbuff,0
mov ax,dat6
mov es,ax
call onewrit
ret
stdsk endp
onewrit proc near
call e10creat
cmp oendcode,00
jnz a30
mov cw0,62
w00: dec cw0
jz w08
mov cx,512
mov di,wbuff
mov si,offset odskrecs
kkbv: mov ax,es:[di]
mov [si],ax
add si,2
add di,2
loop kkbv
add wbuff,1024
call f10writ
cmp oendcode,00
jnz w09
jmp w00
w08: mov dx,offset ok
call x10err
mov ah,10h
mov dx,offset ofcbrec
int 21h
cmp al,00
jnz a30
ret
a30: mov dx,offset creatmsg
call x10err
ret
w09: mov dx,offset me
call x10err
ret
onewrit endp
getdata proc near
mov dx,03e1h
out dx,al
mov cx,800
getloop: mul cx
loop getloop
mov dx,03e0h
out dx,al
mov cx,360
o_l: mul cx
loop o_l
mov dx,03e0h
getl0: in al,dx
test al,01h
jz getl0
mov dx,03e1h
in ax,dx
shr ax,1
shr ax,1
and ax,3fffh
mov cx,ax
ret
getdata endp
start endp
sampl proc far
push ax
push bx
push cx
push dx
push di
push si
push ds
jmp [testi]
get: nop
mov ax,data
mov ds,ax
mov bx,xw1
push ds
mov al,14
call getdata
mov ax,dat1
mov ds,ax
mov [bx],cx
mov al,11
call getdata
mov ax,dat2
mov ds,ax
mov [bx],cx
mov al,08
call getdata
mov ax,dat3
mov ds,ax
mov [bx],cx
mov al,00
call getdata
mov ax,dat4
mov ds,ax
mov [bx],cx
mov al,03
call getdata
mov ax,dat5
mov ds,ax
mov [bx],cx
mov al,06
call getdata
mov ax,dat6
mov ds,ax
mov [bx],cx
pop ds
add xw1,2
cmp xw1,62000
jb sslp
mov ie,0
mov ax,offset sslp
mov testi,ax
sslp: pop ds
pop si
pop di
pop dx
pop cx
pop bx
mov al,20h
out 20h,al
pop ax
iret
sampl endp
retime proc near
cli
cld
mov di,20h
mov ax,0
mov es,ax
mov ax,0fea5h
stosw
mov ax,0f000h
stosw
mov al,36h
out 43h,al
mov ax,0
out 40h,al
mov al,ah
out 40h,al
sti
ret
retime endp
setime proc near
mov ax,offset get
mov testi,ax
cld
mov ax,0
mov es,ax
in al,21h
or al,1
out 21h,al
mov di,20h
mov ax,offset sampl
stosw
mov ax,cs
stosw
cli
mov al,36h
out 43h,al
mov ax,2384
out 40h,al
mov al,ah
out 40h,al
sti
ret
setime endp
e10creat proc near
lea dx,ofcbrec
mov ah,16h
int 21h
cmp al,00
jnz oe20
mov ofcbrcsz,128
mov ah,1ah
lea dx,odskrecs
int 21h
ret
oe20: mov oendcode,01
ret
lea dx,creatmsg
call x10err
ret
e10creat endp
f10writ proc near
mov ah,28h
mov cx,8
lea dx,ofcbrec
int 21h
mov oendcode,al
ret
f10writ endp
q10clr proc near
mov ax,0600h
mov bh,07
mov cx,00
mov dx,184fh
int 10h
ret
q10clr endp
q20curs proc near
mov ah,02
mov bh,00
mov dh,rowcrt
mov dl,00
int 10h
inc rowcrt
ret
q20curs endp
x10err proc near
mov ah,09
int 21h
ret
x10err endp
outc proc near
cmp ax,0
jge o_o
mov dl,'-'
mov [bx],dl
add bx,1
neg ax
jmp o_p
o_o: cmp ax,10000
jge outc3
mov dl,20h
mov [bx],dl
inc bx
o_p: cmp ax,1000
jge o_1000
mov dl,20h
mov [bx],dl
inc bx
cmp ax,100
jge o_100
mov dl,20h
mov [bx],dl
inc bx
jmp o_10
outc3: mov si,10000
call cha1
mov [bx],dl
inc bx
o_1000: mov si,1000
call cha1
mov [bx],dl
inc bx
o_100: mov si,100
call cha1
mov [bx],dl
inc bx
o_10: mov si,10
call cha1
mov [bx],dl
inc bx
add al,30h
mov [bx],al
inc bx
ret
outc endp
cha1 proc near
mov dl,0
cha2: sub ax,si
jb cha3
inc dl
jmp cha2
cha3: add ax,si
add dl,30h
ret
cha1 endp
print proc near
pl: mov dl,[bx]
inc bx
cmp dl,'$'
je pe
push bx
mov ah,5
int 21h
pop bx
jmp pl
pe: mov dl,0ah
mov ah,5
int 21h
mov ah,5
mov dl,0dh
int 21h
ret
print endp
h_data1 proc near
ret
mov ax,offset swi00
mov sw10,ax
mov ax,dat2
mov es,ax
mov si,20
mov cx,32000
hfh_loop: mov ax,es:[si]
mov bx,es:[si-20]
push cx
call swich1u
add si,2
pop cx
loop hfh_loop
ret
h_data1 endp
h_data2 proc near
ret
mov ax,offset swi00
mov sw10,ax
mov ax,dat4
mov es,ax
mov si,20
mov cx,32000
fh_loop: mov ax,es:[si]
mov bx,es:[si-20]
push cx
call swich1u
add si,2
pop cx
loop fh_loop
ret
h_data2 endp
swich1u proc near
jmp [sw10]
swi00: cmp ax,700
jl rsw00
mov crs6,ax
mov ax,0
MOV H_00C,AX
mov es:[si-20],ax
mov ax,offset swi01
mov sw10,ax
ret
rsw00: mov ax,0
mov es:[si-20],ax
ret
swi01: cmp ax,bx
jge rsw01
call h_max
mov crsp1,Dx
mov cx,crsp1
sub cx,crs6
cmp cx,vaxx
jl rsw911
mov ax,H_00C
SHL AX,1
SHL AX,1
MOV H_00C,0
mul cx
mov cx,crs6
cmp cx,400
jge rsw012
mov cx,400
rsw012: div cx
cmp ax,4
jl rsw011
mov es:[si-20],ax
mov ax,offset swi09
mov sw10,ax
mov al,vccx
mov vcx,al
ret
rsw01: mov crsp1,ax
INC H_00C
mov ax,0
mov es:[si-20],ax
ret
rsw911: mov ax,0fffeh
mov es:[si-20],ax
mov ax,bx
mov crs6,ax
mov ax,offset swi02
mov sw10,ax
MOV H_00C,0
ret
rsw011: mov es:[si-20],ax
mov ax,bx
mov crs6,ax
mov ax,offset swi02
mov sw10,ax
MOV H_00C,0
ret
swi09: dec vcx
jnz rws9x
mov crs6,ax
mov crsp1,ax
mov ax,offset swi02
mov sw10,ax
rws9x: mov ax,0
mov es:[si-20],ax
ret
swi02: cmp ax,bx
jle rsw03
call h_min
mov crs6,dx
mov crsp1,ax
mov ax,offset swi01
mov sw10,ax
mov ax,0
MOV H_00C,0
mov es:[si-20],ax
ret
rsw03: mov crs6,ax
mov ax,0
mov es:[si-20],ax
ret
swich1u endp
h_max proc near
push cx
push ax
push si
mov cx,10
q_loop: mov ax,es:[si]
cmp ax,es:[si-2]
jge w_max
mov ax,es:[si-2]
w_max: sub si,2
loop q_loop
mov dx,ax
pop si
pop ax
pop cx
ret
h_max endp
h_min proc near
push cx
push ax
push si
mov cx,10
r_loop: mov ax,es:[si]
cmp ax,es:[si-2]
jbe w_min
mov ax,es:[si-2]
w_min: sub si,2
loop r_loop
mov dx,ax
pop si
pop ax
pop cx
ret
h_min endp
f_data1 proc near
ret
mov ax,offset swi10
mov sw20,ax
mov ax,dat3
mov es,ax
mov si,20
mov cx,32000
hff_loop: mov ax,es:[si]
mov bx,es:[si-20]
push cx
call swich1d
add si,2
pop cx
loop hff_loop
ret
f_data1 endp
f_data2 proc near
ret
mov ax,offset swi10
mov sw20,ax
mov ax,dat5
mov es,ax
mov si,20
mov cx,32000
ff_loop: mov ax,es:[si]
mov bx,es:[si-20]
push cx
call swich1d
add si,2
pop cx
loop ff_loop
ret
f_data2 endp
swich1d proc near
jmp [sw20]
swi10: cmp ax,700
jb rws10
mov crs4,ax
mov crs5,ax
mov ax,offset swi11
mov sw20,ax
rws10: mov ax,0
mov es:[si-20],ax
ret
swi11: cmp ax,bx
jge rws11
call h_max
mov crs4,dx
mov crs5,ax
mov ax,offset swi12
mov sw20,ax
mov ax,0
mov es:[si-20],ax
MOV H_01C,0
ret
rws11: mov crs4,ax
mov ax,0
mov es:[si-20],ax
ret
swi12: cmp ax,bx
jle rws13
call h_min
mov crs5,dx
mov cx,crs4
sub cx,crs5
cmp cx,vaxy
jl rws133
mov ax,H_01C
SHL AX,1
SHL AX,1
MOV H_01C,0
mul cx
mov cx,crs5
cmp cx,400
jge rsw92
mov cx,400
rsw92: div cx
cmp ax,4
jl rws131
mov es:[si-20],ax
mov ax,offset swi19
mov sw20,ax
mov al,vccx
mov vcy,al
ret
rws13: mov crs5,ax
INC H_01C
mov ax,0
mov es:[si-20],ax
ret
rws133: mov ax,0fffeh
mov es:[si-20],ax
mov ax,bx
mov crs4,ax
mov ax,offset swi11
mov sw20,ax
MOV H_01C,0
ret
rws131: mov es:[si-20],ax
mov ax,bx
mov crs4,ax
mov ax,offset swi11
mov sw20,ax
MOV H_01C,0
ret
swi19: dec vcy
jnz rws9o
mov crs4,ax
mov ax,offset swi11
mov sw20,ax
rws9o: mov ax,0
mov es:[si-20],ax
ret
swich1d endp
cod ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -