Показать сообщение отдельно
  #4  
Старый 05.08.2015, 23:17
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Эээ....
Код:
.if CurrThID == ThID
За использование .IF макроса вообще руки отрывать надо, ну да ладно.
Для сравнения есть cmp + флаговые переходы jz/jnz/jb/ja/jc/je - тысячи их, и на каждый еще по несколько псевдонимов. cmp eax, ebx вычитает ebx из eax и выставляет флаги в соответствии с результатом, после чего на основании этих флагов можно сделать или не сделать переход. je/jz - переход на метку если есть флаг нуля, т.е. если результат предыдущей арифм. операции нулевой (eax = ebx в описываемом случае), jne/jnz - наоборот. При сравнении как минимум один аргумент должен быть регистром или константой, при этом первый аргумент константой быть не может. Можно сравнить регистр с числом, регистр с регистром, регистр с памятью, память с числом, память с регистрм. Любые локальные переменные находятся в памяти (и разработчикам MASM, да и не только, надо сказать отдельное "спасибо" за то, что в синтаксисе никак явно не указывается, что это обращение к памяти; только FASM в этом плане додумался логично сделать).
.IF-макрос транслируется в тот же cmp +j-что-нибудь.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием