一个计算机的指令系统便是它能履行的悉数指令的调集。8051的指令系统共有111条指令,由42种助记符和7种寻址方法组合而成。
8051的指令一般包含操作码,和操作数两部分。操作码规则指令进行什么操作,选用助记表明;操作数表明指令的操作目标。
汇编语言指令的基本形式是:操作码助记符 意图操作数,源操作数。
操作码助记符与操作数分隔书写,操作数中意图操作数在前,源操作数在后,操作数之间用逗号分隔。
如指令MOV B,#23H中符号MOV便是操作码助记符,这个助记符的含义为将源操作数传入意图操作数地址中,累加器A是意图操作数,寄存器B是源操作数。
8051的机器语言指令依据长度有一字节、二字节、三字节三种。一字节指令操作码中包含了操作数的信息。如指令INC A便是一条一字节指令,其操作码为00000100B,这个操作码的含义是将累加器的内容加1,请注意这条指令中的A仅仅一个符号,而不是一个操作数,累加器在指令中只要写成ACC时才是一个操作数。编译程序在编译的过程中将ACC编译为累加器的直接地址OEOH。
用指令INC ACC也能够完结将累加器内容加1的功用,但这条指令是两字节指令。
其间,INC是操作码助记符,代表的意思是将后边的操作数地址中的内容加1,ACC是操作数,在指令中作隐含操作数的除了符号A代表累加器外,还有R0到R7代表作业寄存器。
指令MOV A R0的机器码为11101000B,即E8H指令MOV A R1的机器码为11101001B,即E9H指令MOV A R2的机器码为11101010B,即EAH指令MOV A R7的机器码为11101111B,即EFH指令MOV A RN的机器码为E8H-EFH。
两字节指令中操作码,操作数各占一个字节。
三字节指令格局为操作码,操作数。操作数在传送指令中,第一个操作数称为意图操作数,第二个操作数称为源操作数。
三字节指令中操作码占第一个字节,操作数占后两字节,操作数所占两字节,每字节表明一个操作数。
下面咱们看看指令描绘中的符号。
Rn表明当时挑选的8个作业寄存器R0~R7中的一个。在详细编程时要把RN用到R0到R7中的一个替换。
@Ri表明用作直接寻址的作业寄存器,I可取值0或1。表明寄存器直接寻址方法,在详细编程时,符号@RI要用@R0或@R1替换。
Direct表明8位直接地址。用于寻址内部RAM或特别功用寄存器。
#data表明8位当即数。
@data16表明16位当即数。
Addr16表明16位意图地址。只限于LCALL和LJMP指令运用,在编程时,可直接运用地址标号,编译时,再由编译软件主动将该标号转换成16位意图地址。
Addr11表明11位意图地址。只限于ACALL和AJMP运用,在编程时,可直接运用地址标号,编译时,再由编译软件主动将该标号转换成11位意图地址。
Rel表明补码表明的8位偏移量。用于相对搬运指令中,在编程时,可直接运用地址标号,编译时,再由编译软件主动将该标号转换成8位地址偏移量。
/bit表明位地址中的位取反。
来历;21ic