当前位置: 首页 > news >正文

汇编运算符和表达式

运算符:

汇编语言由表达式和运算符组成,运算符分为数值运算符和属性运算符。属性运算符面向变量或标号。

数值运算符:

算术运算符:

运算符类型
+( 正号 ) -( 负号 )
+( ) -( ) *( ) /( ) MOD( 取模 )
算术运算符与 立即数 常量 括号 等构成数值表达式。
变量 不能参与算术运算构成 数值表达式

关系运算符:

运算符类型
EQ( 等于 ) NE( 不等 ) LT( 小于 ) GT( 大于 ) LE( 小于等
) GE( 大于等于 )
可与 立即数 常量 变量 括号 等构成数值表达式。
关系运算只能有 0 (假) 0FFH (真) 两个返回值。
返回值以二进制补码形式表示,位数由目的操作数决定;

逻辑运算符:

运算符类型
AND( ) OR( ) NOT( ) XOR( 异或 )
SHL( 左移 ) SHR( 右移 )
逻辑运算符可与 立即数 常量 括号 等构成数值表达式。
变量 不能参与逻辑运算。

属性运算符:

段属性操作符SEG

格式: SEG <标识符>
功能
返回标识符所在段的段地址;
例如:
MOV AX , SEG NEXT
MOV BX , SEG DATA
若存储器如上所示,则以上指令执行后
(AX) = 1000H (BX) = 2000H

偏移量属性操作符OFFSET

格式:
OFFSET < 标识符 >
功能
返回该标识符的段内偏移地址;
例如:数据段定义如下:
X1     DW    12H , 100H
X2     DD     0
X3    DB     ? , ‘A’
若执行指令: MOV AX , OFFSET X1
MOV BX , OFFSET X3
(AX) = 0000H (BX) = 0008H

类型操作符TYPE:

格式
TYPE < 标识符 >
功能
返回变量和标号的类型值;
类型值
变量:每个变量所占的字节数;
标号:标号的 NEAR FAR 类型;

长度属性操作符LENGTHOF:

格式
LENGTHOF < 变量名 >
只能应用于变量;
功能
返回 变量 所定义的数据个数;
例如
变量定义为: ARRAY1 DW 2 DUP(0,1) , 1
则指令 MOV AL , LENGTHOF ARRAY1 后, (AL)=5 ;

容量属性操作符SIZEOF:

格式:
SIZEOF < 变量名 >
只能应用于变量;
功能:
返回 变量 的所占存储单元的数目;(一个字节为一个存储单元);

运算符的优先顺序:

表达式:

数值表达式:

由立即数、常量、字符或字符串与数值运算符构成;

由变量、标号与属性操作符构成;

由两个符号地址相减构成两者间的距离表达式。

地址表达式:

由变量、标号、运算符、地址计数器$构成;

地址计数器引用符号$:

格式:¥[+-Imm]

其值表示当前偏移量计数器的值+-Imm的立即数;

相关文章:

  • 如何将Mysql数据库的表导出并导入到另外的架构
  • 单例模式python实现
  • Linux CentOS 8(firewalld的配置与管理)
  • vue如何使用路由拦截器
  • centos格式化硬盘/u盘的分区为NTFS格式
  • 【Linux】虚拟机安装Linux、客户端工具,MobaXterm的使用,Linux常用命令
  • centos7 install postgres-15
  • Day13力扣打卡
  • 如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?
  • 2023-10-21 美团2024秋招后端开发岗笔试题
  • 前端跨域相关
  • C语言重点突破(四)自定义类型详解
  • 泛积木-低代码 使用攻略
  • 如何在VScode中让printf输出中文
  • RSA:基于小加密指数的攻击方式与思维技巧
  • angular2 简述
  • codis proxy处理流程
  • download使用浅析
  • leetcode386. Lexicographical Numbers
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Python 反序列化安全问题(二)
  • Redux系列x:源码分析
  • Spark RDD学习: aggregate函数
  • 阿里云购买磁盘后挂载
  • 产品三维模型在线预览
  • 动态规划入门(以爬楼梯为例)
  • 对象引论
  • 技术胖1-4季视频复习— (看视频笔记)
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 区块链共识机制优缺点对比都是什么
  • 为什么要用IPython/Jupyter?
  • 一道面试题引发的“血案”
  • 阿里云API、SDK和CLI应用实践方案
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (2.2w字)前端单元测试之Jest详解篇
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (二)c52学习之旅-简单了解单片机
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core使用ef 6
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net打印*三角形
  • .NET分布式缓存Memcached从入门到实战
  • .net和php怎么连接,php和apache之间如何连接
  • .NET委托:一个关于C#的睡前故事
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @RequestBody的使用
  • @RequestMapping处理请求异常
  • @我的前任是个极品 微博分析
  • [ C++ ] STL---仿函数与priority_queue
  • [04]Web前端进阶—JS伪数组
  • [14]内置对象