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

Delphi 內嵌組合語言教學 (17):邏輯運算指令 AND/OR/XOR/NOT

     編輯:Delphi

組合語言四大邏輯指令 AND/OR/XOR/NOT 與 Delphi 邏輯運算子完全對應,位級運算無分支、極高效率,是位掩碼、標誌位操作、加密演算法的基礎。

真值表速查

ABANDORXORNOT A
000001
010111
100110
111100

指令語法

AND 目標, 源    { 目標 &= 源 }
OR   目標, 源    { 目標 |= 源 }
XOR  目標, 源    { 目標 ^= 源 }
NOT  目標       { 目標 = ~目標 }

代碼演示

var ByteNum: Byte;
begin
  { NOT: 逐位取反 }
  asm
    mov al, 11111111b; not al; mov ByteNum, al  { 0 }
    mov al, 00000001b; not al; mov ByteNum, al  { 254 }
    mov al, 10000000b; not al; mov ByteNum, al  { 127 }
  end;

  { OR: 位或 }
  asm
    mov al, 10101010b  { 170 }
    mov cl, 01010101b  { 85 }
    or al, cl          { 11111111b = 255 }
    mov ByteNum, al
  end;

  { AND: 位與 }
  asm
    mov al, 11111111b; mov cl, 11111111b; and al, cl; mov ByteNum, al  { 255 }
    mov al, 00000000b; mov cl, 00000000b; and al, cl; mov ByteNum, al  { 0 }
    mov al, 11111111b; mov cl, 00000000b; and al, cl; mov ByteNum, al  { 0 }
    mov al, 10101010b; mov cl, 01010101b; and al, cl; mov ByteNum, al  { 0 }
  end;

  { XOR: 異或 }
  asm
    mov al, 11111111b; mov cl, 11111111b; xor al, cl; mov ByteNum, al  { 0 }
    mov al, 11111111b; mov cl, 00000000b; xor al, cl; mov ByteNum, al  { 255 }
    mov al, 10101010b; mov cl, 01010101b; xor al, cl; mov ByteNum, al  { 255 }
  end;
end;

經典應用技巧

  • XOR reg, reg:清零 (最快)
  • AND reg, mask:提取位域 (如 AND EAX, $FF 取低位元組)
  • OR reg, mask:設定位域 (如 OR EAX, $80000000 置符號位)
  • XOR reg, mask:翻轉位域 (如 XOR AL, 32 大小寫切換)
  • TEST reg, mask:檢測位域不修改值 (等價 AND 不存結果)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved