如果給 AL 賦了值, 那麼 AX EAX 也就有了值.
//測試1var
i: integer; {4 字節、32 位}
w: Word; {2 字節、16 位}
b1,b2: byte; {1 字節、 4 位}
begin
i := maxint;
w := 0;
b1 := 0;
b2 := 0;
asm
mov ecx, i
mov w, cx
mov b1, ch
mov b2, cl
end;
ShowMessage(Format('w=%d; b1=%d; b2=%d',[w,b1,b2]));
{結果顯示: w=65535; b1=255; b2=255
果然沒錯, 給 ecx 賦值後, cx ch cl 都有值了!
}
end;
//測試2var
i: integer; {4 字節、32 位}
w: Word; {2 字節、16 位}
b: byte; {1 字節、 4 位}
begin
b := 255;
i := 0;
w := 0;
asm
mov cl, b
mov w, cx
mov i, ecx
end;
ShowMessage(Format('i=%d; w=%d',[i,w]));
{結果顯示: i=255; w=255
這好像是沒有問題的, 我用 al ax eax 三個寄存器測試也是如此;
但用 dl dx edx 測試, 就會有意外的結果, 奇怪呀!
}
end;