Formatting floppy. Int 13h 05h
Добавлено: 16 дек 2009, 15:56
Доброе время суток. Требуется написать программу форматирования дискеты, сипользуя int13h 05h. С "логическим" форматированием уже разобрался, FAT12 и MBR писать умею ))). Пытаюсь написать программку, которая просто отформатирует 0 дорожку, 0 головки в стандартном формате 1.44Мб. Программка грызет дискету, что-то делает. Поле этого пытаюсь обратиться к 0 сектору. Операционка пишет, что дискета корявая и невозможно найти указанный сектор. Пишу на TASM, под DOS. Текст программы:
Код: Выделить всё
model small
stack 100h
dataseg
FormatMask db 0, 0, 1, 2
db 0, 0, 2, 2
db 0, 0, 3, 2 ; Track / Head / Sector /Bytes per Sector
db 0, 0, 4, 2
db 0, 0, 5, 2
db 0, 0, 6, 2
db 0, 0, 7, 2
db 0, 0, 8, 2
db 0, 0, 9, 2
db 0, 0, 10, 2
db 0, 0, 11, 2
db 0, 0, 12, 2
db 0, 0, 13, 2
db 0, 0, 14, 2
db 0, 0, 15, 2
db 0, 0, 16, 2
db 0, 0, 17, 2
db 0, 0, 18, 2
error_msg db 'Error$'
codeseg
start:
;настройка DS
mov ax, @data
mov ds, ax
;настройка ES
mov ax, cs
mov es, ax
mov ah, 05h ; function
mov al, 18 ; Number of sectors to format
mov ch, 0 ; Track Number
mov dh, 0 ; Head Number
mov dl, 00h ; Drive A:
lea bx, FormatMask
int 13h
jc short Error
jmp short goodend
;выводим сообщение при ошибке
error:
mov ah, 09h
lea dx, error_msg
int 21h
goodend:
;заканчиваем программу
mov ah, 04ch
mov al,1h
int 21h
end start