知方号

知方号

51单片机原理以及接口技术(三)<单片机中rel怎么算>

51单片机原理以及接口技术(三)

80C51单片机的指令系统详解 3.1 指令格式及常用符号3.1.1 机器指令的编码格式3.1.2 符号指令的格式3.13 符号指令及其注释中常用的符号及含义如下所示: 3.2 80C51 的寻址方式3.2.1 寄存器寻址3.2.2 直接寻址3.2.3 寄存器间接寻址3.2.4 立即寻址3.2.5 变址寻址3.2.6 相对寻址3.2.7 位寻址 3.3 数据传送类指令(29 条)3.3.1 一般传送指令一、16 位传送二、8 位传送 3.3.2 特殊传送指令一、ROM 查表二、读写片外 RAM三、堆栈操作四、数据交换 3.4 算术运算类指令(24 条)3.4.1 加法一、不带进位加法二、带进位加法三、增 1四、十进制调整 3.4.2 减法一、带借位减法二、减 1 3.4.3 乘法3.4.4 除法 3.5 逻辑运算与循环类指令(24 条)3.5.1 逻辑与3.5.2 逻辑或3.5.3 逻辑异或3.5.4 累加器清 0 和取反3.5.5 累加器循环移位 3.6 控制转移类指令(17 条)3.6.1 无条件转移一、短跳转二、长跳转三、相对转移四、散转移 3.6.2 条件转移一、累加器判 0 转移二、比较不相等转移三、减 1 不为 0 转移 3.6.3 调用与返回一、调用二、返回 3.6.4 空操作 3.7 位操作类指令(17 条)3.7.1 位传送3.7.2 位状态设置一、位清 0二、位置位 3.7.3 位逻辑运算一、位逻辑“与”二、位逻辑“或”三、位取反 3.7.4 位判跳(条件转移)一、判 CY 转移二、判 bit 转移 本 章 小 结思考题及习题

指令是CPU按照人们的意图来完成某种操作的命令。一台计算机的CPU所能执行全部指令的集合称为这个CPU的指令系统。指令系统功能的强弱决定了计算机性能的高低。 80C51单片机具有111条指令,其指令系统的特点为: (1)执行时间短。1个机器周期指令有64条,2个机器周期指令有45条,而4个机器周期指令仅有2条(即乘法和除法指令); (2)指令编码字节少。单字节的指令有49条,双字节的指令有45条,三字节的指令仅有17条; (3)位操作指令丰富。这是80C51单片机面向控制特点的重要保证。

点击此处访问小编的个人小站   大部分学单片机就是从C语言开始的,但是汇编语言还是需要了解的。只有了解了汇编语言之后你才能进阶,才能成为真正的大神。这一节看完后你就会明白C语言是如何转换成汇编的。

3.1 指令格式及常用符号

  计算机能直接识别和执行的指令是二进制编码指令,称为机器指令。机器指令不便于记忆和阅读。 为了编写程序的方便,人们采用了有一定含义的符号(助记符)来表示机器指令,从而形成了所谓的符号指令。由于符号指令是机器指令的符号表示, 所以它与机器指令有一一对应的关系。符号指令转换成机器指令后,单片机才能识别和执行。

3.1.1 机器指令的编码格式

  机器指令通常由操作码和操作数(或操作数地址)两部分构成。操作码用来规定指令执行的操作功能,如加、减、比较、移位等 ;操作数是指参与操作 的数据(在指令编码中通常给出该数据的不同寻找方法)。 80C51 的机器指令按指令字节数分为三种格式:单字节指令、双字节指令和三字节指令。   一、单字节指令   单字节指令有两种编码格式:

  1.8 位编码仅为操作码   这种指令的 8 位编码仅为操作码,指令的操作数隐含在其中。例如: INC A   该指令的编码为 0000 0100B,其十六进制表示为 04H,累加器 A 隐含在操作码中。指令的功能是累加器 A 的内容加 1。 注意:在指令中用“A”表示累加器,而用“ACC”表示累加器对应的地址(E0H)。

  2.8 位编码含有操作码和寄存器编码   这种指令的高 5 位为操作码,低 3 位为存放操作数的寄存器编码。如指令MOV A,R0 的编码为 1110 1000B,其十六进制表示为 E8H(低 3 位 000 为寄存器 R0 的编码)。该指令的功能是将当前工作寄存器 R0 中的数据传送到累加器 A 中。

  二、双字节指令   这类指令的第一个字节表示操作码,第二个字节表示参与操作的数据或数据存放的地址。如数据传送指令 MOV A,#50H 的两字节编码为 0111 0100B,0101 0000B。其十六进制表示为 74H,50H。该指令的功能是将立即数“50H” 传送到累加器 A 中。

三、三字节指令   这类指令的**第一个字节表示该指令的操作码,后两个字节表示参与操作的 数据或数据存放的地址。**例如数据传送指令 MOV 20H,#50H 的三个字节编码为0111 0101B,0010 0000B,0101 0000B。其十六进制表示为 75H,20H,50H。该指令的功能是将立即数“50H”传送到内部 RAM 的 20H 单元中。

比如一个数10,把他存入内存中,高级语法是int i=10;这个10存入内存之前叫做立即数,放入之后就不是了。

3.1.2 符号指令的格式

  80C51 指令系统的符号指令通常由操作助记符、目的操作数、源操作数及 指令的注释几部分构成。一般格式为: 操作助记符 [目的操作数][,源操作数][;注释]   操作助记符表示指令的操作功能;操作数是指令执行某种操作的对象,它可以是操作数本身,可以是寄存器,也可以是操作数的地址。   在 80C51 的指令系统中,多数指令为两操作数指令。当指令操作数隐含在操作助记符中时,在形式上这种指令无操作数。另有一些指令为单操作数指令或三操作数指令。在指令的一般格式中使用了可选择符号“[ ]”,其包含的内容因指令的不同可以有或无。   在两个操作数的指令中,通常目的操作数写在左边,源操作数写在右边。   例如:指令 ANL A,#40H 完成的任务是将立即数“40H”同累加器 A 中的数进行“与”操作,结果送回累加器。这里 ANL 为“与”操作的助记符,立即数“40H”为源操作数,累加器 A 为目的操作数(注:在指令中,多数情况下累加器用“A”表示,仅在直接寻址方式中,用“ACC”表示累加器在 SFR 区的具 体地址 E0H。试比较,指令 MOV A,#30H 的机器码为 74H、30H;而指令 MOV ACC,#30H 的机器码为 75H、E0H、30H。)。

3.13 符号指令及其注释中常用的符号及含义如下所示:

Rn(n=0–7)–当前选中的工作寄存器组中的寄存器 R0~R7 之一; Ri(i=0,1)–当前选中的工作寄存器组中的寄存器 R0 或 R1; @ -------------间址寄存器前缀; #data ------------8 位立即数; //一个字节的常量 #data16---------16 位立即数;//两个字节的常量 direct------------片内低 128 个 RAM 单元的地址、SFR 的地址(可用符号名称表示); addr11-----------11 位目的地址; addr16-----------16 位目的地址; rel----------------补码形式表示的 8 位地址偏移量,其值在-128~+127 范围内; bit----------------片内RAM 位地址、SFR 的位地址(可用符号名称表示); /-----------------位操作数的取反操作前缀; (×)-------------表示 × 地址单元或寄存器中的内容; ((×))----------表示以 × 单元或寄存器中的内容为地址间接寻址单元的内容; ← ----------------将箭头右边的内容送入箭头左边的单元中。

3.2 80C51 的寻址方式

  寻址方式就是寻找操作数或指令地址的方式。寻址方式包含两方面内容:,二是指令地址的寻址(如转移指令、调用指令)。寻址方式是计算机性能的具体体现,也是编写汇编语言程序的基础。   对于两操作数指令,源操作数有寻址方式,目的操作数也有寻址方式。若不特别

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。