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

news2024/11/24 19:50:10

一,寄存器及标志

  • 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.coloradmin.cn/o/1559431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3+Vite Nginx部署 跨域

打包项目 webstorm打开项目之后,在Terminal执行打包命令 pnpm run build:prod 复制到Nginx 打包完成之后,生成的包在根目录dist,把dist目录拷贝到Nginx放网站目录下:\nginx-1.25.2\html\divided ,dist改名了divided 修改配置…

力扣---网络延迟时间---迪杰斯特拉,弗洛伊德floyd

首先推荐博客:图论最短路径专题(力扣743、5888)_力扣 最短路径-CSDN博客 迪杰斯特拉算法: 太久没有做图论的题了,,临时抱佛脚。。 这道题可以转化为max{点x到点k的距离}。因为带权图(权值为正…

[超详细]3种方法判断一个数是否为质数(Python)

(发现好多博客对第三种进阶方法说的不明白,至少我是没完全看明白。后面结合自己的理解应该算是弄懂了,供大家参考,欢迎纠正。) 方法一:最暴力,最简单,也最耗时O(n) 思想:由素数的定义&#xf…

arcgis 无法编辑元素的解决办法(无法删除元素或者缺失值替换)

打开“编辑器”中,“开始编辑”即可进行元素编辑,也可进行缺失值替换 (其他方式:选中图层,右击点击开始编辑) 在元素编辑状态下无法删除变量,可以删除元素 元素编辑结束后 点击“编辑器”&…

深入剖析Spring WebFlux:从MethodHandler到反射获取请求信息的源码之旅

文章目录 前言一、获取请求执行的类、方法信息二、获取请求url变量三、获取请求处理数据总结 前言 最近想写一个代办事项后台服务,底层,选型WebFlux。在操作层面上,针对部分操作,想在不侵入业务代码的前提下,记录操作…

使用 Seq2Seq 模型进行文本摘要

目录 引言 1 导入数据集 2 清洗数据集 3 确定允许的最大序列长度 4 选择合理的文本和摘要 5 对文本进行标记 6 删除空文本和摘要 7 构建模型 7.1 编码器 7.2 解码器 8 训练模型 9 测试模型 10 注意 11 整体代码 引言 文本摘要是指在捕捉其本质的同时缩短长文本的…

主从复制与读写分离

前言: 在企业应用中,成熟的业务通常数据量都比较大,单台MySQL在安全性、高可用性和高并发方面 都无法满足实际的需求? 配置多台主从数据库服务器以实现读写分离 目录 一 主从复制的工作原理 ①MySQL的复制类型 ②主从复制过…

Netty组件优化之FastThreadLocal

ThreadLocal:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132995427 Netty中的FastThreadLocal是对Java中的FastThreadLocal的优化主要是为了解决ThreadLocal中线性查找 带来的性能下降同时实现快速查找和赋值 FastThreadLocal构建这里的index代表一个编号,从…

【Web应用技术基础】CSS(4)——背景样式

第1题&#xff1a;背景颜色 .html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>Hello World</title><link rel"stylesheet" href"step1/CSS/style.css"> </head><body>&…

预训练大模型最佳Llama开源社区中文版Llama2

Llama中文社区率先完成了国内首个真正意义上的中文版Llama2-13B大模型&#xff0c;从模型底层实现了Llama2中文能力的大幅优化和提升。毋庸置疑&#xff0c;中文版Llama2一经发布将开启国内大模型新时代。 作为AI领域最强大的开源大模型&#xff0c;Llama2基于2万亿token数据预…

[机器学习]练习闵可斯基距离

闵可斯基距离&#xff08;Minkowski distance&#xff09;是一种用于衡量向量空间中两点之间距离的方法。它是曼哈顿距离和欧几里得距离的一般化形式。闵可斯基距离使用一个参数 p 来调整计算方法&#xff0c;其中 p 是一个大于 0 的实数值。 在二维空间中&#xff0c;闵可斯基…

二. CUDA编程入门-Stream与Event

目录 前言0. 简述1. 执行一下我们的第九个CUDA程序2. Stream是什么3. Streams实验(单流vs多流)4. 如何隐藏延迟(memory)5. 如何隐藏延迟(kernel)6. 如何隐藏延迟(kernelmemory)7. 代码分析总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记…

HWOD:提取不重复的整数

一、题目 1、描述 输入一个int型整数&#xff0c;按照从右向左的阅读顺序&#xff0c;返回一个不含重复数字的新的数字。保证输入的整数最后一位不是0 2、数据范围 1< n <10^8&#xff1b; 3、输入 输入一个int型整数 4、输出 按照从右向左的阅读顺序&#xff0c…

vue3 视频播放功能整体复盘梳理

回顾工作中对视频的处理&#xff0c;让工作中处理的问题的经验固化成成果&#xff0c;不仅仅是完成任务&#xff0c;还能解答任务的知识点。 遇到的问题 1、如何隐藏下载按钮&#xff1f; video 标签中的controlslist属性是可以用来控制播放器上空间的显示&#xff0c;在原来默…

文件上传失败原因分析与解决

图片文件上传失败 问题描述&#xff1a;在前端开发时&#xff0c;需要通过表单元素上传图片或其他文本&#xff0c;但是上传不成功&#xff0c;后端接口也没问题 html <!--onChange用来绑定数据 handleUpload用来提交数据--><form onSubmit{handleUpload}><…

比KMP简单的Manacher

P3805 【模板】manacher - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) “没时间悼念KMP了&#xff0c;接下来上场的是Manacher&#xff01;” 什么是Manacher? 历史背景&#xff1a; 1975 年&#xff0c;一个叫 Manacher 的人发明了这个算法&#xff0c;所以叫Manacher 算…

npm镜像源证书过期问题解决

title: npm镜像源证书过期 search: 2024-02-29 文章目录 Failed to check for updates 问题ERR_PNPM_NO_PKG_MANIFESTnpm缓存清除指令权限不足导致删除不了解决方案npm创建基础配资文件 Failed to check for updates 问题 错误描述如上 检查完 node,vue,npm 的版本后都没啥问…

瑞吉外卖实战学习--8、人员禁用和启用

前言 1、通过前端页面查看接口 会发现请求方式是put 请求接口是employee 2、检查页面传值 根据浏览器的请求可以看到传值为id和status 2、写put请求&#xff0c;添加修改时间和修改人的id然后传回给后台 /*** 启用和禁用员工账号* param request* param employee* return…

Linux:ip协议

文章目录 ip协议基本认识ip协议的报头 ip协议基本认识 前面对于TCP的内容已经基本结束了&#xff0c;那么这也就意味着在传输层也已经结束了&#xff0c;那么下一步要进入的是的是网络层&#xff0c;网络层中也有很多种协议&#xff0c;这里主要进行解析的是ip协议 前面的TCP…

【应用笔记】LAT1413+快速开关蓝牙导致设备无广播

1. 问题背景 客户使用 BlueNRG-345MC 开发了一个 BLE 外设&#xff0c;和手机连接。在测试中发现&#xff0c;手机连接上外设之后&#xff0c;不断地在手机上点击蓝牙的开关按钮&#xff0c;造成设备不断地断开、重连&#xff1b;少则几次&#xff0c;多则几十次。点击之后&am…