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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 汇编指令合集 -> 正文阅读

[嵌入式]汇编指令合集

指令的分类

51系列单片机共111条指令,常见的分类方式有以下几种。

按寻址方式分为以下7种:

  • 立即寻址。

  • 直接寻址。

  • 寄存器寻址。

  • 寄存器间接寻址。

  • 相对寻址。

  • 变址寻址。

  • 位寻址。

按功能分为以下4种:

  • 数据传送指令。
  • 算术、逻辑运算指令。
  • 控制转移类指令。
  • 位操作指令(布尔指令)。

按字节分类:

  • 单字节指令。
  • 双字节指令。
  • 三字节指令。

指令中常用符号的说明

符号含义
Rn当前寄存器区的8个工作寄存器R0~R7(n=0-7)
Ri可作地址寄存器的2个工作寄存器R0和R1
direct内部数据存储单元的地址及特殊功能寄存器的地址
#data表示8位立即数
#data16表示16位立即数
add16表示16位地址
addrll表示11位地址
rel8位带符号的地址偏移量
bit表示位地址
@间接寻址寄存器或基址寄存器的前缀
( )表示括号中单元的内容
(( ))表示间接寻址的内容

指令系统

数据传送指令

MOV类指令及功能

功能:从源操作数到目的操作数的数据传送。

指令功能
MOV A,Rn将寄存器Rn中的内容送到累加器A
MOV A,direct直接地址中内容送累加器A
MOV A,@RiRi中的间址内容送累加器A
MOV A,#data将立即数送到累加器A
MOV Rn,累加器A中的内容送到寄存器Rn
MOV Rn,direct直接地址中的内容送Rn
MOV Rn,#data立即数送Rn
MOV direct,A累加器A的内容送入直接地址中
MOV direct,Rn寄存器R内容送入直接地址中
MOV direct,direct源操作数直接地址的内容送入目的操作数的直接地址中
MOV direct,@RiRi间址内容送入直接地址中
MOV direct,#data立即数送入直接地址中
MOV @Ri,AA中内容送入Ri间址单元中
MOV @Ri,direct直接地址中内容送入Ri间址单元中
MOV @Ri,#data立即数送入Ri间址单元中
MOV DPTR,direct1616位立即数送入数据指针DPTR中,高8位送入DPH,第8位送入DPL中

MOVC类指令及功能

功能: 这两条指令属于查表指令,可以查找放在程序存储器中的数据表格的内容。

指令功能
MOVC A,@A+PCPC+1→PC,(A+PC)→A
MOVC A,@A+DPTR(A+DPTR)→A

MOVX类指令及其功能

功能:用来与外部数据存储器区传送数据。

指令功能
MOVX A,@DPTRDPTR间址单元内容送入累加器A
MOVX @DPTR,A累加器A中的内容诵读DPTR间址单元
MOVX A,@RiRi间址单元内容送A
MOVX @Ri,AA中内容送Ri间址单元

交换指令机器功能

指令功能
XCH A,Rn?Rn与A内容交换
XCH A,direct直接地址内容与A内容交换
XCH A,@RiRi间址内容与A内容交换
XCHD A,@RiRi间址内容低4位与A中低四位内容交换
SWAP AA中高4位与低4位内容交换

堆栈操作指令及其功能

指令功能
PUSH direct栈顶指针SP+1,然后将直接地址中的内容压入栈
POP direct将堆栈栈顶内容弹出堆栈,栈顶指针SP-1

算术运算指令

ADD类指令

不带进位的加法运算指令。

指令功能
ADD A,RnA与Rn中内容相加后再送到A
ADD A,directA与直接地址中内容相加后再送到A
ADD A,@RiA与Ri间址内容相加后再送到A
ADD A,#dataA与立即数相加后再送到A

ADDC类指令

带进位的加法运算指令。

指令功能
ADDC A,RnA与Rn中内容在进位状态相加后再送到A
ADDC A,directA与直接地址中内容在进位状态相加后再送到A
ADDC A,@RiA与Ri间址内容在进位状态相加后再送到A
ADD A,#dataA与立即数在进位状态相加后再送到A

SUBB类指令

指令功能
SUBB A,RnA减Rn内容和进位标志
SUBB A,directA减直接地址内容和进位标志
SUBB A,@RiA减Ri间址单元内容和进位标志
AUBB A,#dataA减立即数和进位标志

MUL和DIV指令

MUL(乘法)、DIV(除法)

指令功能
MUL ABA与B相乘,高八位存入B,第八位存入A
DIV ABA与B相除,商存入A,余数存入B

INC指令和DEC指令

INC(加1)

指令功能
INC AA+1
INC RnRn中内容加1
INC direct直接地址中内容加1
INC @RiRi间址中内容加1
INC DPTR数据指针加1

DEC(减1)

指令功能
DEC AA-1
DEC RnRn中内容减1
DEC direct直接地址中内容减1
DEC @RiRi间址单元中的内容减1

十进制加法调整指令

功能:将二进制码调整成BCD码

指令功能
DA A将A中二进制调整为BCD码

逻辑运算指令

ANL类指令

功能:将源操作数的内容和目的操作数的内容按位“与”,结果存入目的操作数指定单元。

指令功能
ANL A,RnA和Rn中内容相与后的结果存入A
ANL A,directA和直接地址中内容相与后的结果存入A
ANL A,@RiA和Ri间址内容相与后的结果存入A
ANL A,#dataA和立即数相与后的结果存入A
ANL direct,AA和直接地址中内容相与后的结果存入直接地址
ANL direct,#data直接地址内容和立即数相与后的结果存入直接地址

ORL类指令

功能:将源操作数内容和目的操作数内容按位“或”,结果存入目的操作数指定单元中。

指令功能
ORL A,RnA和Rn中内容相或后的结果存入A
ORL A,directA和直接地址中内容相或后的结果存入A
ORL A,@RiA和Ri间址内容相或后的结果存入A
ORL A,#dataA和立即数相或后的结果存入A
ORL direct,AA和直接地址中内容相或后的结果存入直接地址
OPL direct,#data直接地址内容和立即数相或后的结果存入直接地址

XRL类指令

功能:将两个操作数指定内容按位“异或”,结果存入目的操作数指定单元中。

指令功能
XRL A,RnA和Rn中内容按位异或后的结果存入A
XRL A,directA和直接地址中内容按位异或后的结果存入A
XRL A,@RiA和Ri间址内容按位异或后的结果存入A
XRL A,#dataA和立即数按位异或后的结果存入A
XRL direct,AA和直接地址中内容按位异或后的结果存入直接地址
XPL direct,#data直接地址内容和立即数按位异或后的结果存入直接地址

循环移位指令

功能:将累加器A中的内容循环位移或者和进位位一起移位。

指令功能
RL AA中内容循环左移,执行该指令一次左移一位
RR AA中内容循环右移,执行该指令一次右移一位
RLC AA与进位位CY内容一起循环左移一位
RRC AA与进位位CY内容一起循环右移一位

取反、清0指令

指令功能
CPL A累加器A内容按位取反
CLR A累加器A清0

控制转移类指令

无条件转移指令

指令功能
LJMP add16无条件跳转到add16地址,可在64KB范围内转移,称为长转移指令
AJMP add11无条件转向add11地址,在2KB范围内转移
SJMP rel相对转移,rel是偏移量,8位有符号数,跳转范围-128~127
JMP @A+DPTR散转指令,无条件转向A与DPTR内容相加后形成的新地址

条件转移指令

功能:根据某种特定条件转移的指令,条件满足时转移,条件不满足时则按顺序执行下面的指令。

指令功能
JZ relA=0则转向PC+2+rel→PC;A≠0则顺序执行
JNC relA≠0则转向PC+2+rel→PC;A=0则顺序执行
CJNE A,direct,relA≠(direct),则转向PC+3+rel→PC;当A>(direct),CY=0;当A<(direct),CY=1;当A=(direct),PC+3→PC顺序执行
CJNE A,#data,relA≠data,则转向PC+3+rel→PC;当A>data,CY=0;当A<data,CY=1;当A=data,PC+3→PC顺序执行
CJNE Rn,#data,relRn≠data,则转向PC+3+rel→PC;当Rn>data,CY=0;当Rn<data,CY=1;当Rn=data,PC+3→PC顺序执行
CJNE @Ri,#data,rel(Ri)≠data,则转向PC+3+rel→PC,当(Ri)>data,CY=0,当(Ri)<data,CY=1,当(Ri)=data,PC+3→PC顺序执行
DJNZ Rn,relRn-1→Rn,Rn≠0转向PC+2+rel→PC;Rn=0,PC+2→PC顺序执行
DJNZ direct,rel(direct)≠0转向PC+2+rel→PC;(direct)=0,PC+2→PC顺序执行

调用、返回、空操作指令

指令功能
LCALL addr16调用入口地址为addr16的子程序,可调用64KB范围内的子程序
ACALL addr11调用入口地址为addr11的子程序,可调用2KB范围内的子程序
RET放在子程序最后,是程序返回到主程序断点处
RETI中断返回指令,该指令用于中断服务程序,使中断结束后返回主程序断点处
NOP空操作,执行该指令CPU只进行取指令、译码,不进行其他操作

位操作指令

位数据传送类指令

指令功能
MOV C,bit寻址位的状态送入C
MOV bit,CC的状态送入位地址中

位修正指令

C指累加器C即进位标志CY

指令功能
CLP C累加器清0
CLP bit寻址位清0
CPL C取反
CPL bit寻址位取反
SETB CC置1
SETB bit寻址位置1

位逻辑运算指令

指令功能
ANL C,bit寻址位和C“与”,结果存到C
ANL C,/bit寻址位的“非”和C“与”,结果存到C
ORL C,bit寻址位和C“或”,结果存到C
ORL C,/bit寻址位的“非”和C“或”,结果存到C

位条件转移指令

指令功能
JC relC=1转向PC+2+ rel→PC;C=0顺序执行PC+2→PC
JNC relC=0转向PC+2+rel→PC;C=1顺序执行PC+2→PC
JB bit,rel(bit)=1转向PC+3+rel→PC;(bit)=0顺序执行PC+3→PC
JNB bit,rel(bit)=0转向PC+3+rel→PC;(bit)=1顺序执行PC+3→PC
JBC bit,rel(bit)=1转向PC+3+rel→PC,同时0→(bit);(bit)=0顺序执行PC+3→PC
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:53:39  更:2022-04-07 22:54:59 
 
开发: 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年11日历 -2024/11/26 4:24:01-

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