SUB loc16, AX
6-339
SUB loc16, AX Reverse-Subtract Specified Location From AX
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
SUB loc16, AX 0111 010A LLLL LLLL X − 1
Operands loc16 Addressing mode (see Chapter 5)
AX
Accumulator high (AH) or accumulator low (AL) register
Description Subtract the content of the specified AX register (AH or AL) from the 16-bit
content of the location pointed to by the “loc16” addressing mode and store
the result in location pointed to by ”loc16”:
[loc16] = [loc16] − AX;
Flags and
Modes
N
After the subtraction, [loc16] is tested for a negative condition. If bit 15 of
[loc16]
is 1, then the negative flag bit is set; otherwise it is cleared.
Z
After the subtraction, [loc16] is tested for a zero condition. The zero flag bit is
set if the operation generates [loc16] = 0; otherwise it is cleared
C
If the subtraction generates a borrow, C is cleared; otherwise C is set.
V
If an overflow occurs, V is set; otherwise V is not affected. Signed positive
overflow occurs if the result crosses the max positive value (0x7FFF) in the
positive direction. Signed negative overflow occurs if the result crosses the
max negative value (0x8000) in the negative direction.
Repeat This instruction is not repeatable. If this instruction follows the RPT
instruction, it resets the repeat counter (RPTC) and executes only once.
Example
; Subtract the contents of VarA from index register AR0:
MOV AL,@VarA ; Load AL with contents of VarA
SUB @AR0,AL ; AR0 = AR0 − AL
; Subtract the contents of VarB from VarC:
MOV AH,@VarB ; Load AH with contents of VarB
SUB @VarC,AH ; VarC = VarC − AH