Chapter 9 Writing Machine Language Instructions and Directive Statements

Usage example

Below is an example use of the align directive.

 

 

align.lst Page 1

***

Loc

*** PanaX Series MN1030 Cross Assembler

Object

Line

Source

section

,DATA, PUBLIC, 4

00000000

 

1

_DATA

01

2

TABLE

dc

0x01

00000000

3

 

00000001

02

4

 

dc

0x02

00000002

03

5

 

dc

0x03

 

 

6

 

align

6

align.asm(6) :Warning 2002: Illegal operand value.

0x04

00000008

04

7

 

dc

00000009

05

8

 

dc

0x05

0000000a

06

9

 

dc

0x06

00000010

07

10

 

align

8

11

 

dc

0x07

00000011

08

12

 

dc

0x08

00000020

09

13

 

align

16

14

 

dc

0x09

00000021

0A

15

 

dc

0x0a

 

Errors:

0 Warnings: 1

(align.asm)

 

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.).

Writing Directive Statements 157

Page 169
Image 169
Panasonic MN1030 user manual Below is an example use of the align directive, 00000000, 0x01