内联汇编的初学者问题

时间:2010-02-05 18:33:14

标签: visual-c++ assembly inline-assembly

我正在使用VS2008 C ++(没有libs)。这是我的代码:

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

我收到以下错误:

  

错误1错误C2400:'opcode'中的内联汇编语法错误;发现'坏令牌'   错误2错误C2400:'操作码'中的内联汇编语法错误;发现'坏令牌'   错误3错误C2400:'操作码'中的内联汇编语法错误;发现'坏令牌'

为什么会这样?

1 个答案:

答案 0 :(得分: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。