51单片机学习日志-指令系统

it2023-10-08  63

MCS-51指令系统

3.1 指令系统概述3.1.1 指令与指令系统3.1.2 程序与程序设计3.1.3 汇编语言3.1.4 伪指令(常用)3.1.5 MCS-51 指令系统的特点 3.2 MCS-51寻址方式3.2.1 立即寻址3.2.2 直接寻址3.2.3 寄存器寻址3.2.4 寄存器间接寻址3.2.5 基址寄存器+变址寄存器间接寻址3.2.6 相对寻址3.2.7 位寻址 3.3 MCS-51 指令系统介绍3.3.1 数据传送指令(29条)3.3.2 算术运算指令(24条)3.3.3 逻辑运算指令(24条)3.3.4 控制转移指令(17条)3.3.5 布尔处理类指令(17条)QQ交流群

3.1 指令系统概述

3.1.1 指令与指令系统

每个机器的指令系统都是固有的,无法改变

3.1.2 程序与程序设计

按预定要求编排的指令叫做程序

3.1.3 汇编语言

用助记符,操作数,标号编写的程序叫做汇编 二进制机器码翻译成汇编语言---反汇编 标准格式 1、标号 存放该指令的地址 必须字母开头,:号结尾 2、操作码 由指令系统的助记符组成(如MOV) 操作码和操作数间用,隔开 3、操作数 可以为:数字、操作数地址、立即数、标号、寄存器名 可分目的操作数和源操作数 4、注释 以;开头

3.1.4 伪指令(常用)

1、起点指令 ORG ORG 地址(XXXXH) 给程序起始地址或数据块的起始地址赋值命令,可多次使用,以规定不同程序起始位置; 2、结束命令 END END 汇编程序结束(必有) 3、定义字节命令 DB 标号: DB 字节常数或字符 从指定单元开始,定义若干个8位存储单元 1、若DB命令在其他源程序之后,则源程序的最后一条指令之后就时DB定义的数据表格 2、由ORG定义的数据块首址 4、定义字节命令 DW 标号:DW 字或字表 从指定单元开始,定义若干个字(双字节) 5、 定义空间命令 DS 标号:DS 数据或字符表达式 从指定单元开始,由数据或表达式确定保留若干个字节内存空间备用 6、 等值命令EQU 字符名称 EQU 数据或汇编符号 把一个数据或特定的汇编符号赋予标号段规定的字符名称(类似define)必须先定义后使用 7、数据地址赋值命令 DATA 字符名称 DATA 数据或表达式 此命令把数据地址或代码地址赋予标号段规定的字符名称,可以先使用后定义 8、 位地址符号命令 BIT 字符名称 BIT 位地址 把位地址赋予标号段的字符名称

3.1.5 MCS-51 指令系统的特点

1、布尔处理机 位处理器 布尔运算器ALU 布尔累加器CY 布尔RAM 布尔IO口 布尔指令集 2、寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 基址寄存器加变址寄存器的间接寻址 相对寻址 位寻址 3、指令分类 数据传送(29条) 算术运算(24条) 逻辑运算(24条) 控制转移(17条) 布尔处理(17条) *描述指令的符号意义: Rn R0-R7 8个工作寄存器 Ri R0-1 可做间址寄存器的2个寄存器 direct 8位内部数据存储单元的地址(自己定义) #data 包含在指令中的8位立即数 #data16 包含在指令中的16位立即数 addr16 16位目的地址 addr11 11位目的地址 rel 8位带符号的偏移量 DPTR 数据指针地址,可做16位间址寄存器 bit 内部RAM或专用寄存器的直接寻址位 A 累加器 B 专用寄存器 C 进位或借位标志 @ 间址寄存器或基址寄存器的前缀 / 位操作的前缀,表示取反 (X) X中的内容 ((X)) 由X寻址的单元中的内容 <- 箭头左边的内容被右边的内容代替

3.2 MCS-51寻址方式

(寻址方式反应了计算机的性能)

3.2.1 立即寻址

1、寻址空间 程序存储器 2、指令形式 操作码 + 立即数 (立即数要在前面加#)

3.2.2 直接寻址

1、寻址空间 内部RAM的低128位字节 特殊功能寄存器SFR(直接寻址是唯一访问SFR的方式) 2、指令的三种形式

3.2.3 寄存器寻址

1、寻址空间 R0-R7

A、B、CY、DPTR 2、三种指令形式 ;eg:MOV A ,R3

3.2.4 寄存器间接寻址

1、寻址空间 内部RAM 外部数据存储器 2、指令三种形式 (指令前缀加@)

3.2.5 基址寄存器+变址寄存器间接寻址

1、寻址空间 程序存储器(@A+DPTR,@A+PC) 2、指令形式

3.2.6 相对寻址

1、寻址空间 程序存储器,利用指令修正PC指针的方式实现转移,即以程序计数器PC的内容为基地址,加上程序中的偏移量rel,做地址寻址 2、三种指令形式

3.2.7 位寻址

1、寻址空间 片内RAM 20H-2FH SFR中12个能被8整除的字节地址 2、待填写

3.3 MCS-51 指令系统介绍

3.3.1 数据传送指令(29条)

片内传送 MOV(16条) MOV A , #16H 片外传送 MOVX(4条) 指令寻址方式为寄存器间接寻址,间接寻址寄存器为:Ri,DPTR(Ri为8位,DPTR为16位) 查表传送 MOVC(2条) 两个分别为以PC为基址加变址寻址以及以DPTR为基址加变址寻址 XCH、XCHD、SWAP交换指令(5条) 堆栈操作 PUSH、POP(2条) 进栈:PUSH 出栈:POP

3.3.2 算术运算指令(24条)

1、加法 ADD(4) ADD A,#DATA ADDC(4) 带进位加法(被加数里面加上PSW里面的进位符号CY) INC(5) 增量,相当于X++;只有INC A 影响PSW DA(1) 十进制调整指令 2、减法 SUBB(4) SUBB A ,Rn -> A <- (A) - (Rn) - CY DEC(4) 相当于i-- 3、乘除 MUL 计算结果放在累加器AB中,两个单字节相乘得出双字节 DIV 计算结果放在累加器AB中,A放(A)/(B)的商,B放余数

3.3.3 逻辑运算指令(24条)

1、逻辑运算指令ANL(6条) 长用于给字节中某几位置0 2、逻辑或指令ORL(6条) 长用于给字节中某几位置1 3、逻辑异或XRL(6条) 用于让字节中某几位取反 4、累加器清除与求反指令(2条) CLR 累加器清零 CPL 累加器内容按位取反 5、移位指令(4) RL 内容左循环一圈 RLC 内容+上PSW中CY位循环一圈 RR 内容右循环一圈 RRC 内容+上PSW中CY位循环一圈

3.3.4 控制转移指令(17条)

1、无条件转移指令 长转移 LJMP LJMP + add16 对64k的rom想跳哪里跳哪里 绝对转移 AJMP AJMP + addr11 短转移 SJMP SJMP + rel rel为相对偏移量,原理:PC <- (PC)+2+rel 间接长转移 JMP 把累加器A的8位无符号数与DPTR的16位数相加,其和送入PC,控制程序转移到目的地址,指令不改变A和DPTR的值 2、条件转移指令 JZ rel 累加器不为0则跳转 JNZ rel 累加器不为0则跳转 CJNE A,direct,rel A与直接地址比较,不相等就跳 CJNE Rn,#data,rel A与立即数比较,不相等就跳转 CJNE @Ri,#data,rel 间接RAM与立即数比较,不相等就跳转 CJNE Rn,direct,rel 寄存器与直接地址比较,不相等就跳转 DJNZ Rn,rel 寄存器减一不为0则跳转 DJNZ direct,rel 直接地址内容减一不为0则跳转 3、子程序调用及返回指令 LCALL addr16 长调用子程序,52内部随便跳 ACALL addr11 绝对调用子程序 RET 子程序返回 RETI 中断返回 4、空操作 NOP

3.3.5 布尔处理类指令(17条)

1、布尔传送指令 (直接把单独位送到PSW C位里面) MOV C BIT MOV BIT C 2、布尔状态控制 CLR C 清除进位 CLR BIT 清除BIT位 SETB C 置位进位 SETB BIT 置位BIT位 CPL C C位取反 CPL BIT BIT位取反 3、布尔逻辑运算 ANL C , BIT C 与 BIT ANL C , /BIT C 与 /BIT(/BIT表示对BIT的取反值) ORL C, BIT C 或 BIT ORL C, /BIT C 或 /BIT 4、布尔条件转移 JC rel 进位为1则转移 JNC rel 进位不为1则转移 JB bit rel 直接位为1则转移 JNB bit rel 直接位不为1则转移 JBC bit rel 直接位为1则转移并清除该位

QQ交流群

QQ群:773080352

最新回复(0)