Здравствуйте, Аноним, Вы писали:
А>>В чем разница между вызовами (если есть):
А>>А>>call LABEL
А>> ; ...
А>>LABEL:
А>> ; do something
А>> ret
А>>
А>>и
А>>
А>>call some_proc
А>> ; ...
А>>some_proc PROC
А>> ; do something
А>> ret
А>>some_proc ENDP
А>>
Запись эта эквивалентна с точки зрения процессора. call — это запихивание CS и IP в стэк (или только IP в случае ближнего вызова) и jmp на какую-то метку. Как она написана в ассемблеоре это уже дело десятое... Например, в nasm'е такой формы просто нету (я про some_proc PROC и some_proc ENDP).
Насчет ее смысла в tasm'е могу и ошибаться, но вроде это нужно линкеру, чтобы он правильно сливал exe'шник из нескольких файлов...
А>В первом случае флаги не сохраняются перед вызовом и не восстанавливаются после ret, во втором — сохраняются и восстанавливаются.
Флаги сохраняются и восстанавливаются только при при командах int и iret!