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

130

Chapter 4. Assembler Directives

 

 

Program Linkage

Program linkage directives allow the separately assembled modules to communicate by permitting inter-module references and the naming of modules.

PUBLIC

The PUBLIC directive lists symbols that may be used in other object modules. The PUBLIC directive makes the specified symbols available in the generated object module. This, in effect, publicizes the names of these symbols. The PUBLIC directive has the following format:

 

PUBLIC symbol

, symbol

4

where

 

symbol

must be a symbol that was defined somewhere within the

 

source file. Forward references to symbol names are

permitted. All symbol names, with the exception of register symbols and segment symbols, may be specified with the PUBLIC directive. Multiple symbols must be separated with a comma (,).

If you want to use public symbols in other source files, the EXTRN or EXTERN directive must be used to specify that the symbols are declared in another object module.

Example

PUBLIC

PUT_CRLF, PUT_STRING, PUT_EOS

PUBLIC

ASCBIN, BINASC

PUBLIC

GETTOKEN, GETNUMBER

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

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

131

 

 

EXTRN / EXTERN

The EXTRN and EXTERN directives list symbols (referenced by the source module) that are actually declared in other modules. The format for the EXTRN and EXTERN directives is as follows:

EXTRN

class

: type

 

(symbol

,

symbol

… )

 

 

EXTERN

class

: type

(symbol

,

symbol

… )

 

 

 

 

 

 

 

 

 

where

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

class

 

is the memory class where the symbol has been defined and

 

 

 

may be one of the following: BIT, CODE,

CONST

,

 

 

 

 

DATA,

EBIT

,

ECONST

,

EDATA

,

ECODE

 

,

HDATA

,

 

 

 

HCONST

 

, IDATA, XDATA, or NUMBER (to specify a

 

 

 

typeless

symbol).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

type

 

is the symbol type of the external symbol and may be one of

 

 

4

 

 

the following: BYTE, WORD, DWORD, NEAR, FAR.

 

symbol

 

is an external symbol name.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

The EXTRN or EXTERN directive may appear anywhere in the source program. Multiple symbols may be separated and included in parentheses following the class and type information.

Symbol names that are specified with the EXTRN / EXTERN directive must have been specified as public symbols with the PUBLIC directive in the source file in which they were declared.

The Linker/Locator resolves all external symbols at link time and verifies that the symbol class and symbol types (specified with the EXTRN / EXTERN and PUBLIC directives) match. Symbols with the class NUMBER match every memory class.

Examples

EXTRN

CODE (PUT_CRLF), DATA (BUFFER)

EXTERN

CODE (BINASC, ASCBIN)

EXTRN

NUMBER (TABLE_SIZE)

EXTERN

CODE:FAR (main)

 

 

 

EXTRN

EDATA:BYTE (VALUE, COUNT)

 

EXTRN

NCONST:DWORD (LIMIT)

 

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

132

Chapter 4. Assembler Directives

 

 

NAME

The NAME directive specifies the name to use for the object module generated for the current program. The filename for the object file is not the object module name. The object module name is embedded within the object file. The format for the NAME directive is as follows:

NAME modulename

where

modulename is the name to use for the object module and can be up to 40 characters long. The modulename must adhere to the rules for symbol names.

If a NAME directive is not present in the source program, the object module name will be the basename of the source file without the extension.

4 NOTE

Only one NAME directive may be specified in a source file.

Example

NAME PARSERMODULE

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

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