Поиск:

Ответ в темуСоздание новой темы Создание опроса
> метка @@, метка @@ 
:(
    Опции темы
Сisa
Дата 11.8.2014, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Нашел пример для изучения, он компилируется и работает, но не понятна в нем метка @@ и переход @F
Код

DISK_STRING_PROC PROC
 ENTER 0, 0
 mov ECX, 50
 mov EBX, [EBP + 08]

$_METKA_:
 CMP byte ptr[EBX],   NULL

 jne @F

 MOV byte ptr[EBX], ' ' 

@@:                     
 inc     EBX                                                    
 LOOP   $_METKA_          
 LEAVE
 RET  4
DISK_STRING_PROC ENDP

Если бы и метка и переход  обозначался одинаково @@ то вопроса бы не было, но переход обозначен  @F
Почему так?
PM MAIL   Вверх
Dremuk
Дата 12.8.2014, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.12.2009

Репутация: нет
Всего: нет



Это локальные метки. Прочитайте в книге Юрова, например (Юров В.И., Assembler).
В данном случае  переход jne @F осуществляется на @@

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Сisa
Дата 12.8.2014, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Dremuk спасибо!

В.И.Юров стр.234-235 :
jmp @F ;ссыпка на предыдущую метку @@ (наверх)
jmp @B ;ссылка на следующую метку @@ (вниз)

В приведенном мной примере скорее всего ошибка, т.к.  jne @F это прыжок вверх, а метка @@: внизу, тем не менее пример работает (masm32), наверно потому что других меток с @ в нем нету. Можно поэкспериментировать.

--
Все наоборот, почему то, и в примере правильно оказывается, попробовал заменить на @B и не работает. А если заменить на обычные символьные метки, то все работает. Надо в других примерах поискать что такое вниз, что вверх.

Это сообщение отредактировал(а) Сisa - 12.8.2014, 11:43
PM MAIL   Вверх
500mhz
Дата 12.8.2014, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 1
Всего: 14



Ужас какой то
В нормальных компиляторах

МММ:  это глобальная метка
.МММ: это локалная


--------------------

PM MAIL ICQ   Вверх
Сisa
Дата 12.8.2014, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Записал tasm nasm fasm, пока же стараюсь пробовать RadASM MASM32, мне кажется так проще, потому что разброс большой - находишь код, а для для какого компилятора вопрос, а так invoke рулит, и нету int.
Глобальная метка, локальная начинаю вникать.
500mhz спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0735 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.