首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi not运算的基础有关问题

2012-06-05 
delphi not运算的基础问题代码如下proceduretestvari:Bytebegini:0我在此处下断点i:notiend断点执

delphi not运算的基础问题
代码如下
procedure   test;
var
    i:Byte;
begin
    i:=0;   我在此处下断点
    i:=not   i;
end;

断点执行后   反汇编
此时ebp   为   0018F534
Unit1.pas.69:   I:=0;
00520654   C645FF00                   mov   byte   ptr   [ebp-$01],$00                               ------           i的地址是[ebp-$01]

堆栈为
0018F534   44   00   4A   97
0018F530   C8   77   08   69

单步执行后   反汇编
此时ebp   为   0018F534  
Unit1.pas.70:   i:=not   i;
00520658   F655FF                       not   byte   ptr   [ebp-$01]

堆栈为
0018F534   44   00   4A   97
0018F530   C8   77   08   69


单步执行后   反汇编
此时ebp   为   0018F534  
Unit1.pas.72:   end;
0052065B   59                               pop   ecx

堆栈为
0018F534   44   FF   4A   97     问题在这   44后面的位置   那个位置应该是[ebp+01],而实际i的地址是[ebp-$01]  
0018F530   C8   77   08   69

可能我表达的有问题
其实就是想知道内存区域的变化
我以前是学win32汇编的   来搞搞delphi   呵呵




[解决办法]

引用
此时ebp 为 0018F534

热点排行