2^8=256 2^16=65536(64k)
- 指令编码格式及分类
- 寻址方式
- 数据传送类指令
- 算术运算类指令
- 逻辑运算类指令
- 控制程序转移类指令
- 位操作类指令
指令编码格式
一条指令表示计算机所完成的某种操作
有操作码和操作数两部分组成
例如: MOV A,R1
本系统有三种指令编码格式:
- 单字节指令(49条)
- 双字节指令(46条)
- 三字节指令(16条)
例如:
- 一字节指令空操作NOP的编码格式为:
00000000 <--操作码
数据传送指令MOV A,R1的编码格式为:
11101001
- 两字节指令MOV A,#40H的编码格式为
011100100 <--操作码
01000000<--立即数40H
指令分类
按指令功能分为
- 数据传送类指令 29条
- 算术运算类指令 24条
- 逻辑运算类指令 24条
- 控制转移类指令 17条
- 位操作指令 17条
上述111条指令中,64条执行时间为1个机器周期,45条位两个机器周期,只有乘除指令为四个机器周期。
当主频为12MHz时,典型指令执行时间为1微秒
寻址方式
寻址方式是指操作数存放存储单位地址的表示形式
MCS-51指令系统共提供七种寻址方式
1.立即寻址
该方式把操作数(即立即数)包含在指令字节中。
在指令格式中,在立即数前冠以符号“#”表示立即寻址方式
例如: MOV A,#40H; A<--40H
MOV DDTR,#1000H;DDTR<--1000H
2.直接寻址
该方式是把操作数的地址包含在指令字节中,而操作数本身则存放在该地址指示的数据存储单元中
在指令格式中,操作数的地址直接写在指令中
如: MOV A,40H;A<--(40H)
设:(40H)=2BH
3.寄存器寻址方式
该方式把操作数存放在指定的寄存器中。能实现这种寻址方式的寄存器:R0-R7,A,B,DPTR
例如: MOV A,#30H;A<--30H
A:立即寻址 #30H:寄存器存址
MOV R0,R7;R0<--(R7)
RO,R7:寄存器寻址
4.寄存器间接寻址方式
该方式是把操作数的所在地址存放在指定的寄存器中
能实现这种寻址方式的寄存器:R0,R1,DPTR.
在指令格式中,在寄存器前面冠以符号“@”表示。
例如:MOV A,@R0;1<--((R0))
A:寄存器寻址 @R0:寄存器间接寻址
设:(R0)=40H (40H)=3FH
执行前:(R0)=40H (40H)=3FH
执行后:(R0)=40H (40H)=3FH (A)=3FH
5.基址加变址寻址方式
该方式把DPTR或PC寄存器作为基址寄存器,累加器A作为变址寄存器,(A)+(PC)或(A)+(DPTR)的和作为操作数的16位地址
这种寻址方式的指令只有三种:
MOVC A,@A+DPTR ; A<--((A)+(DPTR))
MOVC A,@A+PC; A<--((A)+(PC))
JMP @A+DPTR;跳转至(A)+(DPTR)
前两条是程序存储器读指令,用MOVC助记符。