51 MCU learning log-instruction system

3.1 Overview of the command system

3.1.1 Instruction and instruction system

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

3.1.2 Procedure and procedure design

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

3.1.3 Assembly language

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

3.1.4 Pseudo-instructions (commonly used)

			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 Features of MCS-51 command system

		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 addressing mode

(The addressing mode reflects the performance of the computer)

3.2.1 Immediate addressing

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

3.2.2 Direct addressing

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

3.2.3 Register addressing

		1、寻址空间
			R0-R7

A, B, CY, DPTR
2, three instruction forms; eg: MOV A, R3

3.2.4 Register indirect addressing

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

3.2.5 Base register + index register indirect addressing

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

3.2.6 Relative addressing

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

3.2.7 Bit addressing

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

3.3 Introduction to MCS-51 Command System

3.3.1 Data transfer instructions (29 items)

		片内传送 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 Arithmetic operation instructions (24 items)

		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 Logic operation instructions (24 items)

		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 Control transfer instructions (17 items)

		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 Boolean processing instructions (17 items)

		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 exchange group

QQ group: 773080352
Insert picture description here

Guess you like

Origin blog.csdn.net/qq_45396672/article/details/109189859