VC嵌入汇编问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 21:07:24
#include "stdafx.h"
#include "stdlib.h"
#include "windows.h"
int main(int argc, char* argv[])
{
unsigned char Buf[50];
unsigned char k;
for(int i=0;i<50;i++)
{
Buf[i]=rand()%1000+1;
}
_asm
{
lea esi,Buf
mov cx,51
mov al,[esi]
mov bl,[esi]
loop2:
mov bl,[esi]
dec cx
je loop1
cmp al,bl
inc esi
jg loop2
mov al,bl
jmp loop2
loop1:
mov k,al
}
return 0;
}

jg loop2可是这句死活不跳就像jmp指令
跳毛,我用得就是VC6.0
ja跳jg不跳

跟本不跳你试过没有?
jg根本不跳

拜托……jg是带符号的比较,ja是无符号比较~~~其它不想多说

我说你欠抽

问题 :1 Buf[i]=rand()%1000+1; 很明显有溢出的嫌疑;当得到256就 溢出,也就是说有得正确数据被覆盖;我想不跳就是这原因吧
操 不是 就自己在写一小的测试一下嘛 我日.
2 我测试的 可以跳;
int a;
_asm
{
mov eax,3;
mov edx,7;
cmp edx,eax;
jg loop2 ;
jmp $+8;
loop2:
mov a,edx;
}
cout <<a;

跳啊。VC6测试没问题~

你用OD调试一下你编译后的程序 或者用个 printf 输出最后的值都能知道有没有跳 不知道你会不会调试。