除常用 Byte/Word/Cardinal/Integer 外,Delphi 提供 ShortInt/SmallInt/Int64 等整數類型。本文詳細列出各類型位寬、範圍、二進制表示與組合語言操作要點。
| 類型 | 位寬 | 有符號 | 最小值 | 最大值 | 組合寄存器 |
|---|---|---|---|---|---|
| ShortInt | 8 位 | 是 | -128 | 127 | AL / AH |
| SmallInt | 16 位 | 是 | -32,768 | 32,767 | AX |
| Integer / LongInt | 32 位 | 是 | -2,147,483,648 | 2,147,483,647 | EAX |
| Int64 | 64 位 | 是 | -2^63 | 2^63-1 | EDX:EAX |
| Byte | 8 位 | 否 | 0 | 255 | AL |
| Word | 16 位 | 否 | 0 | 65,535 | AX |
| Cardinal / LongWord | 32 位 | 否 | 0 | 4,294,967,295 | EAX |
{ ShortInt: 8 位有符號 }
mov al, 01111111b { 127 最大值 }
mov al, 10000000b { -128 最小值 }
{ SmallInt: 16 位有符號 }
mov ax, 0111111111111111b { 32767 }
mov ax, 1000000000000000b { -32768 }
{ Int64: 64 位,需 EDX:EAX 配對,暫超出當前教學範圍 }
{ 返回 ShortInt 函數 }
function Fun: ShortInt;
asm
mov al, -1 { AL = $FF = 255 (無符號解讀) }
{ 但函數聲明 ShortInt,調用者會符號擴展為 -1 (正確) }
end;
關鍵在於函數聲明類型決定解讀方式,而非寄存器原始位模式。