关于中断——C与汇编嵌套,请高手指教!
小弟不知道在这里发这个贴子对不对路,先放几天看看!
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进去,但是标号的(地址)值怎么取得?
或者,谁有其他的办法也行!
问题点数:40、回复次数:10Top
1 楼syy64(太平洋)回复于 2006-03-04 12:47:42 得分 0
汇编,现在懂的人不多。Top
2 楼cdmar79(陈)回复于 2006-03-05 09:35:44 得分 0
那我放到汇编那里问是不是更好点啊!?Top
3 楼cdmar79(陈)回复于 2006-03-05 21:04:49 得分 0
在顶一天,大家帮忙啊!Top
4 楼taianmonkey()回复于 2006-03-07 15:59:44 得分 5
Compiler Error C2443operand size conflict
The 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
}
Top
5 楼lisypro()回复于 2006-03-09 10:35:25 得分 0
UPTop
6 楼deutsch(人民)回复于 2006-03-09 11:54:59 得分 0
楼主这样还不够累的,直接用windows的VEH实现不行?Top
7 楼wangk(倒之)回复于 2006-03-09 12:20:16 得分 5
example:
__asm
{
start :
mov eax,1
mov ebx ,2
mov ecx ,offset start
......
}Top
8 楼AthlonxpX86(一坨屎)回复于 2006-03-10 22:23:59 得分 0
我做木马经常用这种方法,不过你的方法是做的应该这样写
应该这样写
lea eax,int1
move edx,eaxTop
9 楼AthlonxpX86(一坨屎)回复于 2006-03-10 22:27:45 得分 30
语法错误改了,不过windows程序中是不能够用int21之类的东西的。请你注意,这类DOS或者BIOS中断调用只能在16位模式下使用,NT系统是纯32为系统,所以你不要胡来Top
10 楼cdmar79(陈)回复于 2006-03-12 11:53:25 得分 0
TO AthlonxpX86(桃源村)
果然高,我也刚找到用lea的方法可以解决问题,呵呵!谢谢了!
还有,你的int21的建议我是知道的,thx anyway!
能给个联系方式吗?
To all:
很满意,结贴了!Top




