80x86常用指令总结

2024-04-20 20:48
文章标签 总结 指令 常用 80x86

本文主要是介绍80x86常用指令总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.    数据传送指令
MOVMOVSXMOVZX
不能直接在存储器之间,段寄存器之间传送数据,必须通过通用寄存器。目的操作数不能是立即数寻址。指令不影响标志位。
PUSHPOP
操作数可以是立即数、存储器、寄存器中的任何一种寻址方式,但是POP指令不能是CS寄存器。不影响标志位。

2.         地址传送指令
LEA
将原操作数的有效地址送到目的寄存器。
LDSLESLFSLGSLSS
原操作数一定是存器寻址方式,存储器指定的第一个字的内容送到寄存器,第二个字的内容送到指令中指定的段寄存器。

3.         标志寄存器传送指令
LAHFSAHFPUSHFPOPFPUSHDPOPD

4.         类型转换指令
CBWCWDCDQBSWAP

5.         算术指令
ADDADC
无符号数加法,向最高有效位进位CF=1
带符号数加法,操作数符号相同,结果相反,溢出OF=1
SUBSUBB
无符号数减法,向最高有效位借位CF=1
带符号数减法,操作数符号相反,结果和减数符号一样,溢出OF=1

INCDECNEG
不影响标志位

       MULIMUL
只影响OFCF标志位
无符号数的乘法,如果结果的高一半是0,那么CF=OF=0
带符号数的乘法,如果乘积的高一半是低一半的符号扩展,那么CF=OF=0

       DIVIDIV
不影响任何标志位。

       DAADAS
压缩BCD码十进制调整指令,AL4位是十六进制A~F,则CF=1AF=1,并且OF无定义。

       AAAAAS
非压缩BCD码十进制调整指令,同样只影响AFCF标志位,其余和压缩BCD码类似。

6.         逻辑运算指令
ANDORNOTXORTEST
指令的操作数位长必须一致,目的操作数不能为立即数寻址,NOT指令不允许使用立即数寻址,并且它不影响标志位。其余的指令,CF=OF=0AF无定义,SFZFPF根据计算结果设定。

7.         位测试修改指令
BTBTSBTRBTC
影响CF状态标志

8.         位扫描指令
BSFBSR
影响ZF状态标志

9.         位移指令
SHLSALSHRSARROLRORRCLRCRSHLDSHRD
逻辑左右移移出位补0,最后移出的为送CF。算术左移和逻辑左移一样,算术右移,移出位补符号。

10.     串处理指令
MOVSCMPSSCASLODSSTOSINSOUTS
通常串处理指令同REPREPZREPNZREPEREPNE连用。

11.     控制转移指令
无条件跳转指令JMP,分为段内短跳转(8位位移量),段内近跳转(16或者32位位移量)和段间远跳转。
条件跳转指令,状态标志作为测试条件。

12.     条件设置指令
SETZSETNZZETSSETNSSETOSETNOSETPSETNPSETCSETNC。根据状态标志位,来设置目的字节操作数的值。
SETBSETNBSETBESETNBE。根据无符号数的比较结果设置目的字节操作数。
SETLSETNLSETLESETNLE。根据无符号数的比较结果设置目的字节操作数。

13.     循环指令
LOOPLOOPZLOOPNZ
通过测试ZFCLCXECX来决定是否结束循环。

14.     标志位相关指令
CLCCMCSTCCLDSTDCLISTI

15.     其他指令
CALLRETINTINTOIRETIRETD

这篇关于80x86常用指令总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/921285

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1