//對於負數呢?
{下面函數不會有問題, 返回 -1 }function Fun: Integer;
asm
mov eax, -1
end;
{它們能接受的最小負整數分別是: }
function Fun: Integer;
asm
mov al, -256
mov ah, -256
mov ax, -63356
mov eax, -4294967296
end;
{再小於這個數字就會報錯! }
//但它們的返回值缺不能所願, 譬如:{下面函數會返回 0 }
function Fun: Integer;
asm
mov eax, -4294967296
end;
{這個好理解, 函數的 返回值是 Integer; Integer 的最小值是 -2147483648; 怎麼可能放得下 -4294967296? 又被 忽略了.}
//其他情況也大概如此, 現在給 AX 一個絕對放得下的一個值: -1
{竟然返回一個正數: 65535, 為什麼?}function Fun: Integer;
asm
mov ax, -1
end;
{
因為 -1 在 AX 中被存為: 11111111 111111112;
這樣 EAX 的值是: 00000000 00000000 11111111 111111112;
EAX 的最高位只有是 1 才有可 能是個負數, 現在 EAX 中的值就是: 65535
}
//下面兩個函數也是同樣的道理 :{返回 255}
function Fun: Integer;
asm
mov al, -1
end;
{返回 65280}
function Fun: Integer;
asm
mov ah, -1
end;
//其他允許單獨訪問低16位和低8位的32位寄存器, 情況肯定也是如此.