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

174

Chapter 6. Macro Processing Language

 

 

Numbers and Expressions

Balanced text strings appearing in certain places in built-in MPL processor functions are interpreted as numeric expressions:

The argument to evaluate function 'EVAL'

The argument to the flow of control functions 'IF', 'WHILE', 'REPEAT' and 'SUBSTR'.

Expressions are processed as follows:

The text of the numeric expression will be expanded in the ordinary manner of evaluating an argument to a macro function.

The resulting string is evaluated to both a numeric and character representation of the expressions result. The return value is the character representation.

 

The following operators are allowed (shown in order of precedence).

 

1.

Parenthesized Expressions

 

2.

HIGH, LOW

 

3.

*, /, MOD, SHL, SHR

6

4.

EQ, LT, LE, GT, GE, NE

5.

NOT

 

6.

AND, OR, XOR

 

The arithmetic is done using signed 16-bit integers. The result of the relational operators is either 0 (FALSE) or 1 (TRUE).

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

175

 

 

Numbers

Numbers can be specified in hexadecimal (base 16), decimal (base 10), octal (base 8) and binary (base 2). A number without an explicit base is interpreted as decimal, this being the default representation. The first character of a number must always be a digit between 0 and 9. Hexadecimal numbers which do not have a digit as the first character must have a 0 placed in front of them.

Base

Suffix

Valid Characters

Examples

hexadecimal

H,h

0

- 9, A-F (a - f)

1234H 99H 123H 0A0F0H 0FFH

 

 

Hexadecimal numbers must be preceded with a 0, if the first

 

 

digit is in range A to F

 

decimal

D,d

0

- 9

1234 65590D 20d 123

octal

O,o,Q,q

0

- 7

177O 7777o 25O 123o 177777O

binary

B,b

0

- 1

1111B 10011111B 101010101B

 

 

 

 

 

Dollar ($) signs can be placed within the numbers to make them more readable. However a $ sign is not allowed to be the first or last character of a number and will not be interpreted.

1111$0000$1010$0011B

1$2$3$4

is equivalent to is equivalent to

1111000010100011B

1234

Hexadecimal numbers may be also entered using the convention from the C language:

0xFE02

0x1234

6

 

0X5566

0x0A

 

 

 

 

176

Chapter 6. Macro Processing Language

 

 

Character Strings

The MPL processor allows ASCII characters strings in expressions. An expression is permitted to have a string consisting of one or two characters enclosed in single quote characters (').

'A'

evaluates to 0041H

'AB'

evaluates to 4142H

'a'

evaluates to 0061H

'ab'

evaluates to 6162H

''

the null string is not valid!

'abc'

ERROR due to more than two characters

The MPL processor cannot access the assembler's symbol table. The values of labels, SET and EQU symbols are not known during MPL processing. But, the programmer can define macro-time symbols with the MPL processor function 'SET'.

6

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

177

 

 

SET Function

The MPL processor function SET permits you to define macro-time symbols. SET takes two arguments: a valid identifier, and a numeric expression.

The syntax of the SET function is:

%SET (identifier,expression)

SET assigns the value of the numeric expression to the identifier.

The SET function affects the MPL processor symbol table only. Symbols defined by SET can be redefined with a second SET function call, or defined as a macro with DEFINE.

Source text

%SET (CNT, 3) %SET (OFS, 16) MOV R1,#%CNT+%OFS

%SET (OFS, %OFS + 10) OFS = %OFS

Output text

MOV R1,#3+16

OFS = 26

The SET symbol may be used in the expression that defines its own value:

Source text

%SET (CNT, 10)

%' define variable CNT'

6

%SET (OFS, 20)

%' define variable OFS'

% 'change values for CNT and OFS'

 

 

 

 

 

%SET (CNT, %CNT+%OFS)

%' CNT = 30'

 

%SET (OFS, %OFS * 2)

%' OFS = 40'

 

MOV R2,#%CNT + %OFS

%' 70'

 

MOV R5,#%CNT

%' 30'

 

Output text

MOV R2,#30 + 40

MOV R5,#30

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