![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Shadow |
![]()
Сообщение
#1
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
![]() ---------- |int 13h WINDOWS XP недает даже читать диск ---------- говорит что приложение использует прямой доступ как сделать так чтабы WINDOWS не прерывал работу программы ВОТ :-[ -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
![]() ![]() |
GLuk |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
{Эххх - попробуй вот это :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. |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 23:06 |