Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Некоторые вопросы связанные с TSR  (Прочитано 40777 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Skif
Гость
« Ответ #30 : 06-07-2005 08:14 » 

Видимо да. По смыслу он именно там и должен быть.
Alf а что это за сегмент в начале проги и вообще я так понял, что это всё-таки com программа, а по адресу 17h хранится информация о нажатых управляющих клавишах. Так?
Только я не понимаю (потому что нигде не встречал) строку: ROMAREA SEGMENT AT 400H       ;Область параметров BIOS:
Что такое AT 400h и Область параметров BIOS: Это как?
Записан
Alf
Гость
« Ответ #31 : 06-07-2005 09:14 » 

Область параметров BIOS - это область памяти, в которой хранится ряд системных переменных. Их список смотри в справочнике, в каждой ячейке там свой параметр. Например, среди них есть базовые адреса портов COM и LPT. Наизусть уже не помню, потому как под DOS уж лет 7 как не писал ничего.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #32 : 06-07-2005 12:29 » 

Пример я не проверял. Взял книгу на lib.ru В свое время у меня она была в бумажном варианте. И для процессоров 8086/88 была очень хороша. То что лежит на lib.ru слишком покоцана.
Переменную ты можеш хранить так
Flag      DB        0
Теперь только останется поднимать бит у переменой в начале работы например так
   MOV al, 1
   OR  Flag, al
В конце работы опускать бит
   MOV al, FEh
   AND Flag, al
Для каждого случая можно определить свой бит. Ну естественно в случае нулевого состояния флага только начинать работу.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Skif
Гость
« Ответ #33 : 06-07-2005 13:11 » new

Finch Это я понимаю. Я тупой, но не настолько.Улыбаюсь
Как выставить флаги я знал, я не додумался до того что их можно хранить в новых обработчиках. А адрес данных флагов (Чтобы можно было считать значение какого-либо флага, хранящегося в теле другого обработчика) также записывать в какую-нибудь переменную в обработчике (данном) при инициализации резидента.
 Образно: чтобы, находясь в своей квартире, узнать сколько людей в квартире у друга и вообще, что они делают надо знать адрес друга.
Записан
Skif
Гость
« Ответ #34 : 06-07-2005 13:12 » 

Пока больше вопросов нет, что не может не радовать.Улыбаюсь
Только один: Я вас не достал?
Записан
Alf
Гость
« Ответ #35 : 06-07-2005 13:24 » 

Образно: чтобы, находясь в своей квартире, узнать сколько людей в квартире у друга и вообще, что они делают надо знать адрес друга.

Обычно для того, чтобы найти какие-то переменные или точки входа в резидентных программах, которые могут оказаться где угодно в памяти, используют мультиплексные прерывания. Например, именно так приложение находит (точнее, находило когда-то) сетевые сервисы драйверов клиентов Novell Netware. Поищи по этим ключевым словам, может, что попадется.
Записан
Skif
Гость
« Ответ #36 : 06-07-2005 13:31 » 

Alf это конечно очень интересно, будет время поищу и почитаю. А пока сессия, которая кстати для меня только начинается.  Жаль Молчу
А чтобы сдать прогу мне это не понадобиться. Ручками все адреса скопирую (при инициализации) и икать ничего не придется.
Каждый обработчик будет знать где находится флаг состояния другого обработчика. Благо мне надо всего 2 написать.Улыбаюсь
Ещё раз всем спасибо!
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #37 : 06-07-2005 13:44 » 

Добавлю, что сохранение всех регистров проще сделать через PUSHA/POPA, или, что еще лучше, PUSHAD/POPAD - 16-тибитных процессоров x86 сейчас днем с огнем не сыщешь, а 32-ухбитные вычисления и в реальном режиме возможны.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Skif
Гость
« Ответ #38 : 24-07-2005 15:44 » 

Во-первых поздравьте меня. Я с успехом сдал все экзамены, которые были. Единственный из не досрочников. УРА!!! Отлично Отлично Отлично
Остался ASM.
Маленький вопрос, если в начале проги будет такой
Код:
ASSUME CS:CODE

org 80h
cmd_lenght db ?
cmd_line   db ?
org 100h
то в переменных cmd_lenght и cmd_line будет блинна командной строки и начало командной строки?
Записан
Skif
Гость
« Ответ #39 : 24-07-2005 15:51 » 

И вообще посмотрите кому интересно. Задание такое:
ВЫВОДИТЬ ДАМП ПАМЯТИ В ФАЙЛ

пРОГРАММА ПРИ ЗАПУСКЕ ПОЛУЧАЕТ В КАЧЕСТВЕ АРГУМЕНТА ИМЯ ФАЙЛА, В КОТОРОЙ ВДАЛЬНЕЙШЕМ
БУДЕТ СОХРАНЯТЬСЯ ДАМП ПАМЯТИ.

тАКЖЕ ПРИ ЗАПУСКЕ ПРОГРАММА ПРОВЕРЯЕТ, ЧТО ЕЁ КОПИЯ ОТСУТСВУЕТ В оп...
еСЛИ ОНА ЕСТЬ, ТО ПРОГРАММА ВЫДАЁТ ОШИБКУ И ВЫХОДИТ
в ПРОТИВНОМ СЛУЧАЕ, ОНА ОСТАЁТСЯ В ПАМЯТИ РЕЗИДЕНТНОЙ

в ПРОЦЕССЕ РАБОТЫ, при нажатии комбинации Ctrl+D в текстовом режиме программа выводит окно
с запросом о вводе начального и конечного адреса участка памяти в 16-м виде

Если адреса определены верно, то программа сохраняет заданный участок памяти в файл,
указанный  при старте программы

Если при этом происходит ошибка, то программа оповещает об этом

Если при вводе адреса пользователь нажал ESC, то сохранения не присходит.


Файл каждый раз создаётся заново.При вводе шестнадцатиричных чисел ввод других символов
невозможеню При запуске программы вывод сообщений об ошибках осуществляется через
стандартный вывод. ПРи работе резидентной части программы вывод осуществляется в "окно",
т.е. содержимое области экрана сохраняется в буфер и весь ввод-вывод реализуется в этой
области. После завершения содержимое области воостанавливается.
Записан
Skif
Гость
« Ответ #40 : 24-07-2005 15:52 » 

Код сдесь:

* 2.asm (13.57 Кб - загружено 966 раз.)
Записан
Skif
Гость
« Ответ #41 : 24-07-2005 15:55 » 

Виноват, там есть уже устраненные ошибки, этот новее:

* 2.asm (13.62 Кб - загружено 973 раз.)
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #42 : 24-07-2005 20:29 » 

Цитата
то в переменных cmd_lenght и cmd_line будет блинна командной строки и начало командной строки?
Нет! Используй equ.

Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines