Страница 1 из 1

Formatting floppy. Int 13h 05h

Добавлено: 16 дек 2009, 15:56
dun
Доброе время суток. Требуется написать программу форматирования дискеты, сипользуя 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