Ссылка на скачивание: https://push0ret.w10.site/downloads/pformat.com
Исходный код:
Код: Выделить всё
.model tiny
.286
code segment
org 100h
start:
mov ah, 9d
lea dx, usr_msg
int 21h
wait_key:
mov ah, 1d
int 21h
cmp al, 32h
jz exit
cmp al, 31h
jnz wait_key
mov ah, 2d
mov dl, 0Dh
int 21h
;Select disk
mov ah, 9d
lea dx, usr_msg2
int 21h
sel_disk:
mov ah, 1d
int 21h
cmp al, 32h
ja sel_disk
cmp al, 31h
jb sel_disk
sub al, 31h
mov disk, al
;FORMAT
format:
;2 & 11 sectors (FAT tables)
mov ah, 3d
mov dl, disk
mov dh, 0
mov ch, 0
mov cl, 2d
mov al, 1d
lea bx, fat_table
int 13h
mov ah, 3d
mov cl, 11d
mov al, 1d
int 13h
;format first cylinder
lea bx, other_sectors
mov al, 1d
mov cx, 8d
format_0cyl:
push cx
mov ah, 3d
mov cl, sector
int 13h
inc sector
pop cx
loop format_0cyl
cmp sector, 19d
jz format_other_side0
mov sector, 12d
mov cx, 7d
jmp format_0cyl
;Format other cylinders on side 0
format_other_side0:
mov sector, 1d
mov cx, 18d
format_side0:
push cx
mov ah, 3d
mov dl, disk
mov dh, side
mov ch, cyl
mov cl, sector
mov al, 1d
lea bx, other_sectors
int 13h
inc sector
pop cx
loop format_side0
cmp cyl, 80d
jz format_side1
mov sector, 1d
inc cyl
mov cx, 18d
jmp format_side0
format_side1:
mov sector, 1d
mov cyl, 0d
mov side, 1d
mov sector, 1d
mov cx, 18d
format_side1_sectors:
push cx
mov ah, 3d
mov dl, disk
mov dh, side
mov ch, cyl
mov cl, sector
mov al, 1d
lea bx, other_sectors
int 13h
inc sector
pop cx
loop format_side1_sectors
cmp cyl, 80d
jz format_boot_sec
mov sector, 1d
inc cyl
mov cx, 18d
jmp format_side1_sectors
format_boot_sec:
mov ah, 3d
mov dl, disk
mov dh, 0
mov ch, 0
mov cl, 1d
mov al, 1d
lea bx, boot_rec
int 13h
format_done:
mov ah, 9d
lea dx, usr_msg3
int 21h
exit:
mov ax, 4c00h
int 21h
usr_msg db '1. Low level format', 0Ah, 0Dh
db '2. Exit', 0Ah, 0Dh, 24h
usr_msg2 db 'Select disk:', 0Ah, 0Dh
db '1. A', 0Ah, 0Dh
db '2. B', 0Ah, 0Dh, 24h
usr_msg3 db 0Dh, 'Formated!', 24h
disk db ?
sector db 3d
cyl db 1d
side db 0
fat_table db 0F0h, 0FFh, 0FFh, 509d dup(0)
other_sectors db 512d dup(0)
boot_rec db 0EBh, 3Ch, 90h, 50h, 55h, 53h, 48h, 30h, 52h, 45h, 54h, 0, 02d, 01d, 01d, 0, 02d, 0E0h, 0
db 40h, 0Bh, 0F0h, 09d, 0, 12h, 0, 02d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29h, 48h, 0Fh, 63h, 0B4h, 4Eh, 4Fh, 20h, 4Eh, 41h
db 4Dh, 45h, 20h, 20h, 20h, 20h, 46h, 41h, 54h, 31h, 32h, 20h, 20h, 20h, 33h, 0C9h, 8Eh, 0D1h, 0BCh, 0F0h, 7Bh, 8Eh, 0D9h
db 0B8h, 0, 20h, 8Eh, 0C0h, 0FCh, 0BDh, 0, 7Ch, 38h, 4Eh, 24h, 7Dh, 24h, 8Bh, 0C1h, 99h, 0E8h, 3Ch, 01d, 72h, 1Ch, 83h, 0EBh
db 3Ah, 66h, 0A1h, 1Ch, 7Ch, 26h, 66h, 3Bh, 07h, 26h, 8Ah, 57h, 0FCh, 75h, 06d, 80h, 0CAh, 02d, 88h, 56h, 02d, 80h, 0C3h, 10h
db 73h, 0EBh, 33h, 0C9h, 8Ah, 46h, 10h, 98h, 0F7h, 66h, 16h, 03d, 46h, 1Ch, 13h, 56h, 1Eh, 03d, 46h, 0Eh, 13h, 0D1h, 8Bh, 76h, 11h
db 60h, 89h, 46h, 0FCh, 89h, 56h, 0FEh, 0B8h, 20h, 0, 0F7h, 0E6h, 8Bh, 5Eh, 0Bh, 03d, 0C3h, 48h, 0F7h, 0F3h, 01d, 46h, 0FCh, 11h, 4Eh
db 0FEh, 61h, 0BFh, 0, 0, 0E8h, 0E6h, 0, 72h, 39h, 26h, 38h, 2Dh, 74h, 17h, 60h, 0B1h, 0Bh, 0BEh, 0A1h, 7Dh, 0F3h, 0A6h, 61h, 74h, 32h
db 4Eh, 74h, 09d, 83h, 0C7h, 20h, 3Bh, 0FBh, 72h, 0E6h, 0EBh, 0DCh, 0A0h, 0FBh, 7Dh, 0B4h, 7Dh, 8Bh, 0F0h, 0ACh, 98h, 40h, 74h, 0Ch, 48h, 74h
db 13h, 0B4h, 0Eh, 0BBh, 07d, 0, 0CDh, 10h, 0EBh, 0EFh, 0A0h, 0FDh, 7Dh, 0EBh, 0E6h, 0A0h, 0FCh, 7Dh, 0EBh, 0E1h, 0CDh, 16h, 0CDh, 19h, 26h, 8Bh
db 55h, 1Ah, 52h, 0B0h, 01d, 0BBh, 0, 0, 0E8h, 3Bh, 0, 72h, 0E8h, 5Bh, 8Ah, 56h, 24h, 0BEh, 0Bh, 7Ch, 8Bh, 0FCh, 0C7h, 46h, 0F0h, 3Dh, 7Dh, 0C7h
db 46h, 0F4h, 29h, 7Dh, 8Ch, 0D9h, 89h, 4Eh, 0F2h, 89h, 4Eh, 0F6h, 0C6h, 06d, 96h, 7Dh, 0CBh, 0EAh, 03d, 0, 0, 20h, 0Fh, 0B6h, 0C8h, 66h, 8Bh, 46h
db 0F8h, 66h, 03d, 46h, 1Ch, 66h, 8Bh, 0D0h, 66h, 0C1h, 0EAh, 10h, 0EBh, 5Eh, 0Fh, 0B6h, 0C8h, 4Ah, 4Ah, 8Ah, 46h, 0Dh, 32h, 0E4h, 0F7h, 0E2h, 03d
db 46h, 0FCh, 13h, 56h, 0FEh, 0EBh, 4Ah, 52h, 50h, 06d, 53h, 6Ah, 01d, 6Ah, 10h, 91h, 8Bh, 46h, 18h, 96h, 92h, 33h, 0D2h, 0F7h, 0F6h, 91h, 0F7h, 0F6h
db 42h, 87h, 0CAh, 0F7h, 76h, 1Ah, 8Ah, 0F2h, 8Ah, 0E8h, 0C0h, 0CCh, 02d, 0Ah, 0CCh, 0B8h, 01d, 02d, 80h, 7Eh, 02d, 0Eh, 75h, 04h, 0B4h, 42h, 8Bh, 0F4h
db 8Ah, 56h, 24h, 0CDh, 13h, 61h, 61h, 72h, 0Bh, 40h, 75h, 01d, 42h, 03d, 5Eh, 0B, 49h, 75h, 06d, 0F8h, 0C3h, 41h, 0BBh, 0, 0, 60h, 66h, 6Ah, 0, 0EBh, 0B0h
db 42h, 4Fh, 4Fh, 54h, 4Dh, 47h, 52h, 20h, 20h, 20h, 20h, 0Dh, 0Ah, 52h, 65h, 6Dh, 6Fh, 76h, 65h, 20h, 64h, 69h, 73h, 6Bh, 73h, 20h, 6Fh, 72h, 20h, 6Fh, 74h
db 68h, 65h, 72h, 20h, 6Dh, 65h, 64h, 69h, 61h, 2Eh, 0FFh, 0Dh, 0Ah, 44h, 69h, 73h, 6Bh, 20h, 65h, 72h, 72h, 6Fh, 72h, 0FFh, 0Dh, 0Ah, 50h, 72h, 65h, 73h, 73h
db 20h, 61h, 6Eh, 79h, 20h, 6Bh, 65h, 79h, 20h, 74h, 6Fh, 20h, 72h, 65h, 73h, 74h, 61h, 72h, 74h, 0Dh, 0Ah, 0, 0, 0, 0, 0, 0, 0, 0ACh, 0CBh, 0D8h, 55h, 0AAh
code ends
end start