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

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.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
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
Отписаться
Убрать рекламу

В избранное