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

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr