как создать файл 4 Гб под досом.

Тема в разделе "WASM.BEGINNERS", создана пользователем Q_sam, 10 янв 2009.

  1. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    Стоит задача: Написать программу под MS-DOS которая создает файл размером 4 Гб.(лабораторная рабьота на тему: "переход в защищенный режим из под dos"). Я так понимаю нужно перейти в защищенный режим, использовать 32-разрядные регистры и функции bios(т.к. функции дос не знают про 32 разрядность=) . Правильно ли я понял? и какими именно функциями производить создание и запись в файл. Функция BIOS 13h слишком сложная , там нужно указывать номера дорожек,головки итд...так что я вообще хз. Прошу высказать вои идеи по поводу решения задачи.
    P.S. в гугле смотрел!
     
  2. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    может я не в том разделе задал впрос???? =/
     
  3. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Это невозможно.
     
  4. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    а сколько возможно?
     
  5. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Зависит от файловой системы
    FAT12 - 16Mb
    FAT16 - 2Gb

    Для DOS 7.0
    FAT32 - 4 Gb минус 1 байт.
     
  6. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    ОК! как записать 2Gb? в fat16.
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Почитай про прерывание DOS INT 21

    P.S.
    Чтобы создать файл 2Гб, размер кластера должен быть 32 кб.
     
  8. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    можно ручками, через порты, анализировать содержимое секторов, а затем в некоторые из них записать что надо, подправить фат и т.д. Это возможно, вопрос только в том, надо ли это такой ценой...
     
  9. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    ну задание не я придумал((.. препод придумал!
     
  10. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    да, и надо ли в защищенный режим переключаться? ведь тема лабы: переход в защиченный режим, значит это как то взаимосвязано...
     
  11. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Q_sam
    в защищённом режиме bios\dos недоступны, во всяком случае напрямую - нужно извращаться или линковать к проге специальные extender-ы. 32 разрядные регистры и методы адресации в дос нормально работают через префиксы переопределения размера. Умные компиляторы tasm 5, fasm, masm 6 ставят эти префиксы автоматически, когда встречают соответствующую команду типа mov dword ptr [eax], ebx.
    Существует бесплатная утилита от Руссиновича поддерживающая ntfs под Dos, надо полагать с её помощью можно создать 4Гб файл, но я не пробовал.
     
  12. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    Y_Mur, спасибо, а че за прога от Руссиновича... как называется7 есть ссылка? заранее спс=)
     
  13. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    да и еще вопрос: если из под доса перейти в защ. режим как показанов
    http://www.wasm.ru/article.php?article=pipm08
    то разве функции bios будут недоступны????
     
  14. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    NTFS DOS Professional v.4.0
    http://rapidshare.com/files/181774060/NTFSDOS.7z.html
    бесплатна для использования под чистым дос, в win9x её нужно покупать, но полагаю тебе это всё равно не потребуется ;)
    Код который содержится в функциях дос/биос не предназначен для работы в защищённом режиме.
     
  15. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Q_sam
    Функции BIOS, за редким исключением (и то извращённым), работают только в реальном режиме или режиме V86. Из "нормального" защищённого их вызывать нельзя.

    А вообще что-то странное задание. Причём здесь переход в защищённый режим и файл размером 4 Гбайта?..
     
  16. Memphis

    Memphis New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2008
    Сообщения:
    104
    Q_sam
    Написать программу под MS-DOS которая создает файл размером 4 Гб - элементарно. Никакой PM не нужен. В ДОСе прекрасно работает (FAT32). Дерзай. Int 13 не нужен, он не работает с файлами. Тебе нужен ДОСовый Int 21.
    Код (Text):
    1. --------D-216C00-----------------------------
    2. INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
    3.         AX = 6C00h
    4.         BL = open mode as in AL for normal open (see also AH=3Dh)
    5.             bit 7: inheritance
    6.             bits 4-6: sharing mode
    7.             bit 3 reserved
    8.             bits 0-2: access mode
    9.                 100 read-only, do not modify file's last-access time (DOS 7.0)
    10.         BH = flags
    11.             bit 6 = auto commit on every write (see also AH=68h)
    12.             bit 5 = return error rather than doing INT 24h
    13.             bit 4 = (FAT32) extended size (allow 4GB files instead of 2GB)
    14.         CX = create attribute (see #01769)
    15.         DL = action if file exists/does not exist (see #01770)
    16.         DH = 00h (reserved)
    17.         DS:SI -> ASCIZ file name
    18. Return: CF set on error
    19.            AX = error code (see #01680 at AH=59h/BX=0000h)
    20.         CF clear if successful
    21.            AX = file handle
    22.            CX = status (see #01768)
    23. Notes:  the PC LAN Program only supports existence actions (in DL) of 01h,
    24.           10h with sharing=compatibility, and 12h
    25.         DR DOS reportedly does not support this function and does not return
    26.           an "invalid function call" error when this function is used.
    27.         the documented bits of BX are stored in the SFT when the file is opened
    28.           (see #01641,#01642)
    29. BUG:    this function has bugs (at least in DOS 5.0 and 6.2) when used with
    30.           drives handled via the network redirector (INT 2F/AX=112Eh):
    31.             - CX (attribute) is not passed to the redirector if DL=11h,
    32.             - CX does not return the status, it is returned unchanged because
    33.               DOS does a PUSH CX/POP CX when calling the redirector.
    34. SeeAlso: AH=3Ch,AH=3Dh,AX=6C01h,AX=7160h/CL=00h,INT 2F/AX=112Eh
    35.  
    36. (Table 01768)
    37. Values for extended open function status:
    38.  01h    file opened
    39.  02h    file created
    40.  03h    file replaced
    41.  
    42. Bitfields for file create attribute:
    43. Bit(s)  Description     (Table 01769)
    44.  6-15   reserved
    45.  5      archive
    46.  4      reserved
    47.  3      volume label
    48.  2      system
    49.  1      hidden
    50.  0      readonly
    51.  
    52. Bitfields for action:
    53. Bit(s)  Description     (Table 01770)
    54.  7-4    action if file does not exist
    55.         0000 fail
    56.         0001 create
    57.  3-0    action if file exists
    58.         0000 fail
    59.         0001 open
    60.         0010 replace/open
     
  17. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Memphis
    FAT32 работает только в ДОС 7, т.е. в досовской части Винды 9х. В "настоящем" ДОСе, где последней версией была 6-я, ФАТ32 не поддерживается.
     
  18. Memphis

    Memphis New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2008
    Сообщения:
    104
    SII
    А разве Win95OSR не поддерживает ФАТ32 ?
     
  19. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    А разве она не read-only ?
     
  20. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    Да вот я сам в замешательстве...=)