Chapter 9 Writing Machine Language Instructions and Directive Statements
Writing Directive Statements 157
Usage example
Below is an example use of the align directive.
In the align 6 directive on line 6, the expression value 6 is not a power of 2, so the assembler will convert
it to align 8.
The series of multiples of 8 is shown below. Numbers in parentheses are hexadecimal.
8(8) 16(10) 24(18) 32(20) 40(28) 48(30) 56(38) 64(40)
The location counter value at the line of align 6 is 0003 (hex.), which is between 0000 and 0008 (hex.).
Therefore the next line will start from location 0008 (hex.).
The same series applies to the align 8 on line 10. The location counter there is 000B (hex.), which is
between 0008 and 0010 (hex.). Therefore the next line will start from location 0010 (hex.).
Similarly, the align 16 on line 13 uses the series 16 (10), 32 (20), 48 (30)... The location counter there
is 0012 (hex.), which is between 0010 and 0020 (hex.). Therefore the next line will start from location
0020 (hex.).
align.lst Page 1
*** PanaX Series MN1030 Cross Assembler ***
Loc Object Line Source
1 _DATA section ,DATA, PUBLIC, 4
00000000 2 TABLE
00000000 01 3 dc 0x01
00000001 02 4 dc 0x02
00000002 03 5 dc 0x03
6 align 6
align.asm(6) :Warning 2002: Illegal operand value.
00000008 04 7 dc 0x04
00000009 05 8 dc 0x05
0000000a 06 9 dc 0x06
10 align 8
00000010 07 11 dc 0x07
00000011 08 12 dc 0x08
13 align 16
00000020 09 14 dc 0x09
00000021 0A 15 dc 0x0a
Errors: 0 Warnings: 1 (align.asm)