X86 Assembly/Logic

From Wikibooks, open books for an open world
Jump to: navigation, search

Logical instructions[edit]

The instructions on this page deal with bit-wise logical instructions. For more information about bit-wise logic, see Digital Circuits/Logic Operations.


and src, dest GAS Syntax
and dest, src Intel syntax


Performs a bit-wise and of the two operands, and stores the result in dest. For example:

movl $0x1, %edx ; edx ≔ 1
movl $0x0, %ecx ; ecx ≔ 0
andl %edx, %ecx ; ecx ≔ edx ∧ ecx
; here ecx would be 0 because 1 ∧ 0 ⇔ 0


or src, dest GAS Syntax
or dest, src Intel syntax


Performs a bit-wise or of the two operands, and stores the result in dest. For example:

movl $0x1, %edx ; edx ≔ 1
movl $0x0, %ecx ; ecx ≔ 0
orl  %edx, %ecx ; ecx ≔ edx ∨ ecx
; here ecx would be 1 because 1 ∨ 0 ⇔ 1


xor src, dest GAS Syntax
xor dest, src Intel syntax


Performs a bit-wise xor of the two operands, and stores the result in dest. For example:

movl $0x1, %edx ; edx ≔ 1
movl $0x0, %ecx ; ecx ≔ 0
xorl %edx, %ecx ; ecx ≔ edx ⊕ ecx
; here ecx would be 1 because 1 ⊕ 0 ⇔ 1

not arg

Performs a bit-wise inversion of arg. For example:

movl $0x1, %edx ; edx ≔ 1
notl %edx ; edx ≔ ¬edx
; here edx would be 0xFFFFFFFE because a bitwise NOT 0x00000001 = 0xFFFFFFFE