Люди,помогите мне студенту с метками в С с вставкой асм-кода.. т.е. мне необходимо объявить метку,а затим использовать ее в асм-коде.... Пример: Код (Text): #define m1 #define m2 #define m3 .............. _asm{ cmp x,5 jng m1 cmp z,6 jg m1 @m1: cmp y,0 jne m2 cmp x,0 je m2 @m2: mov ax,4 imul x mov bx,ax mov ax,5 imul y add ax,bx //ax=4x+5y sub ax,z mov f,ax @m3: Вот тут у меня трабла.....Когда компилирую,у меня выскакивает сообщение о эрроре......Типа неизвестная метка.... Как правильно объявлять метки?Может я неправильно что-то объявляю....Или предложите свой способ решения данной проблемы.....Спаисбо вам!!!
Попробуйте так: Код (Text): _asm { ...instruction... ...instruction... ...instruction... } @LABEL1: _asm { ...instruction... ...instruction... ...instruction... } @LABEL2: _asm { ...instruction... ...instruction... ...instruction... } или так: Код (Text): _asm ...instruction... _asm ...instruction... _asm ...instruction... @LABEL1: _asm ...instruction... _asm ...instruction... _asm ...instruction... @LABEL2: _asm ...instruction... _asm ...instruction... _asm ...instruction... А также надо убрать вот это (зачем это кстати?): Код (Text): #define m1 #define m2 #define m3 ^^^ Если m1 применить в коде - он превратится в пустое место, так что @m1: превратится в @:
Си не понимает символы "@" Компилятор MSVC понимает метки внутри блоков __asm {}: Код (Text): __asm { label: nop jmp label } А intel C++ compiler "видит" ассемблерные метки из Си кода: Код (Text): asm { label: nop jmp label } // goto label; ЗЫ: изначальный пример, это что-то вроде turbo C под дос ?
AsmGuru62 Кул......все пашет! _asm { ...instruction... ...instruction... ...instruction... } @LABEL1: _asm { ...instruction... ...instruction... ...instruction... } @LABEL2: _asm { ...instruction... ...instruction... ...instruction... } Вот этот способ прокатил