![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
Altair |
![]() ![]()
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
чем отличается
lea dx, DATA от mov dx,offset DATA При выводе строк надо адрес строки разместить в dx, я пробовал двумя способами, вроде одно и то-же. Это действительно одинаковые команды??? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
BlackShadow |
![]()
Сообщение
#2
|
Гость ![]() |
А ты откомпиль оба варианта, а затем открой в дебугере.
Что он выдаёт??? ![]() |
FreeMan |
![]()
Сообщение
#3
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вроде как mov reg,offset data круче!
-------------------- бб
|
NetAnton |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 112 Пол: Мужской Репутация: ![]() ![]() ![]() |
могу точно подтвердить - LEA и MOV OFFSET являются эквивалентными командами. насколько помню, в книжке рекомендуется использовать LEA по причине, которую я не помню. а я добавлю - код генерируется на байт меньше :D, скорость выполнения по-моему тоже быстрее, да и писать меньше!
-------------------- Я люблю этот форум!
|
BlackShadow |
![]()
Сообщение
#5
|
Гость ![]() |
Это зависит от компилятора. У меня Tasm 5.0 с дериктивой SMART весь тупёжь записывает в NULL, а код в exe-шник
![]() |
NetAnton |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 112 Пол: Мужской Репутация: ![]() ![]() ![]() |
у меня TASM 5.1 и ему пофиг, что компилить :D
-------------------- Я люблю этот форум!
|
Altair |
![]()
Сообщение
#7
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Ну да, lea код меньшего размера
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Acidrain |
![]()
Сообщение
#8
|
Гость ![]() |
komanda LEA oznatchaet "Load Effective Address" chto perevoditsja kak "Zagrushi effektivnyi adres" on pomeshaet segment data tak skazat v nailuchee mesto v registre!
ja v poslednie vrenmja ispolzuju evo bolshe ![]() |
xds |
![]()
Сообщение
#9
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
В "lea dx,DATA" в качестве DATA может выступать операнд с любым видом адресации. Например "lea dx,[bx+3]" (3 байта) эквивалентно "mov dx,bx; add dx,3" (5 байт), но ощутимо экономит место. В то же время "mov dx,offset DATA" - всего лишь загрузка константы в dx.
-------------------- The idiots are winning.
|
xds |
![]() ![]()
Сообщение
#10
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Кстати, LEA можно использовать как трехадресную команду сложения ;) При этом одно слогаемое должно быть размещено в BX или BP, а второе - в SI или DI. Результат можно поместить в любой регистр общего назначения. Команды такого вида занимают в памяти 2 байта :P
Например: "lea ax,[bx+si]" <=> "mov ax,bx; add ax,si" -------------------- The idiots are winning.
|
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 11:24 |