Arithmetic Instructions are the instructions which perform basic arithmetic operations such as addition, subtraction and a few more. Unlike in 8085 microprocessor, in 8086 microprocessor the destination operand need not be the accumulator.
Following is the table showing the list of arithmetic instructions:
| OPCODE |
OPERAND |
EXPLANATION |
EXAMPLE |
| ADD |
D, S |
D = D + S |
ADD AX, [2050] |
| ADC |
D, S |
D = D + S + prev. carry |
ADC AX, BX |
| SUB |
D, S |
D = D - S |
SUB AX, [SI] |
| SBB |
D, S |
D = D - S - prev. carry |
SBB [2050], 0050 |
| MUL |
8-bit register |
AX = AL * 8-bit reg. |
MUL BH |
| MUL |
16-bit register |
DX AX = AX * 16-bit reg. |
MUL CX |
| IMUL |
8 or 16 bit register |
performs signed multiplication |
IMUL CX |
| DIV |
8-bit register |
AX = AX / 8-bit reg. ; AL = quotient ; AH = remainder |
DIV BL |
| DIV |
16-bit register |
DX AX / 16-bit reg. ; AX = quotient ; DX = remainder |
DIV CX |
| IDIV |
8 or 16 bit register |
performs signed division |
IDIV BL |
| INC |
D |
D = D + 1 |
INC AX |
| DEC |
D |
D = D - 1 |
DEC [2050] |
| CBW |
none |
converts signed byte to word |
CBW |
| CWD |
none |
converts signed byte to double word |
CWD |
| NEG |
D |
D = 2's compliment of D |
NEG AL |
| DAA |
none |
decimal adjust accumulator |
DAA |
| DAS |
none |
decimal adjust accumulator after subtraction |
DAS |
| AAA |
none |
ASCII adjust accumulator after addition |
AAA |
| AAS |
none |
ASCII adjust accumulator after subtraction |
AAS |
| AAM |
none |
ASCII adjust accumulator after multiplication |
AAM |
| AAD |
none |
ASCII adjust accumulator after division |
AAD |
Here D stands for destination and S stands for source.
D and S can either be register, data or memory address.