2010-02-05 1 views
2

Я использую VS2008 C++ (no libs). Это мой код:Начальная проблема с встроенной сборкой

__asm 
    { 
    jmp start 
msg: 
      db "http://www.stackoverflow.com" 
dtfld: 
      db "00/00/0000" 
tmfld: 
      db "00:00:00" 
start: 

Я получаю следующие ошибки:

Ошибка 1 Ошибка C2400: встроенный ассемблер ошибок синтаксиса в 'опкодом'; найденный «плохой токен»
Ошибка 2 ошибки C2400: ошибка синтаксиса встроенного ассемблера в 'opcode'; found 'bad token'
Ошибка ошибки 3 C2400: ошибка синтаксиса встроенного ассемблера в 'opcode'; найдено «плохой токен»

Почему это?

+0

Почему «db» недействительный токен? – Behrooz

ответ

4

Цитата Data Directives and Operators in Inline Assembly (Microsoft):

Хотя __asm ​​блок может ссылаться на C или C++, типы данных и объекты, он не может определить объекты данных директив MASM или операторами. В частности, вы не можете использовать директивы определения DB, DW, DD, DQ, DT и DF или операторы DUP или THIS. Структуры MASM и записи также недоступны. Встроенный ассемблер не принимает директивы STRUC, RECORD, WIDTH или MASK.

+0

спасибо.i не знаю эта предмет. – Behrooz

+1

Но вы должны иметь возможность ссылаться на строковые константы, определенные в реальном C++, поэтому вы не теряете много в этом случае. –

+0

char * c = "15 символов" – Behrooz