Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
70
Добавлен:
14.04.2015
Размер:
2.03 Mб
Скачать

Keil Software — A51/AX51/A251 Macro Assembler and Utilities

133

 

 

Address Control

The following directives allow the control of the address location counter or the control of absolute register symbols.

ORG

The ORG directive is used to alter the location counter of the currently active segment and sets a new origin for subsequent statements. The format for the ORG statement is as follows:

ORG expression

 

 

 

where

 

 

 

expression

must be an absolute or simple relocatable expression without

4

 

any forward references. Only absolute addresses or symbol

 

values in the current segment may be used.

 

 

 

 

When an ORG statement is encountered, the assembler calculates the value of the expression and changes the location counter for the current segment. If the ORG statement occurs in an absolute segment, the location counter is assigned the absolute address value. If the ORG statement occurs in a relocatable segment, the location counter is assigned the offset of the specified expression.

The ORG directive changes the location counter but does not produce a new segment. A possible address gap may be introduced in the segment. With absolute segments, the location counter may not reference an address prior to the base address of the segment.

NOTE

The Ax51 assembler is a multi-pass assembler. Symbols are collected and the length of each instruction is determined in the first pass. In the second pass, forward references are resolved and object code is produced. For these reasons, an expression used with the ORG directive may not contain forward references.

Example

ORG 100H

ORG RESTART

Shaded directives and options are available only in AX51 and A251.

134

 

Chapter 4. Assembler Directives

 

 

 

 

 

 

 

 

ORG

EXTI1

 

 

ORG

($ + 16) AND 0FFF0H

 

EVEN (AX51 and A251 only)

The EVEN directive ensures that code or data following EVEN is aligned on a word boundary. The assembler creates a gap of one byte if necessary. The content of the byte gap is undefined. The EVEN directive has the following syntax:

EVEN

Example

 

MYDATA

SEGMENT

DATA WORD

; word alignment

 

 

RSEG

MYDATA

; activate segment

 

var1:

DSB

1

; reserve a byte variable

4

 

EVEN

 

; ensure word alignment

var2:

DSW

1

; reserve a word variable

 

 

 

 

USING

The USING directive specifies which register bank to use for coding the AR0 through AR7 registers. The USING directive is specified as follows:

USING expression

 

where

 

expression

is the register bank number which must be a value between

 

0 and 3.

The USING directive does not generate any code to change the register bank. Your program must make sure the correct register bank is selected. For example, the following code can be used to select register bank 2:

PUSH

PSW

;save PSW/register bank

MOV

PSW,#(2 SHL 3)

;select register bank 2

.

 

 

.

.

;function or subroutine body

.

.

Shaded directives and options are available only in AX51 and A251.

Keil Software — A51/AX51/A251 Macro Assembler and Utilities

135

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

POP

PSW

;restore PSW/register bank

 

The register bank selected by the USING directive is marked in the object file and the memory area required by the register bank is reserved by the Linker/Locator.

The value of AR0 through AR7 is calculated as the absolute address of R0 through R7 in the register bank specified by the USING directive. Some 8051 instruction (i.e. PUSH / POP) allow you to use only absolute register addresses. By default register bank 0 is assigned to the symbols AR0 through AR7.

NOTE

When the EQU directive is used to define a symbol for an ARn register, the address of the register Rn is calculated when the symbol is defined; not when it is used. If the USING directive subsequently changes the register bank, the defined symbol will not have the proper address of the ARn register and the generated code is likely to fail.

 

 

 

 

 

 

4

Example

 

 

 

 

 

 

 

 

 

 

 

 

USING

3

 

 

 

 

 

PUSH

AR2

; Push register

2

in bank

3

 

USING

1

 

 

 

 

 

PUSH

AR2

; Push register

2

in bank

1

 

Shaded directives and options are available only in AX51 and A251.

Соседние файлы в папке HLP