IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
Closed Topic Открыть новую тему 
> Вывод строк. Равносильные команды?, В чем отличие lea от offset ?
сообщение
Сообщение #1


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


чем отличается
lea dx, DATA
от
mov dx,offset DATA

При выводе строк надо адрес строки разместить в dx, я пробовал двумя способами, вроде одно и то-же. Это действительно одинаковые команды???


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А ты откомпиль оба варианта, а затем открой в дебугере.
Что он выдаёт???
lol.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Вроде как mov reg,offset data круче!


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 112
Пол: Мужской

Репутация: -  0  +


могу точно подтвердить - LEA и MOV OFFSET являются эквивалентными командами. насколько помню, в книжке рекомендуется использовать LEA по причине, которую я не помню. а я добавлю - код генерируется на байт меньше :D, скорость выполнения по-моему тоже быстрее, да и писать меньше!


--------------------
Я люблю этот форум!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Это зависит от компилятора. У меня Tasm 5.0 с дериктивой SMART весь тупёжь записывает в NULL, а код в exe-шник smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 112
Пол: Мужской

Репутация: -  0  +


у меня TASM 5.1 и ему пофиг, что компилить :D


--------------------
Я люблю этот форум!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Ну да, lea код меньшего размера


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


В "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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Кстати, LEA можно использовать как трехадресную команду сложения ;) При этом одно слогаемое должно быть размещено в BX или BP, а второе - в SI или DI. Результат можно поместить в любой регистр общего назначения. Команды такого вида занимают в памяти 2 байта :P

Например: "lea ax,[bx+si]" <=> "mov ax,bx; add ax,si"


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 18:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name