. , , ,

,,,

, dir mkdir — ,

______________________________________________________________________

" "

.410703

..

..

1996

1. .................................

2. ........................................

3. .................................

4. .......................................

5. ............................

.....................................................

.....................................................

.....................................................

60- -

().

. -

, -

, . 70-

Intel 8008 -

.

1974 . -

Intel 8080.

Intel 8080 .

1878 . Intel -

Intel 8086, 8080 -

. -

-

- Intel -

8086 - 8088, 1981 . IBM

.

8088

80186, 8086 - 80186, 80286, 80386, -

-

.

-

. -, -

, , -

. -,

,

.

-

, , , -

, -

.

1.

-

Intel 8086 -

DIR MKDIR. .. c

( MKDIR) ,

.

(FAT), ,

.

DOS -

, ASCIIZ

, ; -

; .

39H 21H. DS:DX ASCIIZ , -

( ),

00H, :

PATHNAME DB 'C:UTILNU.EXE',0

( ) .

H (zero) ( ASCIIZ).

, CF -

0. CF 1, -

AX , ( 1.1),

, , AX -

03.

:

" : ; / | ? * + = [ ] . , < >

1.1

┌────┬──────────────────────────────────────┐

│ N │ 蠠 │

├────┼──────────────────────────────────────┤

│ 01 │ 蠠 │

│ 02 │ │

│ 03 │ │

│ 04 │ ⠠ │

│ 05 │ │

│ 06 │ ࠠ │

│ 07 │ │

│ 08 │ H 蠠 │

│ 09 │ 蠠 │

│ 10 │ │

│ 11 │ ࠠ │

│ 12 │ ࠠ │

│ 13 │ │

│ 15 │ ࠠ │

│ 16 │ 堠 │

│ 17 │ H  │

│ 18 │ H ⠠ │

└────┴──────────────────────────────────────┘

,

, 1.2.

1.2

┌───┬──────────┬───────┬───────────────────────────┐

│ N │ │ │ │

│ │ () │ ()│ │

├───┼──────────┼───────┼───────────────────────────┤

│1 │ 0 │ 8 │ ࠠ │

├───┼──────────┼───────┼───────────────────────────┤

│2 │ 8 │ 3 │ ࠠ │

├───┼──────────┼───────┼───────────────────────────┤

│3 │ 11 │ 1 │ ⠠ │

├───┼──────────┼───────┼───────────────────────────┤

│4 │ 12 │ 10 │ DOS │

├───┼──────────┼───────┼───────────────────────────┤

│5 │ 22 │ 2 │ │

├───┼──────────┼───────┼───────────────────────────┤

│6 │ 24 │ 2 │ ࠠ │

├───┼──────────┼───────┼───────────────────────────┤

│7 │ 26 │ 2 │ │

├───┼──────────┼───────┼───────────────────────────┤

│8 │ 28 │ 4 │ ࠠ │

└───┴──────────┴───────┴───────────────────────────┘

( DIR), -

21- . 21- ,

, 4 .

2.

. -

.

:

1. , ;

2. /D - ;

3. /M -

, , ;

4. PATH -

.

5. , , /D - -

, /M - .

.

3.

:

┌─────────┬────────────────────────────────────────────────────────────┐

│H │ 頠 │

├─────────┼────────────────────────────────────────────────────────────┤

│ HelpStr │ 蠠 │

│ stringT │ 堠 │

│ stringF │ 堠 │

│ stringU │ ࠠ │

│ err_m1 │ ! │

│ err_m2 │ ! │

│ err_m3 │ ! │

│ err_m4 │ ! │

│ ok_make │ ! │

│ no_make │ , .. ! │

│ │ . │

│ str_f │ ! │

│ str_k │ ! │

│ totalKB │ ࠠ │

│ freeKB │ ࠠ │

│ temp │ │

│ path │ ( - ) │

│ NewDTA │ DTA │

│ AttrF │ ࠠ │

│ TimeF │ ࠠ │

│ DateF │ ࠠ │

│ SizeF │ ࠠ │

│ NameF │ 젠 │

└─────────┴────────────────────────────────────────────────────────────┘

, :

┌─────────────────────────────────────────────────────────────────────────┐

│ /ࠠ │

│ WrtTime │

├─────────────────────────────────────────────────────────────────────────┤

│ /ࠠ │

│ WrtDate │

├─────────────────────────────────────────────────────────────────────────┤

│ , (NameF) │

│ , │

│ ClrName │

├─────────────────────────────────────────────────────────────────────────┤

│ │

│ WrtDir │

├─────────────────────────────────────────────────────────────────────────┤

│ │

│ WrtFile │

├─────────────────────────────────────────────────────────────────────────┤

│ ࠠ │

│ WLabel │

├─────────────────────────────────────────────────────────────────────────┤

│ 蠠 │

│ crlf │

├─────────────────────────────────────────────────────────────────────────┤

│ 㠠 │

│ curdir │

├─────────────────────────────────────────────────────────────────────────┤

│ . ࠠ │

│ AX - 堠 │

│ BX - ⠠ │

│ CX - 堠 │

│ DX - 堠 │

│ GetInfo │

│ │

├─────────────────────────────────────────────────────────────────────────┤

│ │

│ totsize │

├─────────────────────────────────────────────────────────────────────────┤

│ ࠠ │

│ │

│ fresize │

├─────────────────────────────────────────────────────────────────────────┤

│ 堠 │

│ Decimal │

└─────────────────────────────────────────────────────────────────────────┘

4.

.

, -

.

, , -

INT 21H (DOS Functions).

:

: AH 02H -

DL

:

───────────────────────────────────────────────────────────────────────────

: AH 09H -

DS:DX , '$' (ASCII 24H)

:

───────────────────────────────────────────────────────────────────────────

: AH 1aH - DTA.

DS:DX DTA

:

───────────────────────────────────────────────────────────────────────────

: AH 19H -

: AL DOS current default drive number (0=A, 1=B, ..)

───────────────────────────────────────────────────────────────────────────

: AH 36H -

DL drive number (0=default, 1=A, ..)

: AX ffffH DL invalid drive number

BX (allocation units)

CX ( 512)

DX

.:

:

AX = ffffH, .

, = (AX * CX * BX)

= (AX * CX * DX)

512 , :

= (AX * BX) / 2

= (AX * DX) / 2

───────────────────────────────────────────────────────────────────────────

: AH 3fH -

.

───────────────────────────────────────────────────────────────────────────

: AH 47H -

DL drive number (0=default, 1=A, etc.)

DS:SI address of a local buffer to hold a pathname (64 bytes)

: AX ( 1.1)

───────────────────────────────────────────────────────────────────────────

: AH 4fH - H

DS:DX 4eH

───────────────────────────────────────────────────────────────────────────

: AH 4eH - H

DS:DX ASCIIZ

CX

───────────────────────────────────────────────────────────────────────────

21h 0eH INT 10H:

-

. AL ,

BL BH. H, : CR (0dH), LF

(0aH), (07H) .. -

, , -

.

INT 20H DOS.

.

.

5.

D:ASM>kp.com <>

KP v1.0, Copyright (c) 1997, , ..

: kp : [/D] [/M]

( /D) - , * ?

( /M) - .

/D - 堠 /M -

:kp C:LANGBP*.* /D - C:LANGBP

kp C:* /D - C:

kp C:UTIL /M - UTIL :

kp /D -

/M, !

D:ASM>kp c:cd*.* /D <>

c:cd*.*

DIMKA

. <> 29/01/97 18:18:44

.. <> 29/01/97 18:18:44

read_me.txt 1834 19/11/96 17:58:40

rcdsim.com 6604 13/09/95 03:00:00

loadcd.exe 0352 13/09/95 03:00:00

rcdpc.sys 4231 13/09/95 03:00:00

run_me.bat 40 06/02/97 13:54:38

307240

6160

D:ASM>kp c:cdutil /M <>

c:cdutil

!

D:ASM>kp c:cd*.* /D

c:cd*.*

DIMKA

. <> 29/01/97 18:18:44

.. <> 29/01/97 18:18:44

UTIL <> 10/04/97 19:57:48

read_me.txt 1834 19/11/96 17:58:40

rcdsim.com 6604 13/09/95 03:00:00

loadcd.exe 0352 13/09/95 03:00:00

rcdpc.sys 4231 13/09/95 03:00:00

run_me.bat 40 06/02/97 13:54:38

307240

6152

D:ASM>kp * /D <>

*

NPACD

. <> 19/02/97 19:20:34

.. <> 19/02/97 19:20:34

THELP6<> 07/04/97 22:08:48

483552

8928

-

WINDOWS95 (v4.0095). ,

WINDOWS98 .

-

DOS BIOS. H , -

, -

. H -

.

1. .

2. .H. , , 1989

3. .

4. .., ..

5. H . IBM

MS-DOS

6. .. MS-DOS

7. . IBM PC , -

, 1992

;----------------------------------------

;

; " "

; .410703 ..

; (c)1997

;----------------------------------------

.MODEL TINY

.CODE

ORG 100h

begin: jmp start

HelpStr db 13,10,'KP v1.0, Copyright (c) 1997, , ..'

db 13,10,13,10,' '

db 13,10,' : kp :

[/D] [/M]'

db 13,10,' ( /D) -

, * ?'

db 13,10,' ( /M) -

.'

db 13,10,'/D -

/M - '

db 13,10,':kp C:LANGBP*.* /D -

C:LANGBP'

db 13,10,' kp C:* /D -

C:'

db 13,10,' kp C:UTIL /M - UTIL

:'

db 13,10,' kp /D -

'

db 13,10,' /M,

!',13,10,'$'

stringT db ' ',13,10,'$'

stringF db ' ',13,10,'$'

stringU db 13,10,' $'

err_m1 db 13,10,' ! $'

err_m2 db 13,10,' ! $'

err_m3 db 13,10,' ! $'

err_m4 db 13,10,' ! $'

ok_make db 13,10,' ! $'

no_make db 13,10,' , .. !'

db 13,10,'

.',10,13,'$'

str_f db 13,10,' ! $'

str_k db 13,10,' ! $'

totalKB dd 0 ;

freeKB dd 0 ;

space db ' $' ;

temp dw 0 ;

path db 65 dup (0) ; ( - )

NewDTA db 21 dup (0) ; DTA

AttrF db 0 ;

TimeF dw 0 ;

DateF dw 0 ;

SizeF dd 0 ;

NameF db 13 dup (0) ;

start:

push cs ;

pop ds ;

push cs ;

pop es ;

;

mov cl,ds:[80h] ;

cmp cl,0 ; - ?

je help ; ,

cmp cl,1 ; ,

je help ; Ctrl-Enter NC,

mov al,ds:[82h] ;

cmp al,'/' ; ?

jne not_help ; -

mov al,ds:[83h] ; -

cmp al,'M' ; /M

je not_m

cmp al,'D' ; /D

je noparam

jmp not_help

help:

mov ah,9 ;

lea dx,HelpStr

int 21h

ret ; DOS

not_m:

mov ah,9 ; ..

lea dx,no_make ;

int 21h

ret ; DOS

not_help: ;

mov ch,0

mov di,81h ;

mov al,' ' ;

CheckParam:

repe scasb ;

jne IsParam

IsParam: ;

mov si,di ;

dec si ;

lea di,path ;

inc cl

MoveParam:

lodsb ;

cmp al,' ' ; ,

je EndMoveParam ; ,

stosb ; - path

loop MoveParam ;

EndMoveParam:

push ax ;

lodsb ;

cmp al,'/' ; /

je okk

mov ah,9 ; error

lea dx,str_F

int 21h

int 20h

okk: lodsb ;

cmp al,'D' ; /D

je Dire ; DirE

cmp al,'M' ; /M

je MakeE ; MakeE

mov ah,9 ; error

lea dx,str_K

int 21h

int 20h

DirE: pop ax

mov al,0 ; NUL

mov [di],al

mov ah,9 ;

lea dx,stringU ; DX -

int 21h ; " "

mov ah,40h ;

mov bx,01

mov cx,50

lea dx,path

int 21h

call crlf ; ,

jmp skip_curdir ;

NoParam: ;

call curdir ;

skip_curdir:

lea dx,NewDTA ; DTA

mov ah,1Ah

int 21h

call WLabel ;

mov ah,4eh ; *.*

mov cx,10h ; CX - - 10h

lea dx,path ; DX - ( )

int 21h

jc NowFiles ; ,

call WrtDir ;

FindNextDir:

mov ah,4fh ; , - 4eh

int 21h

jc NowFiles ; ,

call WrtDir ;

jmp FindNextDir ;

NowFiles:

mov ah,4eh ; *.*

mov cx,27h ; CX - - 27h (RO+Hid+Sys+Arc)

lea dx,path ; DX -

int 21h

jc halt ; ,

call WrtFile ; ,

FindNextFile:

mov ah,4fh ;

int 21h

jc halt ; ,

call WrtFile ;

jmp FindNextFile ;

halt: call crlf ; ,

call totsize ;

call fresize ;

ret ; DOS

;------------- ---------------------------------

MakeE: pop ax ; ax

mov al,0 ; NUL

mov [di],al

mov ah,40h ;

mov bx,01

mov cx,50

lea dx,path

int 21h

mov ah,39h ;

lea dx,path

int 21h ;

cmp ax,01h ; #1

je p_err1

cmp ax,02h ; #2

je p_err2

cmp ax,03h ; #3

je p_err3

cmp ax,04h ; #4

je p_err4

mov ah,9h ; !

lea dx,ok_make ; -

int 21h

int 20h ; DOS

;-------- --------------------------------

p_err1: mov ah,9h

lea dx,err_m1

int 21h

int 20h

p_err2: mov ah,9h

lea dx,err_m2

int 21h

int 20h

p_err3: mov ah,9h

lea dx,err_m3

int 21h

int 20h

p_err4: mov ah,9h

lea dx,err_m4

int 21h

int 20h ; DOS

;------------------------------------------------------------------------

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

;:: / :::

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

WrtTime proc near

mov ah,9

lea dx,space

int 21h

mov ax,TimeF

shr ax,11

call DecWrt

mov ax,0e3ah

int 10h

mov ax,TimeF

shl ax,5

shr ax,10

call DecWrt

mov ax,0e3ah

int 10h

mov ax,TimeF

shl ax,11

shr ax,10

call DecWrt

ret

WrtTime endp

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

;::: / :::

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

WrtDate proc near

mov ah,9

lea dx,space

int 21h

mov ax,DateF

shl ax,11

shr ax,11

call DecWrt

mov ax,0e2fh

int 10h

mov ax,DateF

shl ax,7

shr ax,12

call DecWrt

mov ax,0e2fh

int 10h

mov ax,DateF

shr ax,9

add ax,80

call DecWrt

ret

WrtDate endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

; , (NameF) ::

; , ::

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

ClrName proc near

lea si,NameF ;

mov cx,1

rp: cmp cx,13 ; CX=13,

je vihod ;

mov al,0 ; 0 ( )

mov [si],al ; NameF

inc si ;

inc cx ;

jmp rp ;

vihod: ret

ClrName endp

;::::::::::::::::::::::::::::::::::::::

;::: ::::

;::::::::::::::::::::::::::::::::::::::

WrtDir proc near

cmp AttrF,10h ; : 10h,

jne exit1 ;

mov ah,40h ;

mov bx,01

mov cx,12 ; 13

lea dx,NameF ; DX -

int 21h

mov ah,9

lea dx,dirstr

int 21h

call WrtDate

call WrtTime

call crlf ; ,

exit1: call ClrName ;

ret

dirstr db '<>$'

WrtDir endp

;:::::::::::::::::::::::::::::::::::::::

;::: ::::::::

;:::::::::::::::::::::::::::::::::::::::

WrtFile proc near

cmp AttrF,10h ; : ,

je exit2

lea si,NameF ; SI

mov cx,1

loop1:

cmp cx,13 ; , CX=13,

je exit2 ;

mov al,[si] ; AL

cmp al,65 ; 'A'

jl skip1 ; ,

cmp al,90 ; AL 'Z'

jg skip1 ; ,

add al,32 ;

skip1:

mov dl,al

mov ah,02 ;

int 21h

inc si ;

inc cx ;

jmp loop1 ;

exit2:

call ClrName ;

mov ax,word ptr SizeF

mov dx,word ptr SizeF+2

call Decimal

call WrtDate

call WrtTime

call crlf

ret

WrtFile endp

;:::::::::::::::::::::::::::::::::::::::

;::: ::::::

;:::::::::::::::::::::::::::::::::::::::

WLabel proc near

call ClrName ;

mov ah,9 ;

lea dx,StringL ; DX -

int 21h

lea si,path4

mov ah,19h ;

int 21h

add al,41h ;

mov [si],al ;

lea si,path ;

lea di,path4 ;

mov al,[si] ;

cmp al,65 ; 'A'?

jl not_xchg ; ,

cmp al,122 ; 'z'?

jg not_xchg ; ,

cmp al,91 ; '[' -

je not_xchg

cmp al,92 ; '' -

je not_xchg

cmp al,93 ; ']' -

je not_xchg

cmp al,94 ; '^' -

je not_xchg

cmp al,95 ; '_' -

je not_xchg

cmp al,96 ; '`' -

je not_xchg

mov [di],al

not_xchg:

mov ah,4eh ;

mov cx,08h ; 08h, ..

lea dx,path4 ; DX -

int 21h

mov ah,40h ;

mov bx,01

mov cx,13 ; 13

lea dx,NameF ; DX -

int 21h

call crlf ; ,

call crlf ; ,

call ClrName ;

ret

StringL db ' $'

path4 db 'c:*.*',0 ;

WLabel endp

;::::::::::::::::::::::::::::::::::::::::::::::::::::::

;:::: :::::

;::::::::::::::::::::::::::::::::::::::::::::::::::::::

crlf proc near

mov ax,0e0dh ;

int 10h ; 13

mov ax,0e0ah ;

int 10h ; 10

ret

crlf endp

;::::::::::::::::::::::::::::::::::::::::::

;::: :::::

;::::::::::::::::::::::::::::::::::::::::::

curdir proc near

mov ah,9 ;

lea dx,stringC ; DX -

int 21h ; " "

lea si,path

mov ah,19h ;

int 21h

add al,41h ;

mov [si],al

inc si

mov al,58 ; ':'

mov [si],al

inc si

mov al,92 ; ''

mov [si],al

mov ah,47h ;

mov dl,00

lea si,path+3 ;

int 21h

lea si,path ;

a10loop:

cmp byte ptr [si],0

je a20exit

mov al,[si]

mov dl,al

mov ah,02

int 21h

inc si

jmp a10loop

a20exit:

; *.*

dec si ; 1

mov al,[si] ; , NUL

inc si ; SI

cmp al,92 ; , . - ,

je skip_slash

mov al,92 ; ''

mov [si],al

inc si

skip_slash:

mov al,42 ; '*'

mov [si],al

inc si

mov al,46 ; '.'

mov [si],al

inc si

mov al,42 ; '*'

mov [si],al

inc si

mov al,0 ; NUL

mov [si],al

call crlf

ret

stringC db 13,10,' $'

curdir endp

Div1024 proc near

mov cx,10

dd20: shr ax,1

shr dx,1

jnc dd30

or ah,10000000b

dd30: loop dd20

ret

Div1024 endp

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

;:: . :::

;:: AX - 堠 :::

;:: BX - :::

;:: CX - 堠 :::

;:: DX - 堠 :::

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

GetInfo proc near

mov dl,0 ; DL 0, ..

lea si,path ;

mov al,[si]

sub al,40h ;

cmp al,0 ; 0 ?

jl not_1 ; ,

cmp al,26 ; 26 ?

jg again ; ,

jmp mov_val ;

again:

sub al,32 ; ,

cmp al,0 ; 0 ?

jl not_1 ; ,

cmp al,26 ; 26 ?

jg not_1 ; ,

mov_val:

mov dl,al ;

not_1:

mov ah,36h ;

int 21h

ret

GetInfo endp

;::::::::::::::::::::::::::::::::::::::::::::::::::

;:: ::::

;::::::::::::::::::::::::::::::::::::::::::::::::::

totsize proc near

call GetInfo

mov temp,dx ;

mul cx ;

mul temp ;

call Div1024 ; 1024

mov word ptr totalKB,ax ;

mov word ptr totalKB+2,dx ;

call Decimal

mov ah,9

lea dx,stringT

int 21h

ret

totsize endp

;:::::::::::::::::::::::::::::::::::::::::::::::

;::: ::::

;::: ::::

;:::::::::::::::::::::::::::::::::::::::::::::::

fresize proc near

call GetInfo

mul cx

mul bx

call Div1024

mov word ptr freeKB,ax

mov word ptr freeKB+2,dx

call Decimal

mov ah,9

lea dx,stringF

int 21h

ret

fresize endp

DecWrt proc near

lea si,outst ;

mov cl,0

mov [si],cl

mov [si+1],cl

lea si,outst

mov cl,48

mov [si],cl

mov cx,0010

lea si,outst+1

a20: cmp ax,0010

jb a30

xor dx,dx

div cx

or dl,30h

mov [si],dl

dec si

jmp a20

a30: or al,30h

mov [si],al

mov ah,40h ;

mov bx,01

mov cx,02

lea dx,outst

int 21h

ret

outst db ' '

DecWrt endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::

;:: ::::

;:::::::::::::::::::::::::::::::::::::::::::::::::::

Decimal proc C uses es di bx cx dx ds

mov bx,10

push cs

pop es

push ax ; DecString 00

xor ax,ax ;

cld ;

mov cx,3 ;

lea di,DecStr ;

rep stosw ;

pop ax ;

lea di,DecStr+5 ; DI

std

div bx

push ax

mov ax,dx

or al,30h ; ASCII-.

stosb

pop ax

c10:

xor cx,cx

c20:

cmp ax,bx ; AX, BX.

jb c30 ; CX.

sub ax,bx ;

inc cx ; ( )

jmp c20

c30:

or al,30h ; ASCII

stosb ; DecString

mov ax,cx

cmp ax,bx

jae c10

or al,0

jz c50

or al,30h

stosb

c50:

mov ah,9

lea dx,space

int 21h

mov ah,9

lea dx,DecStr

int 21h

ret

DecStr db 6 dup (0)

db '$'

Decimal endp

end begin



B[1]F*.FRM*.MAC
<

                                        

______________________________________________________________________

 

 

 

! , , , .
. , :