; DISKSECT.ASM .MODEL SMALL include msystem.mac include diskete.m .CODE ;--- Процедура чтения/записи одного сектора --- func disksector,,,,public ; получаем указатель на базу диска get_dpt , ; посылаем контролеру НГМД параметры чтения одного сектоpа mov AH, is_RDWR switch AH,<00h,0FFh> case 1 mov AH, 0E6h ; код чтения одного сектора case 2 mov AH, 0C5h ; код записи одного сектора endcase out_fdc ; посылаем команду чтения/записи mov AH, drive ; и биты 1-0 выбор накопителя mov AL, head ; и биты 3 выбор головки mov CL, 2 ; сдвинуть содержимое 1 бита в 3 бит shl AL, CL ; --//-- or AH, AL ; --//-- out_fdc ; номер головки и накопителя out_fdc ; номер дорожки out_fdc ; номер головки out_fdc ; номер сектоpа out_fdc ; код размера сектора out_fdc ; номер конца дорожки out_fdc ; длина сдвига out_fdc ; длина данных wait_interrupt ; ожидаем прерывания от НГМД ; читаем результирующие байты lea BX, status ; помещаем в буфер статуса do 7 ; берем байтов статуса in_fdc ,<[BX]> ; получаем байт и помещаем в буфер inc BX ; указываем на следующий байт буфера enddo endf END