IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Работа с диском на физическом уровне
сообщение
Сообщение #21


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


{Эххх - попробуй вот это :o}


Uses
   Crt;
Var
  Buf:array[1..512] of Char;
  i:Integer;
  Name:String;
Begin
    ClrScr;
    Name:='boot!sec.bin'#0;
    WriteLn('Вставьте дискету и нажмите any key...');
    asm
       mov ah,0
       int 16h
       mov al,0        {Номер логического диска}
       mov cx,1        {Количество секторов для чтения}
       mov dx,0        {Номер стартового сектора}
       lea bx,Buf      {Смещение к нашему буферу}
       int 25h         {читаем}
    end;
    WriteLn('Прочитали...смотрим содержимое:');
    {Выводим, пропуская перевод строки и возврат каретки, дабы не уехало...}
    For i:=1 to 512 do If (Buf[i]<>#10) or (Buf[i]<>#13) then Write(Buf[i]);
    asm
       {Сохранить, прочитанный сектор на диск под именем Name}
       mov ax,3D02h    {Открыть файл}
       lea dx,Name     {Адрес имени}
       inc dx          {Пропускаем байт размера стринга}
       int 21h
       jnc @AlrExst    {Уже есть}
       mov ah,3Ch      {Если нет - создаем}
       mov cx,20h      {Атрибут - архивный}
       int 21h         {Обращаемся к ДОС}
@AlrExst:mov bx,ax      {Дескриптор}
       mov ah,40h      {Запись}
       mov cx,512      {Кол-во байт для записи}
       lea dx,Buf      {Буфер с прочитанным содержимым нулевого сектора}
       int 21h         {пишем}
       mov ah,3Eh      {Закрыть файл}
       int 21h
    end;
    WriteLn('Вставьте следующую дискету then press any key...');
    {Можешь оформить в виде отдельных процедур}
    {А заодно просмотреть содержимое бут-сектора на ЖД - файл boot!sec.bin}
    asm
       mov ah,0
       int 16h
       mov ax,3D02h    {Открыть файл с содержимым бут-сектора}
       lea dx,Name     {Адрес имени}
       inc dx          {Пропускаем байт размера стринга}
       int 21h
       mov bx,ax       {Сохр. дескриптор}
       mov ah,3Fh      {Читать из файла}
       mov cx,512      {512 байт читать}
       lea dx,Buf      {Буфер для чтения}
       int 21h         {читаем}
       mov ah,3Eh      {Закрыть файл}
       int 21h
       mov al,0        {Номер логического диска}
       mov cx,1        {Количество записываемых секторов}
       mov dx,0        {Номер стартового сектора}
       lea bx,Buf      {Буфер}
       int 26h         {пишешь}
    end;
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Должно блин работать, на все, эти самые - 100%  ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


:D да блин вот паока дискета целая то программа работает т.е. портит записывает, но
когда испортилась и пытаешся записать то винд выдает сообщение от том что попытка записи на диск несовместимого формата блин
----
ВОТ НЮ ИЛАДНО ИЗ ПОД  DOS работет


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


ААА!!! Должно работать из-под винды  >:(
Тестировал на XP, 98 SE, MS-DOS 6.22 и 95OSR2, блин smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #25


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


:D интерактивную среду написал ужо
книга abel
помогает
из под виндовс  работает только до определ момента
портить портит а когда испортит и происходит попытка обращения к нему то винды выдвают
сообщение что произшол доступ к нестандартной
форматированной дискете и выкидывает
ВОООТ !!!!!
а так все работает


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #26


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Попробую переписать, чтобы обращалась к контроллеру НГМД... :P
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #27


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


:D ето через порты или прерывания ??? :smile.gif


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #28


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Через порты...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #29


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Что-то такая хрень получается. Типа чижика-пыжика...в смысле звука, издаваемого этим самым контроллером НГМД. А еще подумай насчет граф. движка...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 22.08.2017 12:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"