Directives

This section covers the directives supported by the simulator. Specifically, the simulator supports the following directives:

DB: Define Byte

This directive allows you to reserve memory space for one byte (8 bits). The receive directive receives two operands. Operand 1 sets the name or identifier assigned to the space. Operand 2 sets the initialization value of the reserved space. This operand can be a numeric value, a character or an array of characters. In the case of a single character, the initial value stored will correspond to the ASCII code of the character encoded in single quotes (''). In the case of an array, the values corresponding to the ASCII codes of those encoded between double quotes (""`) will be encoded. If you want to encode a numeric value explicitly within the array, you must do it using the escape code \x.

Directive Result
DB var1, 0x01 Reserves one byte with an initial value of 0x01
DB char1, '1' Reserves one byte with an initial value of 0x31
DB string, "Hello" Reserves five bytes with values {0x48, 0x65, 0x6C, 0x6C, 0x6F}
DB string, "\x01\x02\x03\x04" Reserves four bytes with values {0x01, 0x02, 0x03, 0x04}

DW: Define Word

This directive allows you to reserve memory space for two bytes (16 bits). The receive directive receives two operands. Operand 1 sets the name or identifier assigned to the space. Operand 2 sets the initialization value of the reserved space. This operand can only be of numeric type.

Directive Result
DW var1, 2048 Reserves two bytes with values {0x80, 0x00}
DW var2, 0x1FFF Reserves two bytes with values {0x1F, 0xFF}

ORG: Advance Program Counter

This directive allows moving the program counter to a given address. The directive contains a single operand that sets the address from which subsequent instructions are to be encoded.

Directive Result
ORG 0x100 The subsequent instructions will be encoded starting from address 0x100

EQU: Define symbolic name

The EQU directive gives a symbolic name or tag to an expression. This tag can be later used in subsequent lines of assembly code and will be substituted by the value given. The directive receives two operands. The first sets the label or symbolic name. The second defines the expression by which occurrences of the label will be replaced in the code. These occurrences will only be evaluated in lines of code following the definition of the label.

Directive Result
EOS EQU 255 Any occurrence of EOS will be sustitued by 255
TMRPRELOAD EQU 0x0003 Any occurrence of TMRPRELOAD will be sustitued by 0x0003