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

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


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

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

Выпуск № 475
от 16.06.2006, 06:35

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


Вопрос № 45817: Здравствуте эксперты. Скажите, зачем нужен нулевой дескриптор в дескрипторных таблицах (GDT и LDT) в защищенном режиме микропроцессоров... и нужен ли он вообще. Спасибо....
Вопрос № 45822: Добрый день Уважаемые эксперты! Подскажите, как объявлять локальные переменные на языке ассемблер? Те как например будет выглядеть на masm32 аналог такого объявления локальных переменных. … HDC hDC; PAINTSTRUCT PaintStruct; R...
Вопрос № 45824: Пример №3 из рассылки Калашникова не работает. Сассаблиравался, слинковался, но нефига не выводит. только ждёт нажатиия клавиши. Ассамблирую TASM'ом.(из ВС++ v.3.1)...
Вопрос № 45834: Здраствуйте уважаемые эксперты! Даже не знаю куда отнести этот вопрос. Сюда или в WinAPI.. Сам вопрос в следующем: Как перехватить нажатия "горячей" клавиши на клавиатуре и проинициировать даное "гарячее" нажатие как ...

Вопрос № 45.817
Здравствуте эксперты.
Скажите, зачем нужен нулевой дескриптор в дескрипторных таблицах (GDT и LDT) в защищенном режиме микропроцессоров... и нужен ли он вообще.
Спасибо.
Отправлен: 10.06.2006, 10:35
Вопрос задал: Mihasic (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: newinfo2005
Здравствуйте, Mihasic!
К примеру.
Если вы хотите использовать многозадачность в своей ОСи, но все задачи будут без LDT, то в регистр LDTR загружаем нулевой дескриптор в GDT, т.е. нулевой дескриптор выступает в роли отсутствуещего дескриптора.(точно не помню)
Насчёт этих дел посети сайт http://sasm.narod.ru
Удачи
---------
"Спасибо" - нет такой валюты.
Ответ отправил: newinfo2005 (статус: 7-ой класс)
Ответ отправлен: 10.06.2006, 12:41
Оценка за ответ: 4


Вопрос № 45.822
Добрый день Уважаемые эксперты!
Подскажите, как объявлять локальные переменные на языке ассемблер?
Те как например будет выглядеть на masm32 аналог такого объявления локальных переменных.

HDC hDC;
PAINTSTRUCT PaintStruct;
RECT Rect;

И если можно немного теории того, как их надо объявлять.
Отправлен: 10.06.2006, 11:28
Вопрос задал: Шурыгин В.В. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: mix_mix
Здравствуйте, Шурыгин В.В.!
Хм, локальные - это всмысле в стеке?
Тогда:
LOCAL hDC: HDC
LOCAL Rect: RECT
LOCAL buf[255]: BYTE ; <- объявление массива байтов
Они обычно вставляются в начале процедуры, то есть
MyProc proc a:DWORD
LOCAL b: DWORD
xor eax, eax
... Пошел код
Ответ отправил: mix_mix (статус: 4-ый класс)
Ответ отправлен: 10.06.2006, 13:17

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Шурыгин В.В.!
Чтобы определить локальные переменные, необходимо вначале процедуры задать следующий код:
push ebp
mov ebp, esp
sub esp, <общая длина всех переменных>
Или тоже самое:
enter <общая длина всех переменных>,0
Тогда к переменным можно обращаться по [ebp-смещение]

А заканчивать надо по:
mov esp,ebp
pop bp
Или тоже самое:
leave

PS по [ebp+смещение] нужно обращаться к параметрам, которые передаются через стек
PSS чтобы не заморачиваться, гораздо проще задать LOCAL, и компилятор сам все вычислит и вставит
PSSS А вообще есть отладчик, там все видно...

---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Ответ отправлен: 13.06.2006, 12:46


Вопрос № 45.824
Пример №3 из рассылки Калашникова не работает.
Сассаблиравался, слинковался, но нефига не выводит.
только ждёт нажатиия клавиши.
Ассамблирую TASM'ом.(из ВС++ v.3.1)

Приложение:

Отправлен: 10.06.2006, 12:06
Вопрос задал: Arct (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Marid
Здравствуйте, Arct! В приложении Мне ничего не понятно. Объясни пожалуйста, что это всё значит?
Ответ отправила: Marid (статус: 1-ый класс)
Ответ отправлен: 10.06.2006, 12:18
Оценка за ответ: 1

Отвечает: newinfo2005
Здравствуйте, Arct!
Одно и тоже было в рассылках.
Но не поленюсь сказать еще раз.
...
_beg:
mov ax,0003h
int 10h
....

Приложение:

---------
"Спасибо" - нет такой валюты.

Ответ отправил: newinfo2005 (статус: 7-ой класс)
Ответ отправлен: 10.06.2006, 12:45


Вопрос № 45.834
Здраствуйте уважаемые эксперты! Даже не знаю куда отнести этот вопрос. Сюда или в WinAPI..
Сам вопрос в следующем:

Как перехватить нажатия "горячей" клавиши на клавиатуре и проинициировать даное "гарячее" нажатие как клик правой кнопкой мышки?Я нашол как отловить мышку или нажатие на клавиатуре... А вот как проэмулировать нажатие правой кнопки? И не просто выдать сообщение "Правая кнопка мыши была нажата", а чтобы выпадало то меню которое выпадает при нажатии правой кнопки в проводнике или в MS Word"е...

Как так можна сделать?
Отправлен: 10.06.2006, 13:42
Вопрос задал: Пизний Владимир Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: mix_mix
Здравствуйте, Пизний Владимир Владимирович!
В принципе, это конечно больше по WinAPI, нежели по ассемблеру. Ну да ладно, я и по WinAPI эксперт :)
Отлавливать нажатие кнопок клавиатуры лучше конечно через хуки, а не через RegisterHotkey, так как-то эстетичнее.
Эмулировать нажатие кнопки (правой) мыши можно через SendInput и mouse_event (советуют использовать первую, т.к. вторая якобы устарела):
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
mouse_event(MOUSEEVENTF_RIGHTUP,0, 0, 0, 0)

Ответ отправил: mix_mix (статус: 4-ый класс)
Ответ отправлен: 10.06.2006, 21:07


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное