汇编语言中x86汇编指令有哪些
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章将为大家详细讲解有关汇编语言中x86汇编指令有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Part 1:instruction积少成多,持续更新。(这
千家信息网最后更新 2025年11月13日汇编语言中x86汇编指令有哪些
这篇文章将为大家详细讲解有关汇编语言中x86汇编指令有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Part 1:instruction
积少成多,持续更新。(这将会是一个极其漫长的过程)
表格中各条指令的顺序根据笔者所认为的重要或常用程度进行排序,仅供参考。
Part 2
本表格中所涉及的F是指状态寄存器,CF指进位标志位,其它以此类推。
2.1 (逻辑)运算、移位等常用指令
这一部分记录汇编语言程序设计当中使用频率最高的一部分指令。
2.1 (逻辑)运算、移位等常用指令
这一部分记录汇编语言程序设计当中使用频率最高的一部分指令。
| 指令 | 作用 | 注意事项 | 示例 |
|---|---|---|---|
| mov dest, src | 传送指令 | 1.dest和src不能同时为存储器操作数 2.CS不能作为dest 3.段寄存器之间不能互相传送 4.立即数不能送入段寄存器 | mov ax,word ptr[bx+si+2] |
| add dest,src | 加法指令 | dest,src不能同时为存储器操作数或段寄存器 | add ax,cx |
| adc dest,src | 带进位加法指令 | dest=dest+src+CF,常用于多字节加法 | |
| inc dest | 加一指令 | 1.此操作不影响CF的状态 | inc byte ptr[si] |
| sub dest,src | 减法指令 | 1.dest,src的要求与add相同 2.触发OF:异号相减且结果的符号为与被减数不同 | sub ax,cx |
| sbb dest,src | 带进位减法 | 常用于多字节减法 | |
| dec dest | 减一指令 | 不影响CF的状态,但其他几个标志位都会受到影响 | dec ax |
| mul dest | 无符号乘法指 | 1.dest为字节数据,则与AL相乘,结果放入AX 2.dest为字数据,与AX相乘结果低16位放入AX,高16位放入DX 3.dest不能是立即数 | mul ax |
| imul dest | 有符号乘法 | 细节与mul完全相同,对最高位的解释不同 | imul ax |
| div dest | 无符号除法 | 1.dest为字节数据,用AX除以dest,商放在AL,余数放在AH 2.dest为字数据,用低16位为AX,高16位为DX的双字数据除以dest,商放在AX,余数放在DX | |
| idiv dest | 带符号除法 | 与无符号完全相同。除法溢出时结果无效 | idiv ax |
| cbw | 扩展AL为AX字数据 | 1.仅用于扩展带符号数,无符号直接清零即可 2.不带操作数 | cbw |
| cwd | 扩展AX字为DX,AX双字数据 | 要求与cbw相同 | cwd |
| seg | 取标号或变量的段地址 | mov di,seg label | |
| lea | 取偏移地址 | 1.与offset作用类似 2.load efficient address的简写 | lea ax,label |
| offset | 取偏移地址 | 1.作用与lea相同 2.速度比lea快 | mov ax,offset label |
| org | 设定程序段起始地址(偏移) | 1.是origin的缩写 2.若无org默认程序从cs:0开始存放指令代码 3.两个org指令之间空余的空间用0填充 | org offsetVal |
| xlat | 转换表指令 | 1.BX存放表的首地址,AL存放当前表中元素的偏移量 2.不影响F的状态 | xlat ;无需操作数 |
2.2 循环移位指令
循环移位指令非常容易混淆,但是却十分重要,因此需要牢牢记住并时常查阅此表。
| 指令 | 作用 | 注意事项 | 示例 |
|---|---|---|---|
| SHL | 逻辑左移指令 | 1.最高位进入CF中 2.最低位直接用0填充 | SHL AH,1 |
| SHR | 逻辑右移指令 | 1.最低位进入CF中 2.最高位直接用0填充 | SHR BX,1 |
| SAL | 算术左移指令 | 行为与SHL没有差别 | SAL BL,CL |
| SAR | 算术右移指令 | 1.最低位进入到CF中 2.最高位右移后填充最高位(即用最高位填充最高位) | SAR CL,BX |
| ROL | 循环左移指令 | 最高位进入到CF中并填充最低位 | 同上 |
| ROR | 循环右移指令 | 最低位进入到CF中并填充最高位 | 同上 |
| RCL | 带进位循环左移指令 | 1.最低位由CF填充 2.最高位进入CF | 同上 |
| RCR | 带进位循环右移指令 | 1.最高位由CF填充 2.最低位进入CF | 同上 |
2.3 数据串操作指令
重复前缀指令与数据串操作指令连用常常能起到事半功倍的效果,注意使用了大大提升汇编程序的简洁性。
| 指令 | 作用 | 注意事项 | 示例 |
|---|---|---|---|
| lods/lodsw/lodsb | 载入数据串指令 | 1.具体操作:从ds:si读取一个字节/字/双字到AL,AX,EAX中,SI根据DF的值进行增减对应的数值 | lodsw ;无需操作数 |
| stos/stosw/stosb | 存数据串指令 | 1.AX/AL的内容存放到ES:DI中 2.指针修改是自动且隐式的 | stos/stosw/stosb ;无需操作数 |
| cmps/cmpsb/cmpsw | 数据串比较指令 | cmps需要两个操作数(数据串首地址),后两个无需操作数,字符串的比较由DI和SI完成 | ;NULL |
| movs/movsb/movsw | 数据串传送指令 | 注意事项参照上方的cmps等的用法 | ;NULL |
| rep/repz/repnz | 重复前缀指令 | 1.当cx的内容不为0时执行操作(先判断) 2.用CLD,STD控制增、减量修改 3.与数据串操作指令结合使用,实现内存拷贝、比较等功能 | 不需要操作数 |
2.4 逻辑运算指令
这一部分指令是以我的理解进行划分,所以可能不太精准,有意见欢迎在评论区提出。
| 指令 | 作用 | 注意事项 | 示例 |
|---|---|---|---|
| cmp dest,src | 1.比较指令 | 1.用dest减去src,但不保存结果 2.相减的结果影响F | cmp ax,cx |
| test dest,src | 1.将dest与src相与 | 可用来测试是否为零等,结果不保存 2.影响F | test ax,ax |
| neg dest | 取补指令,得到相反数 | 影响F | neg ax |
| not dest | 取反指令 | 1.将操作数每一位按位取反 2.不影响F | not AX |
2.5 基于大小关系的跳转指令
在使用了cmp,sub,subb等指令后通常使用如下这些指令衔接以便进行下一步的操作,令程序十分简洁。需要注意的是,根据有符号和无符号数需要选择不同的指令进行基于大小关系的跳转。
| 无符号数 | |
|---|---|
| 指令 | 作用 |
| JA label | 大于时跳转 |
| JAE label | 大于等于时跳转 |
| JB label | 小于时跳转 |
| JBE label | 小于等于时跳转 |
| 带符号数 | |
|---|---|
| 指令 | 作用 |
| JG label | 大于时跳转 |
| JGE label | 大于等于时跳转 |
| JL label | 小于时跳转 |
| JEL label | 小于等于时跳转 |
| 无符号、带符号通用 | |
|---|---|
| JE label | 等于时跳转 |
| JNE label | 不等于时跳转 |
2.6 基于单标志位的转移指令
根据标志寄存器F中标志位的状态决定是否进行跳转,通常在进行运算后结合这些指令进行跳转。
| 指令 | 作用 |
|---|---|
| JC label | CF=1时跳转 |
| JNC label | CF=0时跳转 |
| JZ label | ZF=1时跳转 |
| JNZ label | ZF=0时跳转 |
| JO label | OF=1时跳转 |
| JNO label | OF=0时跳转 |
| JS label | SF=1时跳转 |
| JNS label | SF=0时跳转 |
| JP label | SF=1时跳转 |
| JNP label | PF=0时跳转 |
关于"汇编语言中x86汇编指令有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
指令
数据
最高
操作数
符号
作用
影响
最低
结果
地址
程序
循环
相同
事项
寄存器
注意事项
状态
逻辑
语言
号数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络数据库技术难么
大学生网络安全法ppt
辽宁省计算机网络技术专升本难度
西奥服务器时间怎么看
西门子本地选项找不到服务器
郑州市网络安全报警网
外卖软件开发多少钱
electron连接单机数据库
97视频软件开发
我国网络安全不容乐观
甲磺酸替尼一类新药数据库
金融交易系统软件开发
物联网不能解决网络安全问题
中科方德高可信服务器操作系统
服务器360安全卫士
安徽正规软件开发大概多少钱
恒生电子软件开发电脑
服务器同时开通公网和专线
北京龙商公社互联网科技
IS的软件开发方式
免费数据服务器
1u服务器拆
谁能把国网服务器集采搞清楚
纯科网络技术有限公司
mdf数据库修改工具
qq服务器代理
ebs数据库
甲磺酸替尼一类新药数据库
物联网不能解决网络安全问题
我的世界云端服务器一个月多少钱