組合語言四大邏輯指令 AND/OR/XOR/NOT 與 Delphi 邏輯運算子完全對應,位級運算無分支、極高效率,是位掩碼、標誌位操作、加密演算法的基礎。
| A | B | AND | OR | XOR | NOT A |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 |
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 不存結果)