Dark monochrome line drawing of densely packed circuit traces and chip outlines, evoking low-level hardware

Assembly Language Reference

Instruction sets, addressing modes, flags, and MASM directives for DOS programming.

Assembly Instruction Set

The core of the reference covers the full assembly instruction set for x86 processors, with particular focus on the 8088. Each instruction entry details its operation, affected flags, and encoding where relevant.

Key categories include data movement instructions (MOV, PUSH, POP, XCHG), arithmetic and logic operations (ADD, SUB, AND, OR, XOR), control transfer (JMP, CALL, RET, conditional jumps), and string and I/O instructions.

Effective Address & Clock Cycles

Effective Address (EA) calculations determine the actual memory operand location from the components of an instruction's addressing mode. The reference documents how the 8088 computes EAs from base registers (BX, BP), index registers (SI, DI), and displacements.

Clock cycle tables provide per-instruction timing for the 8088, helping programmers estimate execution speed for performance-critical code paths.

Low Memory Usage

The low-memory region (segment 0000) holds critical system data including the interrupt vector table, BIOS data area, and system ID byte. The reference maps these structures so programmers can inspect or interact with them directly.

Flags Register

Detailed breakdown of the 16-bit FLAGS register: Carry (CF), Parity (PF), Auxiliary Carry (AF), Zero (ZF), Sign (SF), Trap (TF), Interrupt Enable (IF), Direction (DF), and Overflow (OF). Each flag's bit position, meaning, and the instructions that affect it are documented.

System ID Byte

Located at a known low-memory address, the System ID Byte identifies the machine type. The reference lists the values and their corresponding system models, useful for runtime hardware detection in assembly programs.

MASM Pseudo-Ops

Microsoft Macro Assembler (MASM) pseudo-operations are directives that control the assembly process rather than generating machine code. Covered directives include:

  • SEGMENT / ENDS — define logical segments
  • ASSUME — set segment register assumptions
  • PROC / ENDP — define procedures
  • EQU — define symbolic constants
  • DB, DW, DD — define data bytes, words, doublewords
  • MACRO / ENDM — define macros

Operator Precedence

MASM expressions follow a defined operator precedence. The reference table orders operators from highest to lowest priority, covering parentheses, unary operators, multiplicative operators, additive operators, relational tests, and logical operators. Understanding precedence is essential for writing correct assembly-time expressions.

Reserved Words

A complete listing of MASM reserved words — tokens that cannot be used as user-defined identifiers. These include instruction mnemonics, register names, pseudo-op keywords, and predefined symbols. The reference helps programmers avoid naming conflicts in their source code.

This material is part of the Tech Help! electronic reference book for DOS. See the Home page for the full topic index, or browse DOS & BIOS Data Structures for related low-level documentation.