在vc中内嵌
         __asm 

MOV AL, 2 
MOV DX, 0xD007 
OUT AL, DX 
}
上面就是编译不过的
提示为:warning C4405: 'AL' : identifier is reserved word
    error C2400: inline assembler syntax error in 'opcode'; found ','把上面的改成这样:
         __asm 

MOV AL, 2 
MOV DX, 0xD007 
//OUT AL, DX 
}
也就是把//OUT AL, DX 去掉了编译就ok的!
0 error(s), 0 warning(s)
为啥呀?
救救命了

解决方案 »

  1.   

    AL比DX短啊,怎么OUT
    OUT DX, AL 这还差不多。
      

  2.   

    __asm
    {
    mov AL, 2
    mov DX, 0xD007
    out DX, AL
    }
      

  3.   

    __asm
    {
    MOV AH,dd 
    AND AH,0FH
    MOV AL,AH
    MOV DX,PORT_O
    OUT DX,AL
    MOV BX,DELAY2
      SSS1: MOV DX, PORT_I
    IN AL, DX
    SSS0: MOV TEMP, AL
    IN AL, DX
    CMP AL,TEMP
    JNZ SSS0
    MOV CL, 3
    SHR AL, CL
    AND AL, 1FH
    CMP AL, AH
    JZ SSS3
    DEC BX
    JNZ SSS1
    MOV ERR, 1
    JMP SSSEND
      SSS3: MOV AH, dd
    MOV CL, 4
    SHR AH, CL
    OR AH, 10H
    MOV AL, AH
    MOV DX, PORT_O
    OUT DX, AL
    MOV BX, DELAY2
      SSS5: MOV DX, PORT_I
    IN AL, DX
      SSS6: MOV TEMP, AL
    IN AL, DX
    CMP AL,TEMP
    JNZ SSS6
    MOV CL, 3
    SHR AL, CL
    AND AL, 1FH
    CMP AL, AH
    JZ  SSSEND
    DEC BX
    JNZ SSS5
    MOV ERR, 1
    SSSEND:
    }这一段汇编以vc1.0里面编译ok
    可是在vc6.0里面就不行能?为啥呀?
      

  4.   

    vc1.0 refer to win16
    vc6.0 refer to win32
      

  5.   

    vc1.0没用过。
    兼容性问题。2000下能跑的程序,xp还不一定能用呢。