LAHF Instruction
The LAHF instruction (load status flags into AH) copies the low byte of the EFLAGS register into AH.
LAHF — Load Register AH from Flags |
Usage: LAHF
|
Flag |
O
|
D
|
I
|
S
|
Z
|
A
|
P
|
C
|
|
Result |
|
|
|
|
|
|
|
|
Copies bits 0-7 of the flags register into AH. This includes flags A, C, P, S, and Z other bits are undefined.
AH := S Z ? A ? P ? C
|
|
Clocks |
|
|
Operands |
286 |
386 |
486 |
Size Bytes |
| |
2 |
2 |
3 |
1 |
|
|
The
EFLAGS register is a 32-bit register. Nine of its bits are shown below. Use this instruction, you can save a copy of the flags in a memory variable or test several flags at once.
EFLAGS Register |
|
Control Flags |
Status Flags |
T |
D |
I |
O |
S |
Z |
A |
P |
C |
|
Trap |
Direction |
Interrupt -enable |
Overflow |
Sign |
Zero |
Auxiliary Carry |
Parity |
Carry |
|
Checking for Zero Bit |
Output |
.code
sub eax, eax
lahf
test ah, 01000000b
jnz L1
mov eax, 0 ; not zero
jmp L2
L1: mov eax, 1 ; zero
L2: call WriteInt
|
|
|
|
†The TEST instruction performs an implied AND operation between each pair of matching bits in two operands and sets the flags accordingly.
|
“I’m not arguing, I’m just explaining why I’m right.”
― Unknown
|