灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:4887回复:0

[系统教程]经典汇编语言教程:4.7.2 数值表达式

楼主#
更多 发布于:2012-09-23 09:17
数值表达式是在汇编过程中能够由汇编程序计算其值的表达式,其组成部分在汇编时就能完全确定。它通常是一些常量的运算组合。
1、常量
常量是一个立即数,直接写在汇编语言语句中,在程序的执行过程中,它不可能发生变化。通常,我们用二进制、八进制、十进制或十六进制来书写常量。
例如:10101011B、324Q、1234D、1234H、0abcdH、'AB'等都是常量。
在程序中,我们还可用伪指令.RADIX来改变数据的基数,在后面再详细讲解。
2、算术运算符
算术运算符包括符号:+(正)、-(负),运算符:+(加)、-(减)、*(乘)、/(除)和MOD(取模)。这些运算符和常量、括号可组成数值表达式。
如:120+(321-90) mod 3,322*5/32,0abcdH+5,-590等
3、关系运算符
关系运算符包括符号:EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于等于)和GE(大于等于)。这些关系运算符和常量、括号也可组成数值表达式。该表达式的计算结果规定如下:
若关系不成立,则该数值表达式的计算结果为0;否则,其结果为0FFFFH。
如:120H LT 100H+3,21HLE 21H等,它们的计算结果分别为:0和0FFFFH。
4、逻辑运算符
逻辑运算符包括按位操作符和移位操作符。具体是:AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、SHL(左移位)和SHR(右移位)。这些逻辑运算符和常量、括号可组成数值表达式。
如:1 SHL 3,47HAND 0FH,NOT 56H等,它们的计算结果分别为:8,7和0A9H。
5、表达式中的其它操作符
汇编语言中,还有其它可在数值表达式中使用的操作符。它们是:
◆、HIGH(高8位)、LOW(低8位)
◆、SEG(段地址)、OFFSET(偏移量)
◆、TYPE(标识符类型)、LENGTH(变量长度)、SIZE(变量容量)
◆、WIDTH(记录/记录字段宽度)、MASK(记录/记录字段的屏蔽位)等
在以上操作符中,只有HIGH和LOW没有介绍过,它们分别是选取表达式计算结果的高8位和低8位。其使用格式如下:
HIGH 表达式 LOW 表达式
如:HIGH (1234H+100H),LOW1234H等,它们的选取结果分别为:13H和34H。
6、运算符和操作符的优先级
在汇编语言中,有许多各种运算符和操作符,它们的优先级按从高到低的排列如下:

优先级:高
LENGTHSIZEWIDTHMASK、()、[]、.(用于结构字段)、<>(用于记录类型)


PTRSEGOFFSETTYPETHIS、:(用于段超越前缀)
*、/、MOD、SHL、SHR
HIGH、LOW
+、-
EQ、NE、LT、LE、GT、GE
NOT
AND
OR、XOR

优先级:低
SHORT
这些符号及其优先级并不要强记它们,有些符号同时出现的可能性非常?

喜欢0 评分0
游客

返回顶部