Стоит задача: Написать программу под MS-DOS которая создает файл размером 4 Гб.(лабораторная рабьота на тему: "переход в защищенный режим из под dos"). Я так понимаю нужно перейти в защищенный режим, использовать 32-разрядные регистры и функции bios(т.к. функции дос не знают про 32 разрядность=) . Правильно ли я понял? и какими именно функциями производить создание и запись в файл. Функция BIOS 13h слишком сложная , там нужно указывать номера дорожек,головки итд...так что я вообще хз. Прошу высказать вои идеи по поводу решения задачи. P.S. в гугле смотрел!
можно ручками, через порты, анализировать содержимое секторов, а затем в некоторые из них записать что надо, подправить фат и т.д. Это возможно, вопрос только в том, надо ли это такой ценой...
да, и надо ли в защищенный режим переключаться? ведь тема лабы: переход в защиченный режим, значит это как то взаимосвязано...
Q_sam в защищённом режиме bios\dos недоступны, во всяком случае напрямую - нужно извращаться или линковать к проге специальные extender-ы. 32 разрядные регистры и методы адресации в дос нормально работают через префиксы переопределения размера. Умные компиляторы tasm 5, fasm, masm 6 ставят эти префиксы автоматически, когда встречают соответствующую команду типа mov dword ptr [eax], ebx. Существует бесплатная утилита от Руссиновича поддерживающая ntfs под Dos, надо полагать с её помощью можно создать 4Гб файл, но я не пробовал.
да и еще вопрос: если из под доса перейти в защ. режим как показанов http://www.wasm.ru/article.php?article=pipm08 то разве функции bios будут недоступны????
NTFS DOS Professional v.4.0 http://rapidshare.com/files/181774060/NTFSDOS.7z.html бесплатна для использования под чистым дос, в win9x её нужно покупать, но полагаю тебе это всё равно не потребуется Код который содержится в функциях дос/биос не предназначен для работы в защищённом режиме.
Q_sam Функции BIOS, за редким исключением (и то извращённым), работают только в реальном режиме или режиме V86. Из "нормального" защищённого их вызывать нельзя. А вообще что-то странное задание. Причём здесь переход в защищённый режим и файл размером 4 Гбайта?..
Q_sam Написать программу под MS-DOS которая создает файл размером 4 Гб - элементарно. Никакой PM не нужен. В ДОСе прекрасно работает (FAT32). Дерзай. Int 13 не нужен, он не работает с файлами. Тебе нужен ДОСовый Int 21. Код (Text): --------D-216C00----------------------------- INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE AX = 6C00h BL = open mode as in AL for normal open (see also AH=3Dh) bit 7: inheritance bits 4-6: sharing mode bit 3 reserved bits 0-2: access mode 100 read-only, do not modify file's last-access time (DOS 7.0) BH = flags bit 6 = auto commit on every write (see also AH=68h) bit 5 = return error rather than doing INT 24h bit 4 = (FAT32) extended size (allow 4GB files instead of 2GB) CX = create attribute (see #01769) DL = action if file exists/does not exist (see #01770) DH = 00h (reserved) DS:SI -> ASCIZ file name Return: CF set on error AX = error code (see #01680 at AH=59h/BX=0000h) CF clear if successful AX = file handle CX = status (see #01768) Notes: the PC LAN Program only supports existence actions (in DL) of 01h, 10h with sharing=compatibility, and 12h DR DOS reportedly does not support this function and does not return an "invalid function call" error when this function is used. the documented bits of BX are stored in the SFT when the file is opened (see #01641,#01642) BUG: this function has bugs (at least in DOS 5.0 and 6.2) when used with drives handled via the network redirector (INT 2F/AX=112Eh): - CX (attribute) is not passed to the redirector if DL=11h, - CX does not return the status, it is returned unchanged because DOS does a PUSH CX/POP CX when calling the redirector. SeeAlso: AH=3Ch,AH=3Dh,AX=6C01h,AX=7160h/CL=00h,INT 2F/AX=112Eh (Table 01768) Values for extended open function status: 01h file opened 02h file created 03h file replaced Bitfields for file create attribute: Bit(s) Description (Table 01769) 6-15 reserved 5 archive 4 reserved 3 volume label 2 system 1 hidden 0 readonly Bitfields for action: Bit(s) Description (Table 01770) 7-4 action if file does not exist 0000 fail 0001 create 3-0 action if file exists 0000 fail 0001 open 0010 replace/open
Memphis FAT32 работает только в ДОС 7, т.е. в досовской части Винды 9х. В "настоящем" ДОСе, где последней версией была 6-я, ФАТ32 не поддерживается.