cld
FormatTableHeadar:
lodsb ;байт из заголовка
mov ah,al ;для передачи в контроллер
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
loop FormatTableHeader ;повторим для всех параметров
;формата
and IntFlags,255-IntPres-IntMCA ;сбросим состояние прерывания
sti ;откроем маски
call WaitInt ;ждем прерывание
jc FatalErr ;не дождались
;получим результат
call InFDC ;прочитаем данные из FDC
jc FatalErr ;неуспешно
mov ah,ST0 ;регистр состояния 0
and ah,11000000b ;выделим состояние завершения
or ah,ah ;успешно?
jnz FatalErr ;нет ошибка
запишем два сектора, начиная с сектора 1
;заполним буфер значениями для записи
mov ax,055aah ;значение для записи в два сектора
mov сх,512
mov di,WorkOff ;адрес области записи
cld
rep stosw ;заполним область записи
;установить DMA на рабочую область
mov di,WorkOff ;смещение рабочей области
mov сх,512*2 ;длина двух секторов
mov al,04Ah ;код оперции DMA - передаем в FDC
call SetDMA ;иницируем DМА
mov FDCOpCode,045h ;запомним код команды Запись
; передадим все команды записи
cli ;закроем маски
mov ah,045h ;команда записи
call OutFDC ;передадим в контроллер
jc FatalErr ; неуспешно
sub ah,ah ;накопитель 0 поверхность 0
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
; перешлем данные сектора
mov ah,1 ;цилиндр 1
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
mov ah,0 ;поверхность 0
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
mov ah,1 ;сектор 1
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
mov ah,2 ;код длины 2
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
mov ah,9 ;количество секторов 9
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
mov ah,02Ah ;GAP чтения/записи
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.