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

Ассемблер? Это просто! Учимся программировать


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 1011
от 31.03.2008, 13:05

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

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 128984: Здравствуйте! Когда оставляешь резидента в памяти - в литературе у Калашникова я встретил такую рекомендацию: Избавляться от сегмента окружения (если конечно он не нужен непосредственно для работы самого этого резидента). А дальше у меня ...
Вопрос № 128989: Здравствуйте! В рассылке №23 у Калашникова есть пример резидента. Меня интересует один небольшой фрагмент – в «выдернутом» виде вставил его в приложение. А непонятно мне вот что: Почему буфер клавиатуры может быть пуст, если перед этим в...
Вопрос № 129029: Помогите ПОЖАЛУЙСТА!!!Зачетная неделя, а у меня задача, оказывается, в дальнем ящике лежит! Ввести число К и символ С. Вывести на экран: С С С С ... где (К-1) строк и (К-1) столбцов. Выводить при нажатии клавиши. ..

Вопрос № 128.984
Здравствуйте!
Когда оставляешь резидента в памяти - в литературе у Калашникова я встретил такую рекомендацию:
Избавляться от сегмента окружения (если конечно он не нужен непосредственно для работы самого этого резидента).
А дальше у меня возникла куча вопросов:
 Хотелось бы узнать: большой ли от этого толк в экономии памяти?
 Можно ли затем в этот освобожденный кусочек, что-то дельное поместить?
 Когда мы освобождаем этот сегмент – DOS знает, какого он размера?
 Да и вообще не понимаю, как это все размещается в памяти, точнее в каком порядке. Ниже попытаюсь текстом изобразить схему. Допустим в памяти две программы, после первой память была освобождена.

Вариант 1:
…………………
сегмент окружения 1-ой программы
……………….
1-ая программа
…………………
сегмент окружения 2-ой программы
……………….
2-ая программа
…………………..До конца памяти все отдано 2-ой программе

Вариант 2:
…………………
сегмент окружения 1-ой программы
…………………
сегмент окружения 2-ой программы
……………….
1-ая программа
……………….
2-ая программа
…………………..До конца памяти все отдано 2-ой программе

Скорее всего, правильный вариант, наверное, другой.
Я все никак не могу сформулировать нормально вопрос. Постарайтесь меня понять:
Ведь если мы освободим «сегмент окружения 1-ой программы» для 2-ой программы толку это большого не даст?
Отправлен: 25.03.2008, 12:43
Вопрос задал: Бартосик Феликс Михайлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Бартосик Феликс Михайлович!
1)Толк в освобождении сегмента окружения...
Например, при запуске 2-ой программы система сможет построить сегмент окружения на том же месте.
Можно даже переписать резидент в память, начиная с сегмента окружения, увеличив тем самым сплошной участок свободной памяти.
2)Все, что туда поместится: буфер, программа может себя туда скопировать...
3)Конечно, знает. По адресу любого сегмента минус 10h (или для сегмента -
минус 1), т.е. в 16-ти байтах перед сегментом, лежит MCB (Memory Control Block),
в котором есть и длина сегмента
4)В памяти размещается обычно последовательно: сначала все для программы 1, затем - для программы 2, т.е. - 1-й вариант
Ну и, наконец, "толку большого" в общем-то не будет. Но, когда надо что-то спрятать
или важен каждый килобайт, то может понадобиться и эта память.
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 25.03.2008, 13:20
Оценка за ответ: 5
Комментарий оценки:
Спасибо Игорь Витальевич! Мне очень приятно, что Вы меня правильно поняли и ответили буквально на все.


Вопрос № 128.989
Здравствуйте!
В рассылке №23 у Калашникова есть пример резидента. Меня интересует один небольшой фрагмент – в «выдернутом» виде вставил его в приложение.
А непонятно мне вот что:
Почему буфер клавиатуры может быть пуст, если перед этим вызывается настоящий обработчик 09-ого прерывания? Я понимаю, если бы настоящий обработчик 09-ого прерывания вызывали после int 16h.
И кто же его заполняет, если настоящий обработчик 09-ого прерывания уже отработал?
Или еще не отработал? Может быть, буфер как-то в фоновом режиме заполняется?

Приложение:

Отправлен: 25.03.2008, 13:37
Вопрос задал: Бартосик Феликс Михайлович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Бартосик Феликс Михайлович!
Не все, что обрабатывает 9-й вектор, попадает в буфер клавиатуры...
Например, клавиши Ctrl, Alt, Shift
Плюс прерывания возникают еще и по ОТЖАТИЮ клавиши.
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 25.03.2008, 13:47
Оценка за ответ: 5
Комментарий оценки:
Ну в общем я понял. Спасибо.

Отвечает: HASPAKA
Здравствуйте, Бартосик Феликс Михайлович!
дело в том, что обработчик срабатывает по нажатию/отжатию клавиши, то есть дважды. Кроме того, некоторые клавишесочетания могут попросту не заносится в буфер. В приведенном вами фрагменте проверка на отсутсвие значения в буфере необходима для исключения возможности ложной отработки кода, например в случае когда была нажата комбинация "Alt+Enter".
Ответ отправил: HASPAKA (статус: 1-ый класс)
Ответ отправлен: 25.03.2008, 14:01
Оценка за ответ: 5
Комментарий оценки:
Ну в общем я понял. Спасибо.

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Бартосик Феликс Михайлович!

Вызов оригинального обработчика событий клавиатуры:
pushf
call dword ptr cs:[0FCh]

Он и заполняет буфер клавиатуры, если не обрабатывает это событие(эту клавишу) сам.
Примерами таких клавиш могут быть Caps Lock, Num Lock и Scroll Lock.
Вся работа MS-DOS построенна на программно-аппаратных прерываниях, которые останавливают основную программу, выполняют нужные действия и затем возвращают управление основной программе. С точки зрения программы всё происходит в фоновом режиме.
Удачи!

---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 25.03.2008, 14:02
Оценка за ответ: 5
Комментарий оценки:
Ну в общем я понял. Спасибо.


Вопрос № 129.029
Помогите ПОЖАЛУЙСТА!!!Зачетная неделя, а у меня задача, оказывается, в дальнем ящике лежит!
Ввести число К и символ С. Вывести на экран:
С
С
С
С
...
где (К-1) строк и (К-1) столбцов. Выводить при нажатии клавиши.
Помогите ПОЖАЛУЙСТа! Я просто умоляю! Мила
Отправлен: 25.03.2008, 17:47
Вопрос задала: Ahmadullina Mila Raufovna (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Boriss
Здравствуйте, Ahmadullina Mila Raufovna!
Вот такой вариант посмотрите, как в приложении
Еще исходный код можно скачать тут
Если неправильно Вас понял, или не понятно что - в минифоруме спросите
--
ЗЫ: Вы так просили Вам помочь, а когда эксперт задал Вам уточняющий вопрос - Вы его почему-то проигнорировали. Это невежливо

Приложение:

---------
Вывод - то место в тексте, где вы устали думать

Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: Мордовский госуниверситет, Саранск, Факультет Электронной Техники
WWW: Программирование на Паскале
----
Ответ отправлен: 26.03.2008, 10:50

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Ahmadullina Mila Raufovna!
Программа в приложении.
Удачи!

Приложение:

---------
И только наступив на грабли мы приобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 27.03.2008, 11:05


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.72.6 beta от 22.03.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное