访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
A51 3.6.1 数值
内容导读:
数字可以是16进制、10进制、8进制和2进制。数字的最后一个字符标志着数字的基数。(罗亩按:实际上在程序中多标在数字的前面。)没有标明基数的数字被认为是10进制数。

    下表列出了基数的类型、后缀字符和一些例子:

 基数 后缀 合法字符 例子
 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宏汇编器兼容。如果我们不需要把代码导到其它的汇编器,建议在汇编源文件中直接使用替代形式。

标签:
来源: 作者: 时间:2006/9/25 16:50:53
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐