The 8086 instructions for performing logical operations are defined in Fig. 3-47. All of the instructions operate bitwise on their operands, which may be one byte or one word in length.
Figure 3-47 Logical instructions.
Name | Mnemonic and Format | Description | ||
---|---|---|---|---|
Not | NOT OPR | (OPR)NOT (OPR) | ||
Or | OR DST,SRC | (DST)(DST) (SRC) | ||
And | AND DST,SRC | (DST)(DST) (SRC) | ||
Exclusive Or | XOR DST,SRC | (DST)(DST) (SRC) | ||
Test | TEST OPR1,OPR2 | OPR1 OPR2; result not put anywhere, only the flags are affected | ||
Flags: NOT does not affect the flags. The other four instructions clear CF and OF, leave AF undetermined, and set SF, Zf, and PF according to the usual rules. | ||||
Addressing modes: The NOT operand cannot be immediate. For the remaining instructions, unless the source operand is immediate, at least one of the operands must be a register. The other operand may have any addressing mode. |
masking operation. Bits are selectively set by applying a logical OR as follows:
Figure 3-48 Example of selectively setting, changing, clearing, and testing bits.
Data related directives, input, and other code
OR DL,00000101B ;SET BITS 2 AND 0 XOR DL,01000010B ;COMPLEMENT BITS 6 AND 1 AND DL,11100111B ;CLEAR BITS 3 AND 4 MOV AL,DL ;DUPLICATE RESULT IN AL NOT AL ;AND BRANCH TEST AL,10000010B ;TO EXIT IF BOTH JZ EXIT ;BITS 7 AND 1 ARE SETOutput and other code |
Figure 3-49 Using bit settings for program control.
Data related directives, input, and other code
NOT AX ;BRANCH TO TEST AX,4002H ;TASK1 IF BITS 14 AND 1 JZ TASK1 ;ARE SET, OR IF TEST AX,280H ;BITS 9 AND 7 JZ TASK1 ;ARE SET NOT AX ;BRANCH TO TASK2 TEST AX,18H ;IF BIT 3 OR BIT 4 JNZ TASK2 ;IS SET TASK3: . ;OTHERWISE, TASK3 . ;IS EXECUTED . TASK1: . . . TASK2: . . .Output and other code |
This is page 38.