//下面这个程序为什么build出的debug版可以工作,而release版的一执行就非法操作
//Win98se,VC6
#include <iostream.h>void main()
{
short int a[8];
short int i;
short int x=0,s=0;
for(i=0;i<200;i++)
{
__asm
{
MOV AL,10110000B
OUT 43H,AL
MOV AL,0FFH
OUT 42H,AL
OUT 42H,AL
mov ebx,0
MOV DX,200H
MOV CX,8
LOPDO:
in ax,dx
mov a[ebx*type word],ax
inc ebx
inc ebx
LOOP LOPDO
MOV AL,10000100B
OUT 43H,AL
IN AL,42H
MOV CL,AL
IN AL,42H
MOV CH,AL
MOV AX,0FFFFH
SUB AX,CX
CMP AX,150
JNA GOOD
inc word ptr s
GOOD:
mov x,ax
}
cout<<x<<endl;
}
cout<<s<<endl;
}//谢谢
//Win98se,VC6
#include <iostream.h>void main()
{
short int a[8];
short int i;
short int x=0,s=0;
for(i=0;i<200;i++)
{
__asm
{
MOV AL,10110000B
OUT 43H,AL
MOV AL,0FFH
OUT 42H,AL
OUT 42H,AL
mov ebx,0
MOV DX,200H
MOV CX,8
LOPDO:
in ax,dx
mov a[ebx*type word],ax
inc ebx
inc ebx
LOOP LOPDO
MOV AL,10000100B
OUT 43H,AL
IN AL,42H
MOV CL,AL
IN AL,42H
MOV CH,AL
MOV AX,0FFFFH
SUB AX,CX
CMP AX,150
JNA GOOD
inc word ptr s
GOOD:
mov x,ax
}
cout<<x<<endl;
}
cout<<s<<endl;
}//谢谢
再具体我就说不清楚了,不过你可以看看开优化和不开优化生成的代码哪里不同