8051单片机指令系统的用法介绍

8051单片机指令系统的用法介绍,第1张

一个计算机指令系统就是它能执行的全部指令的集合。8051的指令系统共有111条指令,由42种助记符和7种寻址方式组合而成。

8051的指令通常包括 *** 作码,和 *** 作数两部分。 *** 作码规定指令进行什么 *** 作,采用助记表示; *** 作数表示指令的 *** 作对象。

汇编语言指令的基本形式是: *** 作码助记符 目的 *** 作数,源 *** 作数。

*** 作码助记符与 *** 作数分开书写, *** 作数中目的 *** 作数在前,源 *** 作数在后, *** 作数之间用逗号分隔。

如指令MOV B,#23H中符号MOV就是 *** 作码助记符,这个助记符的意义为将源 *** 作数传入目的 *** 作数地址中,累加器A是目的 *** 作数,寄存器B是源 *** 作数。

8051单片机指令系统的用法介绍,8051单片机指令系统的用法介绍,第2张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2548374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存