数学运算符
数学运算符实现算术功能,比如加、减、乘和除。这些运算符因运算不同而需要一到两个操作数。结果通常是一个16位的数值。溢出和下溢状态都不被检测。汇编器会检测被0除运算,并会产生出错信息。
| 运算符 | 语法 | 说明 |
| + | + 表达式 | 单项加符号 |
| - | - 表达式 | 单项减符号 |
| + | 表达式 + 表达式 | 加法 |
| - | 表达式 - 表达式 | 减法 |
| * | 表达式 * 表达式 | 乘法 |
| / | 表达式 / 表达式 | 整数除法 |
| MOD | 表达式 MOD 表达式 | 求余 |
| (and) | (表达式) | 标明运算顺序 |
二进制运算符
进制制运算符被用来实现对操作数的二进制数值的补码、移位和位元运算。
| 运算符 | 语法 | 说明 |
| NOT | NOT 表达式 | 逐位求补 |
| SHR | 表达式 SHR 数量 | 向右移位 |
| SHL | 表达式 SHL 数量 | 向左移位 |
| AND | 表达式 AND 表达式 | 位与运算 |
| OR | 表达式 OR 表达式 | 位或运算 |
| XOR | 表达式 XOR 表达式 | 位异或运算 |
关系运算符
关系运算符用来比较两个操作数。比较结果为TRUE或FALSE。FALSE结果的值为0000h,TRUE结果具有一个非零值。
下表列出了关系运算符,并作了简要说明。
| 运算符 | 语法 | 结果 |
| GTE | 表达式1 GTE 表达式2 | 如果表达式1大于或等于表达式2为真 |
| LTE | 表达式1 LTE 表达式2 | 如果表达式1小于或等于表达式2为真 |
| NE | 表达式1 NE 表达式2 | 如果表达式1不等于表达式2为真 |
| EQ | 表达式1 EQ 表达式2 | 如果表达式1等于表达式2为真 |
| LT | 表达式1 LT 表达式2 | 如果表达式1小于表达式2为真 |
| GT | 表达式1 GT 表达式2 | 如果表达式1大于表达式2为真 |
| >= | 表达式1 >= 表达式2 | 如果表达式1大于或等于表达式2为真 |
| <= | 表达式1 <= 表达式2 | 如果表达式1小于或等于表达式2为真 |
| <> | 表达式1 <> 表达式2 | 如果表达式1不等于表达式2为真 |
| = | 表达式1 = 表达式2 | 如果表达式1等于表达式2为真 |
| < | 表达式1 < 表达式2 | 如果表达式1小于表达式2为真 |
| > | 表达式1 > 表达式2 | 如果表达式1大于表达式2为真 |
存储器类型运算符(Class Operators)
存储器类型运算符为表达式分配一个存储器类型。这样我们可以把表达式与存储器类型联系起来。如果我们在一条不支持某存储器类型的指令中给表达式分配了那种类型,Ax51汇编器会产生一条出错信息。比如,我们使用XDATA表达式作为一个直接地址。
下表列出了存储器类型运算符,并给出了简要说明。
| 运算符 | 语法 | 说明 |
| BIT | BIT 表达式 | 分配BIT类型给表达式 |
| CODE | CODE 表达式 | 分配CODE类型给表达式 |
| CONST | CONST 表达式 | 分配CONST类型给表达式 |
| DATA | DATA 表达式 | 分配DATA类型给表达式 |
| EBIT | EBIT 表达式 | 分配EBIT类型给表达式 |
| ECODE | ECODE 表达式 | 分配ECODE类型给表达式 |
| ECONST | ECONST 表达式 | 分配ECONST类型给表达式 |
| EDATA | EDATA 表达式 | 分配EDATA类型给表达式 |
| IDATA | IDATA 表达式 | 分配IDATA类型给表达式 |
| HCONST | HCONST 表达式 | 分配HCONST类型给表达式 |
| HDATA | HDATA 表达式 | 分配HDATA类型给表达式 |
| XDATA | XDATA 表达式 | 分配XDATA类型给表达式 |
未完待续……