Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 208
от 07.08.2005, 17:19

Администратор:Калашников О.А.
В рассылке:Подписчиков: 252, Экспертов: 15
В номере:Вопросов: 2, Ответов: 6


Вопрос № 24389: к примеру, команды mov ax,3d02h ;открыть Файл 02 чтение / запис mov dx,offset booz int 21h --=-- --=-- --=-- mov ah,3eh ; закрытие файла mov bx,Handle int 21h --=-- --=-- Handle dw 0 ;dw слово/ В D...
Вопрос № 24420: Здраствуйте. Что за виртуальный режим процессора?...

Вопрос № 24.389
к примеру, команды

mov ax,3d02h ;открыть Файл 02 чтение / запис
mov dx,offset booz
int 21h
--=--
--=--
--=--
mov ah,3eh ; закрытие файла
mov bx,Handle
int 21h
--=--
--=--
Handle dw 0 ;dw слово/ В DS
end
лично в моём справочнике нет объяснение, нашьет Handle. Пишется, что это описатель?!
а скажите, а справочник есть на него. Веть нигде не говорится про Handle dw 0
Или я чтото преувеличиваю
Отправлен: 01.08.2005, 21:37
Вопрос задал: IngineringG (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: Евгений Иванов
Здравствуйте, IngineringG!
возвращённое значение нужно записать в переменную.

mov ax,3d02h ;открыть Файл 02 чтение / запис
mov dx,offset booz
int 21h
mov [Handle], ax
--=--
--=--
--=--
mov ah,3eh ; закрытие файла
mov bx,Handle
int 21h
--=--
--=--
Handle dw 0 ;dw слово/ В DS

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 01.08.2005, 21:42
Оценка за ответ: 5

Отвечает: Стас
Здравствуйте, IngineringG!
Извини за нескромный вопрос, но ты не русский?

Не понятна фраза: "Пишется, что это описатель?!"
Да это описатель. А где пишется?

Лично у меня допотопный справочник, но мне хватает, выдержка из него:

Приложение:

Ответ отправил: Стас (статус: Практикант)
Отправлен: 02.08.2005, 00:56

Отвечает: Sager
Здравствуйте, IngineringG!
А почему в справочнике должно быть описание Handle??
Handle - это переменная, которая может иметь любое имя, не только Handle.
В ней ты сохраняешь описатель файла. Но ты также можешь сохранить описатель в стеке, или вообще не сохранять, если ты уверен, что регистр bx не изменится(так как именно в нем хранится описатель). Вообще суть вопроса не совсем ясна...
Ответ отправил: Sager (статус: 3-ий класс)
Отправлен: 02.08.2005, 08:37

Отвечает: Ayl
Здравствуйте, IngineringG!

При открытии файла в регистре AX (и сброшенном бите CF) ОС возвращает логический номер файла (описатель, дискриптор, хендл). Именно этот номер ты должен будешь указывать в регистре BX при дальнейших обращениях к этому файлу. Этот номер и должен быть сохранен в переменной Handle.

Т.е. твой пример должен выглядеть так (без проверок на ошибки):
mov ax, 3d02h ; открыть файл, режим открытия файла: чтение/запись
mov dx, OFFSET booz ; смещение имени файла
int 21h
mov [Handle], ax ; сохранить дискриптор файла в переменной
...
mov ah, 3eh ; функция закрытия файла
mov bx, [Handle] ; сообщаем ОС, какой именно файл надо закрыть
int 21h
...

Handle dw 0 ; резервируем место для дескриптора файла

---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 02.08.2005, 13:09


Вопрос № 24.420
Здраствуйте.
Что за виртуальный режим процессора?
Отправлен: 02.08.2005, 10:45
Вопрос задал: korsar (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Sager
Здравствуйте, korsar!
В этом режиме процессор эмулирует работу 8086 процессора (1 Мб адресного пространства, "обычные" прерывания и пр.), но при этом процессор сохраняет все средства контроля, присущие защищённому режиму.
Обычно, виртуальный режим используется в операционных системах для запуска программ, рассчитанных на процессор 8086 (так называемая, "обратная совместимость ПО"). Виртуальный режим реализуется как отдельная задача в мультизадачной среде и она может взаимодействовать с другими задачами, если, конечно же, ей позволит это операционная система.

====== дополнение от Иванова Евгений ======
неправильно. Программа, запущенная в виртуальном режиме, ничего не знает о других задачах! ей даже трудно узнать, что она запущена виртуально, а не на настоящщем процессоре
============
Ответ отправил: Sager (статус: 3-ий класс)
Отправлен: 02.08.2005, 11:20
Оценка за ответ: 5

Отвечает: Ddeedd
Здравствуйте, korsar!

Узнать, что прога в V86 находится - совсем не трудно - "smsw ax" - и проверить младший бит.
Ответ отправил: Ddeedd (статус: 3-ий класс)
Отправлен: 02.08.2005, 14:58


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться
Вспомнить пароль

В избранное