
на след. неделе зачет, не наю че делать! Киньте пример кода под DOS, язык Turbo Pascal.
Говорят, что нужно использовать прерывания 13h.
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
=MaZaTRaKer= |
![]() ![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 6 Пол: Женский Реальное имя: Леночка Репутация: ![]() ![]() ![]() |
![]() на след. неделе зачет, не наю че делать! Киньте пример кода под DOS, язык Turbo Pascal. Говорят, что нужно использовать прерывания 13h. |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
=MaZaTRaKer= |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 6 Пол: Женский Реальное имя: Леночка Репутация: ![]() ![]() ![]() |
Ozzя, наверное, я в этом не разбираюсь, спасибо тебе большое
![]() ![]() Мне вот друг набросал: uses dos,crt; type boot=record jump:array[1..3]of byte; oemname:array[1..8]of char; sectsize:word; clustsize:byte; recsecs:word; fatcnt:byte; rootsiz:word; totsecs:word; media:byte; fatsize:word; trksecs:word; headcnt:word; hidnsec:word; musor:array[1..482]of byte; end; var regs:registers; s:boot;i:integer; begin clrscr; writeln('razmer zapisi:',sizeof(boot)); with regs do begin regs.ah:=$02; regs.dl:=$0; regs.ch:=0; regs.cl:=1; regs.al:=1; regs.dh:=0; regs.es:=seg(s); regs.bx:=ofs(s); intr($13,regs); with s do begin for i:=1 to 3 do write(jump[i]:3); writeln; writeln('‚ҐабЁп Їа®Ё§ў®¤ЁвҐ«п Ё ®¬Ґа ўҐабЁЁ :',oemname); writeln; writeln('а §¬Ґа ᥪв®а : ',sectsize); writeln('а §¬Ґа Є« бвҐа®ў :',clustsize); writeln('зЁб«® § १ҐаўЁа®ў ле ᥪв®а®ў :',recsecs); writeln('fatcnt :',fatcnt); writeln('rootsiz :',rootsiz); writeln('Ї®«®Ґ зЁб«® ᥪв®а®ў :',totsecs); writeln('media :',media); writeln('ᥪв®а®ў ў Fat,e :',fatsize); writeln('ᥪв®а®ў ¤®а®¦Єг :',trksecs); writeln('зЁб«® Ј®«®ў®Є :',headcnt); writeln('зЁб«® бЄалвл ᥪв®а®ў :',hidnsec); end; end; readln; end. -------------------------------------------- где тут, что я не понимаю... Сообщение отредактировано: =MaZaTRaKer= - |
Ozzя |
![]()
Сообщение
#4
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Используется ф-ция чтения сектора 02H прерывания 13h (BIOS)
формат вызова команды Цитата На входе: AH = 02h AL = Количество секторов, которые нужно прочитать CH = Номер дорожки CL = Номер сектора DH = Номер головки DL = Адрес дисковода (0, 1, ...,80h, 81h, ...) ES:BX = Адрес буфера для данных На выходе: AH = Состояние дисковода после завершения последней операции CF = 1, если произошла ошибка, 0, если ошибки нет А в запись s закидывается вся информация о дискете. |
=MaZaTRaKer= |
![]()
Сообщение
#5
|
![]() Группа: Пользователи Сообщений: 6 Пол: Женский Реальное имя: Леночка Репутация: ![]() ![]() ![]() |
![]() ![]() |
Ozzя |
![]()
Сообщение
#6
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Корневой каталог находится сразу за последней копией FAT. Количество секторов, занимаемых одной копией FAT, находится в блоке параметров BIOS в BOOT-секторе в поле fatsize, количество копий FAT - в поле fatcnt блока BPB. Следовательно, перед корневым каталогом находится один BOOT-сектор и (fatcnt_*_fatsize) секторов таблицы размещения файлов FAT. Размер корневого каталога можно определить исходя из значения поля rootsize. В этом поле при форматировании диска записывается максимальное количество файлов и каталогов, которые могут находиться в корневом каталоге. Для каждого элемента в каталоге отводится 32 байта, поэтому корневой каталог имеет длину (32_*_rootsize) байтов. Корневой каталог занимает непрерывную область фиксированного размера. Размер корневого каталога задается при форматировании и определяет максимальное количество файлов и каталогов, которые могут быть описаны в корневом каталоге. Для определения количества секторов, занимаемых корневым каталогом, можно воспользоваться следующей формулой: RootSecs = sectsize_/_(32_*_rootsize) В этой формуле sectsize - размер сектора в байтах, он может быть получен из соответствующего поля BOOT-сектора. |
Ozzя |
![]()
Сообщение
#7
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Только сейчас осознал, что мои ответы в точь-точь как из анекдота про программистов на воздушном шаре.
![]() ![]() ![]() |
![]() ![]() |
![]() |
Текстовая версия | 19.04.2025 21:09 |