在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)
为啥呀?
救救命了
__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)
为啥呀?
救救命了
OUT DX, AL 这还差不多。
{
mov AL, 2
mov DX, 0xD007
out DX, AL
}
{
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里面就不行能?为啥呀?
vc6.0 refer to win32
兼容性问题。2000下能跑的程序,xp还不一定能用呢。