procedure TMainFrm.Button1Click(Sender: TObject);
var dw1:Cardinal;
c:char;
begin
dw1:= Cardinal(-1);
// dw1:=9;
asm
add dw1,8
push ebx
seta bl
mov c,bl
pop ebx
end;
Memo1.Lines.Add(inttostr(dw1));
Memo1.Lines.Add('');
Memo1.Lines.Add(inttostr(ord(c)));
end;
我用如上代码判断 ,
当 ord(c)为 0 时 ,是有溢出了;
当 ord(c)为 1 时 ,是没有溢出。这个方式是否正确??
还有别的方式判断么??
请指教啊 ,十分感谢 。
var
dw1:cardinal;
yc:boolean;
begin
dw1:=cardinal(-1);
yc:=false;
asm
add dw1,8
jnc @noyc
inc yc
@noyc:
end;
if yc then showmessage('溢出了!');
end;
dw1,dw2:cardinal;
begin
dw1:=cardinal(-1);
dw2:=dw1+8;
if (dw2<8) or (dw2<dw1) then showmessage('溢出了!');
end;
.....
except
on E: Exception do
application.showexception(e);
end;