速通汇编(三)寄存器及汇编mul、div指令

一,寄存器及标志

  • AH&AL=AX(accumulator):累加寄存器
  • BH&BL=BX(base):基址寄存器
  • CH&CL=CX(count):计数寄存器
  • DH&DL=DX(data):数据寄存器
  • SP(Stack Pointer):堆栈指针寄存器
  • BP(Base Pointer):基址指针寄存器
  • SI(Source Index):源变址寄存器
  • DI(Destination Index):目的变址寄存器
  • IP(Instruction Pointer):指令指针寄存器
  • CS(Code Segment):代码段寄存器
  • DS(Data Segment):数据段寄存器
  • SS (Stack Segment):堆栈段寄存器
  • ES (Extra Segment):附加段寄存器

OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出,溢出时为1

SF sign flag 符号标志 记录运算结果的符号,结果负时为1


ZF zero flag 零标志 运算结果等于0时为1,否则为0

CF carry flag 进位标志 最高有效位产生进位时为1,否则为0
AF auxiliary carry flag 辅助进位标志 运算时,第3位向第4位产生进位时为1,否则为0

PF parity flag 奇偶标志 运算结果操作数位为1的个数为偶数个时为1,否则为0

DF direction flag 方向标志 用于串处理,DF=1时,每次操作后使SI和DI减小,DF=0时则增大

IF interrupt flag 中断标志 IF=1时,允许CPU响应可屏敝中断,否则关闭中断


TF trap flag 陷阱标志 用于调试单步操作


二,mul指令

mul是multiply(乘法)的缩写,即汇编中用于操作乘的指令,但要注意,汇编中的乘法是有一点复杂的,不是简单的把两个数相乘后存起来,mul指令之后只跟一个操作数,但我们知道乘法肯定得要两个操作数,而另一个操作数默认取AL(AX的低位)或者AX

×错误的指令:mul reg1,reg2

✔正确的指令:mul reg

(注:reg指的是寄存器)

两个相乘的数,要求要么都是8位,要么都是16位——

(一)8位乘法

如果是8位,一个乘数默认取AL(即AX的低位)中的值,另一个乘数放在8位寄存器或者内存字节单元中,最终结果存入AX中,下图进行演示

(二)16位乘法

如果是16位,一个乘数默认取AX中的值,另一个乘数放在16位寄存器或者内存字节单元中,最终结果高位存入DX中(乘法结果不足16位的话相当于高位为0),低位存入AX中,下图进行演示

(三)什么情况下用8|16位乘法?

答:由两个乘数来决定,如果两数都小于255(十六进制为FF),使用8位乘法,反之16位


三,div指令

div是divide(除法)的缩写,即汇编中用于操作除的指令,汇编中除法的机制和乘法的机制很类似,也不是简单的把两个数相除后存起来,div指令之后只跟一个操作数,但我们知道除法肯定得要两个操作数,而另一个操作数默认取AX或者DX和AX

×错误的指令:div reg1,reg2

✔正确的指令:div reg

(注:reg指的是寄存器)

两个相除的数,要求除数为8位时,被除数必须为16位;除数为16位时,被除数必须为32位——

(一)16位 除以 8位的除法

当div指令之后的参数为8位除数时,被除数默认取AX中的值

相除得到的商存入AL(AX的低位)中,得到的余数存入AH(AX)的高位中(能整除、没有余数时相当于存放0),下图进行演示

(二)32位 除以 16位的除法

当div指令之后的参数为16位除数时,被除数默认取DX和AX中的值,将DX作为被除数的高16位,AX作为被除数的低16位

相除得到的商存入AX中,得到的余数存入DX(能整除、没有余数时相当于存放0),下图进行演示

(三)什么情况下用16|32位除法?

答:被除数不大于65535(十六进制为FFFF),即ax能完整存放被除数时,使用16位除法,反之32位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/293233.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【IC前端虚拟项目】mvu顶层集成的原则与技巧

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 截止目前,所有的子模块编码均宣告完成,接下来就是封装顶层的时刻了。我自己规划和集成顶层一般有一个习惯,就是在top层下面封装core层和其他模块,比如mvu的top层下例化了mvu_reg和mvu_core两个模块,…

​数据结构—栈操作经典案例

括号匹配&#xff1a; 这是我最开始写的&#xff0c;运行有问题 对于输入的括号序列&#xff0c;建议使用标准的 C 字符串而不是字符数组。 #include<iostream> using namespace std;typedef char SelemType; typedef int Status; #define OK 1 #define MAXSIZE 100 #…

八、组合数据类型(列表、元组、集合、字典)

序列&#xff1a;存储多个值的连续空间&#xff0c;每个值对应一个编号————索引 包括&#xff1a;列表、元组、集合和字典 相加操作 s1"桂林山水" s2山水甲天下 print(s1s2)#直接相加得到新的字符串 print(_____________________________) print((s1s2)*5,sep&…

Zeppelin安装

Zeppelin是一个基于Web的开源数据分析可视化工具&#xff0c;它提供了一个交互式的笔记本界面&#xff0c;用于在大数据环境中进行数据探索、数据分析、数据可视化和协作。Zeppelin的主要特点包括多语言支持、可视化功能、数据共享和协作&#xff0c;以及扩展性。它支持多种编程…

施耐德 Unity Pro PLC 编程软件介绍

Unity Pro 软件基本介绍 Unity Pro 是施耐德中大型 PLC 的编程软件&#xff08;<–> 对应西门子 Step7&#xff09; 支持的 PLC&#xff1a;施耐德中大型 PLC 中型 PLC&#xff1a;Premium、M340&#xff08;<–> 对应西门子 S7-300、S7-1200&#xff09;大型 PL…

Matlab中的脚本和函数

Matlab中的脚本和函数 文章目录 Matlab中的脚本和函数脚本创建脚本代码注释函数创建函数局部函数嵌套函数私有函数匿名函数补充知识函数句柄测试环境:Win11 + Matlab R2021a 脚本 ​ Matlab脚本是最简单的程序文件类型。它们可用于自动执行一系列 Matlab 命令,如命令行重复执…

机器人深度学习IMU和图像数据实现焊接精细操作

在双电极气体保护金属弧焊 &#xff08;DE-GMAW&#xff09; 中&#xff0c;对焊枪和旁路电极位置的精确控制是至关重要的。为了这一过程&#xff0c;科研团队提出了安装微型惯性测量单元&#xff08;IMU&#xff09;传感器和摄像头&#xff0c;来记录焊工控制焊枪的移动和微调…

数据挖掘|贝叶斯分类器及其Python实现

分类分析|贝叶斯分类器及其Python实现 0. 分类分析概述1. Logistics回归模型2. 贝叶斯分类器2.1 贝叶斯定理2.2 朴素贝叶斯分类器2.2.1 高斯朴素贝叶斯分类器2.2.2 多项式朴素贝叶斯分类器 2.3 朴素贝叶斯分类的主要优点2.4 朴素贝叶斯分类的主要缺点 3. 贝叶斯分类器在生产中的…

C语言——内存函数

前言&#xff1a; C语言中除了字符串函数和字符函数外&#xff0c;还有一些函数可以直接对内存进行操作&#xff0c;这些函数被称为内存函数&#xff0c;这些函数与字符串函数都属于<string.h>这个头文件中。 一.memcpy&#xff08;&#xff09;函数 memcpy是C语言中的…

JavaScript(三)---【this指针,函数定义、Call、Apply、函数绑定、闭包】

零.前言 JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】-CSDN博客 JavaScript(二)---【js数组、js对象、this指针】-CSDN博客 0.1全局对象 在JS中有一个全局对象&#xff1a;“window object”&#xff0c;代指的是整个HTML。 一定要慎用全局对…

安卓玩机工具推荐----MTK芯片读写分区 备份分区 恢复分区 制作线刷包 从0开始 工具操作解析【三】

同类博文; 安卓玩机工具推荐----MTK芯片读写分区 备份分区 恢复分区 制作线刷包 工具操作解析 安卓玩机工具推荐----MTK芯片读写分区 备份分区 恢复分区 制作线刷包 工具操作解析【二】-CSDN博客 回顾以往 在以前的博文简单介绍了这款工具的rom制作全程。今天针对这款工具的…

ubuntu23.10配置RUST开发环境

系统版本: gcc版本 下载rustup安装脚本: curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh下载完成后会自动执行 选择默认安装选项 添加cargo安装目录到环境变量 vim ~/.bashrc 默认已添加 使用环境变量立即生效 source ~/.bashrc 执行rust开发环境,在终端输入…

1.java 安装

操作步骤 下载: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html1 通过Xftp将下载下来的jdk上传到指定虚拟机上传到/usr目录下 2 通过Xshell连接到虚拟机&#xff0c;执行如下命令&#xff0c;解压文件&#xff1a; $ tar zxvf jdk-8u…

Python版【植物大战僵尸 +源码】

文章目录 写在前面&#xff1a;功能实现环境要求怎么玩个性化定义项目演示&#xff1a;源码分享Map地图:Menubar.py主菜单 主函数&#xff1a;项目开源地址 写在前面&#xff1a; 今天给大家推荐一个Gtihub开源项目&#xff1a;PythonPlantsVsZombies&#xff0c;翻译成中就是…

LongAdder 和 AtomicLong

有幸看到一篇关于这个讲解 2个类的讲解&#xff0c;自己也归纳总结一下。 一、解析 看源码底层会发现实现机制不一样&#xff0c;当然这个也是必须的 LongAdder 点进去之后会发现&#xff0c;CAS 它是一个CAS的实现类。至于Cell类JVM提供的内置函数 官方说法是&#xff1a;…

Linux简单命令

Linux简单命令 本文是自己学习过程中的一些记录&#xff0c;对于熟悉的部分并未全部列出&#xff0c;仅供参考 内核架构图 一切皆是文件 常用的linux命令 用户的管理 修改密码&#xff1a;passwd 创建一个新用户&#xff1a;useradd 用户名给新用户设置密码&#xff1a;…

UE RPC 外网联机(1)

技术&#xff1a;RPC TCP通信 设计&#xff1a;大厅服务<---TCP--->房间服务<---RPC--->客户端&#xff08;Creator / Participator&#xff09; 1. PlayerController 用于RPC通信控制 2.GameMode 用于数据同步 3.类图 4. 注意 &#xff08;1&#xff09;RPC&a…

AR-Net网络(图像篡改检测)

AR-Net网络 摘要AbstractAR-Net1. 文献摘要2. 研究背景3. 创新点4. AR-Net 网络架构5. 实验6. 结论总结 摘要 AR-Net使用自适应注意力机制来融合位置和通道维度的特征&#xff0c;使网络能够充分利用不同维度的被篡改特征&#xff0c;此外&#xff0c;AR-Net 改进了预测掩模&a…

数字乡村发展蓝图:科技赋能农村实现全面振兴

目录 一、数字乡村发展蓝图的内涵与目标 二、科技赋能农村&#xff1a;数字乡村发展的动力与路径 &#xff08;一&#xff09;加强农业科技创新&#xff0c;提升农业生产效率 &#xff08;二&#xff09;推进农村电商发展&#xff0c;拓宽农民增收渠道 &#xff08;三&…

如何成功找到理想的工作,java不行了吗?我靠这个方法成功拿到大厂10个offer

第一段&#xff1a;引言 作为一名即将毕业的大学生&#xff0c;步入职场是每个毕业生都要面对的现实挑战。随着社会竞争的日益激烈&#xff0c;如何成功找到一份理想的工作成为许多毕业生所关注的焦点。本文将分享一些关于毕业生求职的经验和建议&#xff0c;希望能够帮助毕业生…