mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-16 15:59:24 +00:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
title FREE.ASM
|
||||
page,132
|
||||
|
||||
cseg segment para 'code'
|
||||
assume cs:cseg
|
||||
main proc far
|
||||
org 100h
|
||||
start:
|
||||
jmp begin
|
||||
|
||||
banner db 0ah,'FREE Vers 1.0 - Sept. 1985 - by Art Merrill',0dh,0ah,'$'
|
||||
db 'Copyright (C) 1985',0dh,0ah,'$'
|
||||
db 'Ziff-Davis Publishing Company',0dh,0ah,'$'
|
||||
total: db 0ah,8 dup(0),' bytes total disk space',0dh,0ah
|
||||
diff: db 8 dup(0),' bytes allocated',0dh,0ah
|
||||
bytes: db 8 dup(0),' bytes available on disk',0dh,0ah,0ah,'$'
|
||||
hltotal: dw 0,0
|
||||
hlbytes: dw 0,0
|
||||
|
||||
begin:
|
||||
mov dx,offset banner
|
||||
mov ah,9
|
||||
int 21h
|
||||
|
||||
mov si,5ch ;address of selected drive
|
||||
mov dl,[si]
|
||||
mov ah,36h ;get disk free space
|
||||
int 21h
|
||||
|
||||
push ax ;save for total bytes
|
||||
push cx ;save for total bytes
|
||||
push dx ;save for total bytes
|
||||
|
||||
mul bx ;get total clusters
|
||||
mul cx ;get total bytes
|
||||
|
||||
std
|
||||
mov di,offset hlbytes+2
|
||||
xchg ax,dx
|
||||
stosw
|
||||
xchg ax,dx
|
||||
stosw
|
||||
|
||||
mov di,offset bytes+7 ;storage for ascii printout
|
||||
call ascii
|
||||
|
||||
pop dx ;get back total clusters
|
||||
pop cx ;get back bytes per sector
|
||||
pop ax ;get back sectors per cluster
|
||||
|
||||
mul dx ;total clusters
|
||||
mul cx ;bytes per sector
|
||||
|
||||
mov di,offset hltotal+2 ;same routine as above to get
|
||||
xchg ax,dx ; total bytes
|
||||
stosw
|
||||
xchg ax,dx
|
||||
stosw
|
||||
|
||||
mov di,offset total+8 ;storage for ascii printout
|
||||
call ascii
|
||||
|
||||
mov ax,word ptr hltotal+2 ;calculate difference between
|
||||
sub ax,word ptr hlbytes+2 ; total bytes and bytes allocated
|
||||
xchg ax,dx ; to get total bytes remaining
|
||||
mov ax,word ptr hltotal
|
||||
sub ax,word ptr hlbytes
|
||||
jnc skip
|
||||
dec dx ;adjust total for carry
|
||||
skip:
|
||||
mov di,offset diff+7 ;storage for ascii printout
|
||||
call ascii
|
||||
|
||||
mov dx,offset total ;print results
|
||||
mov ah,9
|
||||
int 21h
|
||||
|
||||
int 20h ;exit
|
||||
|
||||
main endp
|
||||
|
||||
ascii proc near
|
||||
xchg bp,dx ;save high word
|
||||
mov bx,0ah ;divisor
|
||||
mov cl,30h ;conversion for ascii
|
||||
rpt1:
|
||||
cmp bp,0 ;are we done with high words
|
||||
jz rpt2 ;yes
|
||||
xchg ax,bp ;no-get high word
|
||||
xor dx,dx ;clear dx
|
||||
div bx
|
||||
xchg bp,ax ;this will be the new high word
|
||||
div bx ;divide low word + remainder
|
||||
or dl,cl ;convert hex value to ascii
|
||||
mov [di],dl ;quotient into storage
|
||||
dec di ;step back one byte
|
||||
jmp rpt1 ;go again
|
||||
rpt2:
|
||||
xor dx,dx ;clear dx
|
||||
div bx
|
||||
or dl,cl ;convert hex value to ascii
|
||||
mov [di],dl ;quotient into storage
|
||||
dec di ;step back one byte
|
||||
cmp ax,0 ;are we done?
|
||||
jnz rpt2 ;no
|
||||
|
||||
ret ;yes
|
||||
ascii endp
|
||||
|
||||
cseg ends
|
||||
end start
|
||||
|
||||
Reference in New Issue
Block a user