This is an incomplete list of the MASM instruction set. I will be adding more instructions as I come across them for work.
Kip Irvine published a great book that I use for reference. The complete instruction set is on page 652.
| Instruction | Description |
|---|---|
| AAA | ascii adjust for addition |
| AAD | ascii adjust for division |
| AAM | ascii adjust for multiplication |
| AAS | ascii adjust for subtraction |
| ADC | Add carry |
| ADD | add |
| AND | logical AND |
| BOUND | check array bounds |
| BSWAP | byte swap. reverses the byte order of a 32-bit destination register |
| CALL | Call a procedure |
| CBW | convert byte to word |
| CDQ | convert doubleword to quadword |
| CLC | clear carry flag |
| CLD | clear direction flag |
| CLI | clear interrupt flag |
| CMC | complement carry flag |
| CMP | compare |
| CMPS | compares two string in memory |
| CWB | convert word to doubleword |
| DAA | decimal adjust for addition |
| DAS | decimal adjust for subtraction |
| DEC | decrement |
| DIV | unsigned integer division |
| IN | inputs a value from a hardware port |
| INC | increment |
| JA | jump if above |
| JA | jump if destination above sour |
| JAE | jump if above or equal |
| JAE | jump if destination above or equal to source |
| JB | jump if below |
| JB | jump if destination below sour |
| JBE | jump if below or equal |
| JBE | jump if destination below or equal to source |
| JC | jump if carry |
| JCXZ | jump if CX equals zero |
| JE | jump if destination equals sour |
| JE | jump if equal |
| JG | jump if greater |
| JG | jump if greater |
| JGE | jump if greater or equal |
| JGE | jump if greater or equal |
| JL | jump if less |
| JL | jump if less |
| JLE | jump if less or equal |
| JLE | jump if less or equal |
| JNA | jump if not above |
| JNAE | jump if not above or equal |
| JNB | jump if not below |
| JNBE | jump if not below or equal |
| JNC | jump if no carry |
| JNE | jump if destination not equal to sour |
| JNE | jump if not equal |
| JNG | jump if not greater |
| JNGE | jump if not greater or equal |
| JNL | jump if not less |
| JNLE | jump of not less than or equal |
| JNO | jump if no overflow |
| JNP | jump if no parity |
| JNS | jump if not sign |
| JNZ | jump if not zero |
| JO | jump if overflow |
| JP | jump if parity |
| JPE | jump if parity equal |
| JPO | jump if parity odd |
| JS | jump if sign |
| JZ | jump if zero |
| LDS | load pointer using DS |
| LES | load pointer using ES |
| LODS | loads an element from a string |
| LOOP | loop |
| LOOPE | loop while equal |
| LOOPNE | loop while not equal |
| MOV | move |
| MOVDW | copies a word |
| MOVSB | copies a byte |
| MOVSD | copies a doubleword |
| MUL | unsigned integer multiply |
| NEG | negate |
| NOP | no operation |
| NOT | logical NOT |
| OR | inclusive OR |
| OUT | outputs a value to a hardware port |
| POP | pop from stack |
| POPA | pop all |
| PUSH | push on stack |
| RCL | rotate carry left |
| RCR | rotate carry right |
| REP | repeat string |
| REPE | repeat while equal |
| REPNE | repeat while not equal |
| RET | return from procedure |
| ROL | rotate left |
| ROR | rotate right |
| SCAS | scans a string for an element |
| SHL | shift left |
| SHR | shift right |
| STC | set carry flag |
| STI | set interrupt flag |
| STOS | stores an element into a string |
| SUB | subtract |
| TEST | test - tests individual bits |
| XCHG | exchange two operands |
| XLAT | translate using table |
| XOR | exclusive or |
© 2025 by Ryan Rickgauer