小弟不知道在这里发这个贴子对不对路,先放几天看看!         int1:
         __asm
         {...}
         ...
         int3:
         {...}
         ..........          __asm
{
MOV AH,0x25
MOV AL,0x1
PUSH DS
MOV CX,CS
MOV DS,CX
MOV DX, OFFSET int1   ////错误
INT 0x21
POP DS

MOV AH,0x25
MOV AL,0x3
PUSH DS
MOV CX,CS
MOV DS,CX
MOV DX, OFFSET int3  /////错误
INT 0x21
POP DS
}编译时错误提示为:error C2443 :operand size conflict 
急!!!!!!
能不能把两个标号的值先保存到两个变量,再把变量move进去,但是标号的(地址)值怎么取得?
或者,谁有其他的办法也行!

解决方案 »

  1.   

    Compiler Error C2443operand size conflictThe instruction requires operands to be the same size.Example// C2443.cpp
    short var;
    int main()
    {
       __asm xchg ax,bl            // C2443
       __asm mov al,red            // C2443
       __asm mov al,BYTE PTR var   // OK
    }
      

  2.   

    楼主这样还不够累的,直接用windows的VEH实现不行?
      

  3.   

    example:
    __asm
    {
    start :
    mov eax,1
    mov ebx ,2
    mov ecx ,offset start
    ......
    }
      

  4.   

    我做木马经常用这种方法,不过你的方法是做的应该这样写
    应该这样写
    lea eax,int1
    move edx,eax
      

  5.   

    语法错误改了,不过windows程序中是不能够用int21之类的东西的。请你注意,这类DOS或者BIOS中断调用只能在16位模式下使用,NT系统是纯32为系统,所以你不要胡来
      

  6.   

    TO AthlonxpX86(桃源村) 
    果然高,我也刚找到用lea的方法可以解决问题,呵呵!谢谢了!
    还有,你的int21的建议我是知道的,thx anyway!
    能给个联系方式吗?To all:
    很满意,结贴了!