IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 常用汇编指令介绍 -> 正文阅读

[嵌入式]常用汇编指令介绍

一、常用寄存器(64位)

寄存器名称用途
RAX累加寄存器(Accumulator)常用于乘、除法和函数返回值
RBX

基址寄存器

(Base)

常做内存数据的指针,以它为基址来访问内存
RCX计数器寄存器(Counter)常做字符串和循环操作中的计数器
RDX数据寄存器(Data)常用于乘、除法和I/O指针
RSI来源索引寄存器(Source?Index)常做内存数据指针和源字符串指针
RDI目的索引寄存器(Destination?Index)常做内存数据指针和目的字符串指针
RSP堆栈指针寄存器(Stack?Point)只做堆栈的栈顶指针,不能用于算术运算和数据传送
RBP基址指针寄存器(Base?Point)只做堆栈指针,可以访问堆栈内任意地址,经常用于中转ESP中的数据,也常以它为基址来访问堆栈,不能用于算术运算与数据传送
RIP程序指令寄存器(Instruction?Point)指向下一条待执行指令的地址
R8/R9---64位新增加的寄存器,用于函数参数

R10/R11/R12

/R13/R14/R15

---64位新增加的寄存器,用于数据存储
段寄存器标志寄存器

CS:code segment 代码段寄存器

DS:data segment? 数据段寄存器

SS:stack segment 堆栈段寄存器

ES:extra segment 附加段寄存器

ZF:零标志位

PF:奇偶标志位

SF:符号标志位

CF:进位标志位

OF:溢出标志位

//RAX、EAX、AX、AH、AL是同一个寄存器,区别在于表示的范围不一样
//RAX:64位寄存器,EAX:32位寄存器,AX:16位,AH:高8位,AL:低8位
|63..32|31..16|15-8|7-0|        
               |AH.|AL.|
               |AX.....|
       |EAX............|
|RAX...................|

二、数据传送指令

指令名称用法备注
MOV传送指令mov?dest,srcdest = src,传送字或字节

movsx dest,src先符号扩展,再传送
movzx dest,src先零扩展,再传送
PUSH进栈指令push?src把源操作数src压入堆栈
POP出栈指令pop?dest从栈顶弹出字数据到dest
LEA/LDS/LES地址传送指令lea?reg,oprd将操作数oprd的有效地址传送到16位寄存器reg,如lea ax,[si+2]
lds reg,oprd把操作数OPRD存储的32位数据的高16位(段地址)送至DS,低16位(偏移地址)送至16位寄存器REG
les?reg,oprd把操作数OPRD存储的32位数据的高16位(段地址)送至ES,低16位(偏移地址)送至16位寄存器REG

三、算术运算指令

指令名称用法备注
ADD加法指令add?oprd1,oprd2?oprd1 = ?oprd1+oprd2
adc oprd1,oprd2带进位的加法,oprd1 = ?oprd1+oprd2+CF
SUB减法指令sub oprd1,oprd2oprd1 = ?oprd1-oprd2
INC加1操作inc oprdoprd = oprd+1
DEC减1操作dec oprdoprd = oprd-1
NEG取反指令neg oprdoprd = -oprd
CMP比较指令cmp oprd1,oprd2计算oprd1-oprd2,结果不传送给oprd1,根据比较结果进行后续的跳转
MUL乘法指令mul?oprd无符号乘法,将OPRD与AX(16位)或AL(8位)中的操作数相乘,结果保存在DX:AX(高16位+低16位)中或AX(16位)中

imul oprd

有符号乘法,将OPRD与AX(16位)或AL(8位)中的操作数相乘,结果保存在DX:AX(高16位+低16位)中或AX(16位)中

DIV

除法指令div?oprd无符号除法,OPRD为除数,被除数为AX(16位)或AL(8位)中的操作数,结果保存在DX:AX(高16位+低16位)中或AX(16位)中
idiv?oprd有符号除法,OPRD为除数,被除数为AX(16位)或AL(8位)中的操作数,结果保存在DX:AX(高16位+低16位)中或AX(16位)中
CBW/CWB符号扩展指令cbw把寄存器AL中的符号位扩展到寄存器AH(8位)
cwb把寄存器AX中的符号位扩展到寄存器DX(16位)

四、逻辑运算和移位指令

指令名称用法备注
NOT取反运算指令not oprd把操作数oprd按位取反,然后送回oprd
AND与运算指令and oprd1,oprd2oprd1 = oprd1?按位逻辑与?oprd2
OR或运算指令or oprd1,oprd2oprd1 = oprd1?按位逻辑或 oprd2
XOR异或运算指令xor oprd1,oprd2oprd1 = oprd1?按位逻辑异或 oprd2
TEST检验指令test oprd1,oprd2把oprd1与oprd2按位“与”,但结果不送到oprd1中,仅影响标志位。
SAL/SHL左移运算指令sal?oprd,m

算术左移,把操作数oprd左移m位,每移动一位,右边用0补足1位,移出的最高位进入标志位CF

shl oprd,m逻辑左移,把操作数oprd左移m位,每移动一位,右边用0补足1位,移出的最高位进入标志位CF
SAR/SHR右移运算指令sar oprd,m算术右移,操作数右移m位,同时每移1位,左边的符号位保持不变,移出的最低位进入标志位CF
shr oprd,m逻辑左移,操作数右移m位,同时每移1位,左边用0补足,移出的最低位进入标志位CF

五、循环控制和转移指令

指令名称用法备注
LOOP计数循环指令loop?label使ecx的值减1,当ecx的值不为0的时候跳转到label,否则执行loop之后的语句
JMP无条件转移指令

jmp?label

无条件转移到标号为label的位置
CALL过程调用指令

call?label

直接调用label
RET过程返回指令ret调用ret后,会有pop?rip操作,即:rsp弹出一个字的数据,然后作为rip的值,成为函数返回地址
JE条件转移指令je?label等于则转移
JNEjne?label不等于则转移
JB条件转移指令jb label小于则转移
JNBjnb?label不小于则转移
JA条件转移指令ja label大于则转移
JNAjnbe?label不大于则转移
JBE条件转移指令jbe?label小于等于则转移

参考博客:

(4条消息) 汇编指令详解_oucheng_的博客-CSDN博客_汇编指令

汇编指令入门,你应该了解这些指令 - 知乎 (zhihu.com)

操作系统原理:汇编语言的所有指令总结,一篇就够了 - 知乎 (zhihu.com)

(4条消息) 汇编中的标志寄存器_了不起的盖茨比。的博客-CSDN博客_汇编标志寄存器

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:58:04  更:2022-10-08 21:02:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 19:44:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码