TASM, MS-Dos не могу рaзобраться, как используя 13H получить BPB_Mediа диcкeты, Не хватает мне-блондинке практических навыков. Если не затруднит, покажите в коде, пожалуйста.
Вот нечто похожее из моих университетских будней. Считывает файл из корневой директории дискеты. Только юзается masm и int 25. Хороший цикл статей по структуре FAT12/16/32 также в архиве. Найти аналог в инете не смог - видать прикрыли лавочку. http://ifolder.ru/9935013 Выдержка из статьи по ссылке Код (Text): BPB_Media Смещение(байт) 21 от начала FAT Размер(байт) 1 0xF8 стандартное значение для “жёстких” (не сменных) дисков. Для сменных дисков, обычное значение 0xF0. Разрешённые значения: 0xF0, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE и 0xFF. Важно, чтобы это же значение было записано в байт таблицы FAT[0]. Это старое правило появилось MS-DOS 1.x для определения типа диска (как рассказано в начале), но сейчас не имеет практического применения. P.S. писалось давно и подробно разбирать снова лень.
AMarya Код (Text): .model tiny .code org 100h start: push cs pop ds mov ah,2 mov al,1 mov ch,0 mov cl,1 mov dh,0 mov dl,0 ;; drive A-0, B-1 push cs pop es mov bx,offset buffer int 13h jnc short @1 mov al,ah ;; error code mov dx,offset errmsg mov bx,offset errcode jmp short @2 @1: mov al,[bx+15h] ;; BPB.bMedia mov dx,offset mtmsg mov bx,offset mtcode @2: mov ah,al and ax,0F00Fh add al,90h daa adc al,40h daa mov [bx+1],al mov al,ah mov cl,4 shr al,cl add al,90h daa adc al,40h daa mov [bx],al mov ah,9 int 21h mov ax,4c00h int 21h even errmsg db 'int 13h fn 02h failed ' errcode db '00h$' even mtmsg db 'Media type is ' mtcode db '00h$' even buffer db 512 dup(0) end start