请看如下代码
procedure TForm1.Button1Click(Sender: TObject);
var
packedsize:Integer;
source:pointer;
ReverseTable: array[0..255] of Byte;
iCount:Integer;
begin
for iCount:=0 to 255 do ReverseTable[iCount]:=iCount; asm
PUSH EBX
LEA EBX, ReverseTable
MOV ECX, [PackedSize]
MOV EDX, [Source]
MOV EDX, [EDX]
@@1:
MOV AL, [EDX]
XLAT
MOV [EDX], AL
INC EDX
DEC ECX
JNZ @@1
POP EBX
end;end;原来这段代码在我的计算机(Intel P4,win Xp中文版)上编译没有一点问题,运行也正确,今天突然发现编译通不过,错误信息如下:
[Error] Unit1.pas(43): Invalid combination of opcode and operands不知为何?另外,这断代吗在其他的机器(win2k,winXp,机器的硬件环境与我的计算机几乎一样)上编译没有问题
procedure TForm1.Button1Click(Sender: TObject);
var
packedsize:Integer;
source:pointer;
ReverseTable: array[0..255] of Byte;
iCount:Integer;
begin
for iCount:=0 to 255 do ReverseTable[iCount]:=iCount; asm
PUSH EBX
LEA EBX, ReverseTable
MOV ECX, [PackedSize]
MOV EDX, [Source]
MOV EDX, [EDX]
@@1:
MOV AL, [EDX]
XLAT
MOV [EDX], AL
INC EDX
DEC ECX
JNZ @@1
POP EBX
end;end;原来这段代码在我的计算机(Intel P4,win Xp中文版)上编译没有一点问题,运行也正确,今天突然发现编译通不过,错误信息如下:
[Error] Unit1.pas(43): Invalid combination of opcode and operands不知为何?另外,这断代吗在其他的机器(win2k,winXp,机器的硬件环境与我的计算机几乎一样)上编译没有问题
PUSH EBX
LEA EBX, ReverseTable
MOV ECX, [PackedSize]
MOV EDX, [Source]
MOV EDX, [EDX]
@@1:
MOV AL, [EDX]
XLAT//该行出错,[Error] Unit1.pas(43): Invalid combination of opcode and operands
MOV [EDX], AL
INC EDX
DEC ECX
JNZ @@1
POP EBX
end;