下表列出了基数的类型、后缀字符和一些例子:
| 基数 | 后缀 | 合法字符 | 例子 |
| 16进制 | H, h | 0-9, A-F, a-f | 0x1234 0x99 1234H 0A0F0h 0FFh |
| 10进制 | D, d | 0-9 | 1234 65590d 20d 123 |
| 8进制 | O, o, Q, q | 0-7 | 177o 25q 123o 177777q |
| 2进制 | B, b | 0和1 | 10011111b 101010101b |
数字的第一个字符必须是0到9的一个数字。16进制数,如果第一个字符不是数字,那么应在前面加0。Ax51汇编器也支持写为C语言形式的16进制数。
美元符号($)可以用于数字中,使它的可读性更强,但美元符号不能是数字中的第一个或最后一个字符。数字中的美元符号被汇编器忽略,不会影响数字的值。例如:
1111$0000$1010$0011b 等于 1111000010100011B
1$2$3$4 等于 1234
冒号用于数字中(仅适用于A251)
A251支持页:数字的形式,用来表示绝对地址。当页为0时,这种形式中的数字接收存储器类型EDATA,当页为其它数值时,数字接收的存储器类型为ECODE。使用这种方式,我们可以用这样的数字引用任意存储器地址。例如:
| ABSVAL1 | EQU | 0:20H | ; 寻址20H的符号 |
| ABSVAL2 | EQU | 0:80H | ; 在EDATA空间寻址80H的符号 |
| PORT0 | EQU | S:80H | ; SFR空间80H的符号 |
| ENTRY | EQU | 10:2000H | ; 位于地址102000H的入口点 |
| MOV | WR0, ABSVAL1 | ||
| MOV | R1, ABSVAL2 | ||
| MOV | PORT0, R1 | ||
| EJMP | ENTRY | ||
| MOV | WR0, 0:20H | ; 访问ABSVAL1 | |
| MOV | R1, 0:80H | ; 访问ABSVAL2 | |
| MOV | S:80H, R1 | ||
| EJMP | 10:2000H |
在许多A251控制指令中都可以接受冒号字符,转换情况如下所示。
| 带冒号的数字 | 用下面的形式替换 |
| VAL1 EQU 0:20H | VAL1 EQU EDATA 20H |
| VAL2 EQU 0FF:1000H | VAL2 EQU ECODE 0FF1000H |
| ORG 0FE:2000H | ?模块名?数字 SEGMENT ECODE AT 0FE2000H RSEG ?模块名?数字 |
| ORG 0:400H | ?模块名?数字 SEGMENT EDATA AT 400H RSEG ?模块名?数字 |
| CSEG AT 0FE:2000H | ?模块名?数字 SEGMENT ECODE AT 0FE2000H RSEG ?模块名?数字 |
| BVAR1 BIT 0:20H.1 | BVAR1 BIT 20H.1 |
| BVAR1 BIT 0:30H.1 | BVAR1 EQU EBIT 30H.1 |
| PUSH.B #13 | PUSH BYTE #13 |
| PUSH.W #13 | PUSH WORD #13 |
注意
提供冒号形式是为了与其它的251宏汇编器兼容。如果我们不需要把代码导到其它的汇编器,建议在汇编源文件中直接使用替代形式。
