首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 內嵌組合語言教學 (21):Delphi 其他整數類型範圍與組合操作

     編輯:Delphi

除常用 Byte/Word/Cardinal/Integer 外,Delphi 提供 ShortInt/SmallInt/Int64 等整數類型。本文詳細列出各類型位寬、範圍、二進制表示與組合語言操作要點。

類型完整對照

類型位寬有符號最小值最大值組合寄存器
ShortInt8 位是-128127AL / AH
SmallInt16 位是-32,76832,767AX
Integer / LongInt32 位是-2,147,483,6482,147,483,647EAX
Int6464 位是-2^632^63-1EDX:EAX
Byte8 位否0255AL
Word16 位否065,535AX
Cardinal / LongWord32 位否04,294,967,295EAX

二進制極值演示

{ 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;

關鍵在於函數聲明類型決定解讀方式,而非寄存器原始位模式。

組合語言操作建議

  • 8/16 位類型優先使用 AL/AH/AX,避免部分寄存器停滯
  • 32 位有符號/無符號通用 EAX,區別在於指令選擇 (IMUL vs MUL, IDIV vs DIV, JL vs JB 等)
  • 64 位整數需 EDX:EAX 配對,涉及雙寄存器操作 (CDQ, SHLD/SHRD 等)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved