Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 578
от 26.06.2003, 04:30
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3569 Отправлено ответов: 10479 Активность: 293.6 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
VicSimon Статус: Доверительный Общий рейтинг: 102.16 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 112.3 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 151.84 URL: Программирование [Подробней >>] |
Tigran K. Kalaidjian Статус: Профессиональный Общий рейтинг: 119.54 URL: Методы оптимизации работы ПК [Подробней >>] |
Hayk Статус: Опытный Общий рейтинг: 113.36 URL: Perosnal Web Page which has been created long ago. [Подробней >>] |
Ramzes Статус: Профессиональный Общий рейтинг: 124.94 URL: Microsoft homepage [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 114.02 [Подробней >>] |
Hangatyr Статус: Опытный Общий рейтинг: 114.66 [Подробней >>] |
St Статус: Опытный Общий рейтинг: 107.65 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 137.28 [Подробней >>] |
Дмитрий Статус: Профессиональный Общий рейтинг: 138.63 [Подробней >>] |
_vt Статус: Опытный Общий рейтинг: 122.51 [Подробней >>] |
Zedr0n Статус: Начальный Общий рейтинг: 112.22 [Подробней >>] |
Eugene Статус: Профессиональный Общий рейтинг: 107.4 URL: мощный файловый архив [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 107.88 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Илья Статус: Опытный Общий рейтинг: 103.73 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 121.98 URL: мой сайт [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3537. Привет, эксперты! Кто-нибудь знает, как можно выдернуть 16-битные sch и pcb файлики из pcad 4.5 и пе... (ответов: 1)
Вопрос № 3538. Привет, эксперты! Сорри за оффтопик. Вопрос такой. Есть ли англоязычные рассылки, подобные этой. Хоч... (ответов: 1)
Вопрос № 3539. Это не вопрос, а скорее пожелания администратору данной рассылки. Нельзя-ли сделать так, чтоб к отве... (ответов: 3)
Вопрос № 3540. Уважаемые эксперты! При написании малюсенькой программы столкнулся с огромной (для меня, но не... (ответов: 8)
Вопрос № 3541. Ув. эксперты ! Поделитесь пожалуйста алгоритмом работы с СОМ-портом через прерывания - нужно принима... (ответов: 2)
Вопрос № 3542. Здравствуйте, уважаемые эксперты. Вчера-позавчера один человек спросил меня, как, мол, Винда управля... (ответов: 1)
Вопрос № 3543. Извините а нету описания с раличием команд MASM и NASM?... (ответов: 1)
Вопрос № 3544. Приветствую вас ЭксперТы. Биг фенкЮ Bob Johnson за ответ на вопрос № 3339. Очень помогло. Хук перела... (ответов: 2)
Вопрос № 3545. Господа, приветствую Вас! Как известно, что ни для TASM'a, ни для MASM'a не созданы родные редакторы... (ответов: 8)
Вопрос № 3546. в кратце мой вопрос таков: относительно какого сегмента дает смещение LEA? теперь более подробно: до... (ответов: 4)
Вопрос № 3547. Олег! подскажите, где можно скачать MASM 6.11 или TASM ? ... (ответов: 1)
Вопрос № 3548. K Вопросy № 3453 Здравсттвуййте эксперты!Благодарю за ответы! Принцип в принципе стал понятен,правда... (ответов: 1)
Вопросов: 12, ответов: 33
Вопрос № 3537 |
Привет, эксперты!
Кто-нибудь знает, как можно выдернуть 16-битные sch и pcb файлики из pcad 4.5 и перевести их в 32-битный формат? Стандартный конвертор вываливается с ошибкой :( Или хотя-бы распечатать проект. А может перевести его в gif, bmp или как-нибудь еще? С уважением, Дмитрий.
Вопрос отправлен: 21.06.2003, 06:53
Отправитель: Дмитрий (demetrius2003@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает VicSimon
Добрый день, Дмитрий!
Помнится в институте делал курсовой проект по САПР, заключался он как раз в конвертации библиотек из v4.5 в тогдашнюю v6 (32-разрядная). Исходники где-то были. Насколько я помню, там конвертились только pcb и sym, а в sch по-моему допустимых типов элементов больше. Хотя... Почти 10 лет прошло - мог и забыть детали. В общем, если нужно - пиши, поищу. Исходник по-моему на BC v3.1.
Ответ отправлен: 21.06.2003, 07:28
Отправитель: VicSimon
Вопрос № 3538 |
Привет, эксперты!
Сорри за оффтопик. Вопрос такой. Есть ли англоязычные рассылки, подобные этой. Хочется посмотреть, как это делается у них. С уважением, Дмитрий.
Вопрос отправлен: 21.06.2003, 07:15
Отправитель: Дмитрий (demetrius2003@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает baldr
Доброе время суток, Дмитрий!
В принципе, все выросло из FIDO... И там все гораздо более развито, нежели у нас...
Попробуй подписаться на какую-нибудь американскую эху. ;)
Если не подключен, то попробуй через инет-гейты...
Ответ отправлен: 21.06.2003, 12:38
Отправитель: baldr
Вопрос № 3539 |
Это не вопрос, а скорее пожелания администратору данной рассылки. Нельзя-ли сделать так, чтоб к ответу эксперта добавлялся его e-mail? Получается, что многие пишут "если что, пиши", а куда писать, забывают указать (VicSimon, по вопросу pcad). С введением e-mail эксперта в ответ все намного упростилось бы. С уважением, Дмитрий.
Вопрос отправлен: 21.06.2003, 08:00
Отправитель: Дмитрий (demetrius2003@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Дмитрий!
Ну и написал бы ему на admin@rusfaq.ru.
Или можешь использовать мою программу для отправки ответов, и в стандартную строчку, которая добавляется к любому ответу дописать свой e-mail.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 22.06.2003, 15:58
Отправитель: Bob Johnson
Отвечает baldr
Добрый день, Дмитрий!
Когда я, например, говорю "пиши", то я имею в виду, что после ответа внизу у получателя будет ссылка на мой сайт, куда я хочу, чтоб читатель зашел и нашел там мое мыло, заодно посетив сайт. :) Это не накрутка счетчика, это я народ темой сайта так еще пытаюсь заинтересовать... :)
На вопрос, естественно, тоже отвечаю. :))
А вот мыло указывать при задании вопроса - это правильно, ибо бывают материалы, которые лучше послать по почте...
Например, спам... ;-)
Ответ отправлен: 21.06.2003, 12:42
Отправитель: baldr
Отвечает Tigran K. Kalaidjian
Здравствуйте, Дмитрий!
Присоединяюсь. Только ещё было бы неплохо, если бы к вопросу пользователя присоединялось его мыло, а вот в рассылке указывалось по желанию задавающего вопрос. Иногда нужно бывает письмо отправить, а из-за того, что мыло не указано, приходится засорять рассылку.
Ответ отправлен: 21.06.2003, 15:33
Отправитель: Tigran K. Kalaidjian
Вопрос № 3540 |
Уважаемые эксперты!
При написании малюсенькой программы столкнулся с огромной (для меня, но не для вас) проблемой.
Моя программа (без окна) должна периодически (секунд через 10 или 30 или около того) проверять определенное условие и при выполнении его запускать другую программу.
Вопрос: как сделать так, чтобы в промежуток времени между проверками условия моя программа бездействовала, т.е. не крутилась в цикле или т.п., т.е. что-бы не грузила проц без необходимости, а просто ожидала следующего момента проверки условия.
Заранее спасибо!
Вопрос отправлен: 21.06.2003, 10:35
Отправитель: Konstantin
[Следующий вопрос >>] [Список вопросов]
Отвечает Hayk
Здравствуйте, Konstantin!
Sleep( timeout ) - perevodit tekushi potok v rejim yadra( kernel mode )
Ответ отправлен: 23.06.2003, 14:52
Отправитель: Hayk
Отвечает Ramzes
Добрый день, Konstantin!
Ну если ты не хочешь, чтобы твое приложение имело окно, то просто создай окно и спрычь его (ShowWindow(SW_HIDE)). И потом поставь на это окно таймер.
Ответ отправлен: 23.06.2003, 14:19
Отправитель: Ramzes
Отвечает ASMодей
Приветствую Вас, Konstantin!
Используй обычные сообщения от таймера. Насколько я знаю,
если в очереди нет никаких сообщений, то программа не занимает процессорное время.
Ответ отправлен: 23.06.2003, 07:35
Отправитель: ASMодей
Отвечает Bob Johnson
Приветствую Вас, Konstantin!
Самый простой способ - Sleep (n), где n - время в мс, на которое программа должна "заснуть" и ничего не делать (не грузить проц). Ставь эту команду в цикл, а потом выполняй действия:
m1:
Call Sleep, 10000
...
jnz m1
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 22.06.2003, 15:59
Отправитель: Bob Johnson
Отвечает baldr
Доброе время суток, Konstantin!
Мне кажется, многоуважаемый сэр не слышал про таймер?
Вешаешь обработчик WM_TIMER и прога у тебя вызывается через определенный тобой промежуток времени!
Ответ отправлен: 21.06.2003, 12:53
Отправитель: baldr
Отвечает Hangatyr
Приветствую Вас, Konstantin!
Или сделай цикл, но проверяй условия не постоянно, а через некоторое время - задержку можно организовать с помощью Sleep.
Ответ отправлен: 21.06.2003, 13:00
Отправитель: Hangatyr
Отвечает St
Привет, Konstantin!
Я так понял что программа под винды? Для этого есть функция Sleep с параметром времени в миллисекундах.
St
Ответ отправлен: 22.06.2003, 08:51
Отправитель: St
Отвечает masquer
Доброе время суток, Konstantin!
Можно просто создать окно, нигде его не показывать и все ненужные сообщения отсеивать
Ответ отправлен: 23.06.2003, 10:39
Отправитель: masquer
Вопрос № 3541 |
Ув. эксперты ! Поделитесь пожалуйста алгоритмом работы с СОМ-портом через прерывания - нужно принимать информацию от внешнего устройства. Если есть возможность - пришлите сишный исходник.
Спасибо.
xodok99@mail.ru
Вопрос отправлен: 21.06.2003, 14:30
Отправитель: Mar
[Следующий вопрос >>] [Список вопросов]
Отвечает Дмитрий
Доброе время суток, Mar!
Мылом ушло описание COM-порта с исходниками на C. Только вот алгоритм работы с COM-портом через прерывания, да и еще на C - это вряд ли возможно найти. Хотя, я видимо не совсем понял, что имеется в виду. Что значит работа через прерывания? Нужно написать драйверок, хватающийся за аппаратные прерывания? Или нужно просто описание функций прерываний для работы с COM-портом? В прошлый раз мой ответ по поводу "прерывания от двух кнопок" в этом отношении не был корректен. Если нужны описания функций - пиши на demetrius2003@mail.ru вышлю дополнительные доки. Удачи!
Ответ отправлен: 23.06.2003, 08:42
Отправитель: Дмитрий
Отвечает Tigran K. Kalaidjian
Доброе время суток, Mar!
Подборка документов по теме (исходники на си, паскале и ассемблере) ушла на мыло. Вообще же для работы с внешним устройством часто бывает достаточно использовать обмен через "файл-порт"(т.е. работать с портом, как с файлом). Подробнее смотрите в архиве этой рассылки или пишите на kalaidjian@pochtamt.ru .
Ответ отправлен: 22.06.2003, 11:35
Отправитель: Tigran K. Kalaidjian
Вопрос № 3542 |
Здравствуйте, уважаемые эксперты.
Вчера-позавчера один человек спросил меня, как, мол,
Винда управляет досовскими программами. Ему, в общем,
надо перехватывать обращения досовской проги к винту.
Ну я ему посоветовал почитать про VMM, нарыть где-
нибудь туторсы Икзелиона (по-моему там чтой-то было),
ну и написать драйвер.
Прав ли я? Может можно отделаться каким-нить Хуком
(вот только не представляю, на какую функцию Хук ставить).
Заранее спасибо за любой ценный совет.
Вопрос отправлен: 21.06.2003, 16:07
Отправитель: TReaMoN (treamon@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, TReaMoN!
> Ему, в общем, надо перехватывать обращения досовской проги к винту.
Только досовской?
Все обращения к винту под 9х можно перехватить из драйвера - там есть специальный сервис для этого, если что - посмотри исходники Win95Cih.
В любом случае, с такой задачей ему надо драйвер писать.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 22.06.2003, 15:59
Отправитель: Bob Johnson
Вопрос № 3543 |
Извините а нету описания с раличием команд MASM и NASM?
Вопрос отправлен: 21.06.2003, 18:39
Отправитель: Gundars (guntis@mbizness.lv)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Приветствую Вас, Gundars!
В хелпе к NASM(обычно входит в состав) есть описания отличий от стандартов TASM и MASM
---===*** E-Man 1.2 - Powerful toy***===---
Ответ отправлен: 22.06.2003, 12:38
Отправитель: _vt
Вопрос № 3544 |
Приветствую вас ЭксперТы.
Биг фенкЮ Bob Johnson за ответ на вопрос № 3339. Очень помогло. Хук перелавливает сообщения и изменяет их. Но есть одна проблема.
В WM_KEYDOWN (KEYUP), в wParam находится virtual-key, в lParam с 16 по 23 бит (кажется) OEM code лежит. Консоль не чует изменения virtual-key, может он с OEM code работает. Как мне эти биты из lParam в другую переменную вытащить, а потом обратно вставить не испортив остальные биты lParam?
И еще как узнать текущую раскладку клавиатуры (Russian/English).
Зарание благодарен zOmegA
Вопрос отправлен: 21.06.2003, 21:26
Отправитель: zOmegA (zOmegA@inbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ramzes
Здравствуйте, zOmegA!
Чтобы узнать раскладку клавиатуры используй API функцию GetACP();
Ответ отправлен: 23.06.2003, 14:29
Отправитель: Ramzes
Отвечает Bob Johnson
Приветствую Вас, zOmegA!
А у тебя Windows-то 98-й небось? В нем что-то совсем не так и консольные приложения работают наполовину в досе :(...
Попробуй, конечно, скан-код, но, думаю, что ничего не выйдет. Консоль будет работать с VKС в НТ-системах (2К, ХР).
> Как мне эти биты из lParam в другую переменную вытащить
на асме?
mov eax, [lParam]
shr eax, 16
mov [??], al
за точность не уверен, биты брал исходя, что ты написал, что они с 16 по 23.
на с++:
BYTE b = ((lParam >> 16) & 0xFF);
> И еще как узнать текущую раскладку клавиатуры (Russian/English)
GetKeyboardLayout
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 22.06.2003, 15:59
Отправитель: Bob Johnson
Вопрос № 3545 |
Господа, приветствую Вас! Как известно, что ни для TASM'a, ни для MASM'a не созданы родные редакторы. Но на свете много умельцев и они создали не мало таких редакторов, а сам процесс создания машинного кода происходит через подключение нужных файлов, например, Tasm, Tlink и т. д. Уважаемые эксперты, не думаю я, что вы в блокноте(а еще интереснее в ДОС-редакторе) создаете программу, а затем ее вручную (ну или через бат-файлы) компилируете ее. Напишите, пожалуйста, кто какими редакторами пользуется (возможно кто-то и свой для себя написал). Я пользовался для ДОСа ASM_ED, но при компиляции виндовс-кода окошко с возможными ошибками сразу же закрывается, т. к. ml.exe не досовская программа и винда сразу убирает отработанное окно. Заранее благодарен.
Вопрос отправлен: 21.06.2003, 21:42
Отправитель: a1 (a111_666@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Zedr0n
Здравствуйте, a1!
Лично я пользюсь Far'ом + Colorer. В Far, по-моему, очень неплохой редактор. А bat-файлы вы зря не любите, очень удобная вещь. В Far'е можно создавать пользовательское меню, вызываемое через F2. Его я и юзаю. Печатание сведено к минимуму. К тому же, в Far'е можно использовать нестандартные EGA/VGA шрифты, так что очень легко подобрать подходящий. Также можно создавать собственные шрифты с помщью Досовских специализированных программ. Так что все очень удобно. Удачи в поиске того, что подойдет именно Вам!
Ответ отправлен: 24.06.2003, 19:32
Отправитель: Zedr0n
Отвечает ASMодей
Здравствуйте, a1!
Лично я для ASMа использую встроенный редактор Dos Navigator. Там есть подсвечивание, а главное, можно настроить запуск программ по расширению.
Ответ отправлен: 23.06.2003, 07:38
Отправитель: ASMодей
Отвечает Eugene
Добрый день, a1!
Лично я пользуюсь встроенным редактором в FAR'е. А компилирую вручную. Для особо долгоиграющих проектов делаю make - файл. Когда пишу на fasm, пользуюсь тем редактором, который автор fasm'а специально написал для него. И компилирую тогда в этом редакторе.
Ответ отправлен: 22.06.2003, 13:42
Отправитель: Eugene
Отвечает baldr
Добрый день, a1!
Ну, я, обычно так и делаю, как ты описал. В крайнем случае - запускаю TASMED - он меня вполне устраивает. А для винды пишу в редакторе DOS Navigator'а!
Ответ отправлен: 22.06.2003, 09:32
Отправитель: baldr
Отвечает Tigran K. Kalaidjian
Приветствую Вас, a1!
Я пользуюсь в основном Turbo Shell Сергея Чехуты(DOS-версия). Довольно удобный редактор. Похож на TurboC и TurboPascal - оболочки. Есть поддержка мыши и много различных удобных опций. Хотя довольно часто пользуюсь просто текстовым редактором из комплекта NC, а потом запускаю компилятор и линкер из командной строки.
Ответ отправлен: 22.06.2003, 11:51
Отправитель: Tigran K. Kalaidjian
Отвечает _vt
Добрый день, a1!
> ни для TASM'a, ни для MASM'a не созданы родные редакторы
Ну для MASM есть "родной " редактор - pwb.exe
> а затем ее вручную (ну или через бат-файлы) компилируете ее
Именно так и делаю... Также использую встроенный редактор FAR'а с плагином colorer4ever,
который добавляет в редактор цветовыделение ключевых слов, регистров, команд и т.д. Также и ошибки можно посмотреть, нажав Ctrl-O...
---===*** E-Man 1.2 - Powerful toy***===---
Ответ отправлен: 22.06.2003, 12:38
Отправитель: _vt
Отвечает Bob Johnson
Приветствую Вас, a1!
> не думаю я, что вы в блокноте(а еще интереснее в ДОС-редакторе) создаете программу, а затем ее вручную (ну или через бат-файлы) компилируете ее
Я вот именно так и делаю. И это вполне удобно. А тебя чем не устраивают bat файлы? Можно настроить все индивидуально для каждой программы. А редакторов хороших - сколько угодно, тот же far подсвечивает синтаксис. Не хватает только редактора ресурсов, но я думаю, что эта проблема пока не решена на достойном уровне.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 22.06.2003, 15:59
Отправитель: Bob Johnson
Отвечает Gibbel
Доброе время суток, a1!
Ну, как тебе сказать... Вообще-то я пользую обычный редактор из NC, а собираю с помощью make-файла... ;-)
Ответ отправлен: 23.06.2003, 11:52
Отправитель: Gibbel
Вопрос № 3546 |
в кратце мой вопрос таков: относительно какого сегмента дает смещение LEA?
теперь более подробно: допустим у меня программа, которая должна работать при загрузке компьютера. я ее пихаю в 0 сектор дискеты. биос ее грузит в 0000:7с00. вот. теперь я то что есть в cs гружу в ds и es. теперь в bp мне нужно смещение строки, однако при lea bp, string я получаю смещение не относительно 0000, а относительно 07с0. странно - мне казалось что смещение будет от ds или на худой конец es. более того в коде, полученным при сборке tasm-ом я вижу, что он сгенерировал вообще не леа, а мов! очень странно.
пожайлуста, если моя просьба не кажется вам очень глупой, разьясните мне работу lea.
заранее спасибо.
игорь сидоров.
Вопрос отправлен: 21.06.2003, 22:17
Отправитель: igor sidorov
[Следующий вопрос >>] [Список вопросов]
Отвечает Tigran K. Kalaidjian
Добрый день, igor sidorov!
LEA first, second
Команда LEA Загружает в first-операнд эффективный адрес памяти, который вычисляется в соответствии с указанным режимом адресации second-операнда.
Если second-элемент находится в сегменте данных, то и смещение берется относительно начала сегмента данных.
При переводе в машинный код mov не отличается от lea, т.к. lea по сути загружает адрес в first-операнд(lea ax, str1 эквивалентна mov ax, offset str1)
Для наглядности ниже представлена программа (исходник в приложении) после компиляции в HEX-виде:
B8 00 01 B8 00 4C CD 21
^ ^ ^
LEA ax MOV ax INT
Приложение:
Ответ отправлен: 22.06.2003, 21:43
Отправитель: Tigran K. Kalaidjian
Отвечает Илья
Доброе время суток, igor sidorov!
LEA Загрузка исполнительного адреса
Признаки не меняются.
Команда: LEA destination,source.
Логика : destination = Addr(source).
Команда LEA присваивает значение смещения (offset) операнда source (а не его значение !) операнду destination. Операнд source должен быть ссылкой на память, а в качестве операнда destination может выступать любой 16-битный регистр, кроме сегментных.
--------------------------------------------------------------
Операнды Такты Обращения Байты Пример
регистр16,память32 2+EA - 2-4 LEA BX,MEM_ADDR
--------------------------------------------------------------
Примечания :
Эта команда имеет то преимущество по сравнению с использованием оператора OFFSET в команде MOV, что операнду source можно иметь индексы. Например, следущая строчка не содержит
LEA BX,TABLE[SI]
в то время, как строка
MOV BX,OFFSET TABLE[SI]
ошибочна, так как оператор OFFSET вычисляется во время ассемблирования, а указанный адрес не будет известен до тех пор, пока программа не будет запущена на счет.
Ответ отправлен: 22.06.2003, 02:12
Отправитель: Илья
Отвечает _vt
Здравствуйте, igor sidorov!
1)> казалось что смещение будет от ds или на худой конец es
Смещение будет от ss (для регистров bp или sp)
2)lea reg16, string - загружает смещение переменной string в регистр reg16.
3)Чтобы не возникало проблем лучше напиши
mov bp, offset string (что и сделал tasm)
4)Если в начале программы у тебя директива org 07c00h, то и отсчет смещения будет от этого значения
---===*** E-Man 1.2 - Powerful toy***===---
Ответ отправлен: 22.06.2003, 12:38
Отправитель: _vt
Отвечает Bob Johnson
Доброе время суток, igor sidorov!
LEA сама по себе ничего не решает и не смотрит вообще на сегменты! Все за нее делает компилятор. Вариант lea eax, [mY_vAr] полностью аналогичен mov eax, offset mY_vAr и ничем не лучше! В любой ситуации эти обе команды будут в памяти представлять: опкод _offset mY_vAr_, опкод будет разный, а смещение - одинаковое, и именно оно и загрузится в eax.
Тогда логичный вопрос - для чего же нужна lea вообще?
Только для следующих ситуаций: процессор поддерживает такую адресацию: mov eax, [ebx + ecx*4 + 0x111] или mov ax, [bp + si] в 16-ти разрядном режиме. Чтобы загрузить адрес операнда в регистр в случае такой команды надо было бы сделать:
mov eax, ecx
shl eax, 2
add eax, ebx
add eax, 0x111
Видишь - 4 команды! Но ведь все эти вычисления уже может делать адресный конвейер процессора (т.к. он их делает в приведенных выше командах) - вот для оптимизации этого и ввели команду lea, чтобы не писать 4 команды, а написать
lea eax, [ebx + ecx*4 + 0x111], что и память экономит и быстрее работает.
Но в любой ситуации сегмент, относительно которого вычисляется смещение определяет компилятор, например, по тому, в каком сегменте описана переменная.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 22.06.2003, 15:59
Отправитель: Bob Johnson
Вопрос № 3547 |
Олег! подскажите, где можно скачать MASM 6.11 или TASM ?
Вопрос отправлен: 21.06.2003, 22:51
Отправитель: Евгений (John_Gr@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Tigran K. Kalaidjian
Добрый день, Евгений!
TASM можно скачать с:
http://www.geocities.com/bio_yugene/archive/tasm.zip
Если Вы живёте в Москве, то можете зайти на мою станцию ББС(TiCOiN BBS), предварительно предупредив по E-MAIL kalaidjian@pochtamt.ru
Там Вы можете найти TASM, NASM и всё, что может пригодиться для программирования на ассемблере.
Ответ отправлен: 22.06.2003, 19:52
Отправитель: Tigran K. Kalaidjian
Вопрос № 3548 |
K Вопросy № 3453
Здравсттвуййте эксперты!Благодарю за ответы!
Принцип в принципе стал понятен,правда много непонимаю,например
зачем столько "писанины":
- extrn MessageBoxA :proc что еще за proc(near),и зачем при компановке
lib файлы включать,нельзя ли из dll сразу функцию посмотреть,к тому же
все равно ехтрн МессагеВохА написал.Вон в SoftIce написал ЕХР чего нибудь
и он уже знает...
И еще,как мне самому написать простую dllку с парой функций(допустим одна будет
увеличевать,а другая уменьшать переданное ей число(MyDll.dll с функциями MyIncEAX
MyDecEAX например))как именно надо принять аргумент(или аргументы) для обработки и
как правильно очистить стек,но самое главное как откомпилировать и откомпоновать
эту ахинею (в TASM ) и какую "писанину" там надо писанинить?
Буду оффигенно рад вашим ответам!!!
Вопрос отправлен: 22.06.2003, 04:12
Отправитель: Korov
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, Korov!
все равно ехтрн МессагеВохА написал.Вон в SoftIce написал ЕХР чего нибудь и он уже знает...
ничего он не знает. Все extrn прописаны в файле winice.dat, и по умолчанию там грузяться экспорты из kernel32.dll и user32.dll. Попробуй их убери. А EXP лишь выводит инфу о том что сайс в данный момент ВИДИТ
насчет dll-ки - там принцип тот же что при написании Exe-шника (он содержит набор функций) только заголовок другой
Ответ отправлен: 22.06.2003, 10:58
Отправитель: Broken Sword
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (38) C / C++ (26) Perl (5) Builder / Delphi (18) Pascal (28) Basic / VBA (9) Java / JavaScript (13) PHP (5) MySQL / MSSQL (6) |
Пользователю Windows 95/98/Me (30) Windows NT/2000/XP (26) "Железо" (20) Поиск информации (15) |
Администратору Windows NT/2000/XP (13) Linux / Unix (6) |
Юристу Гражданское право (7) Семейное право (3) Трудовое право (5) КоАП (4) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А. |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||