单片机03
- 格式:pdf
- 大小:823.34 KB
- 文档页数:32
11110101--第一字节 10010000--第二字节。
1
1
1
1 0
1 0
1
1 0 0 1
0 0 0 0
该指令与以下指令实现相同的功能: MOV
P1, A
思考:以下指令的指令代码(Operand)是什么?
MOV SCON, #55H
单片机原理及其应用 Autumn 2010
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
11
例:一条ACALL指令位于内存空间地址1024H和1025H处,该指令所调用的子程 序在内存空间的起始点是17A6H。该指令的机器语言代码标识形式是什么?
F1H, A6H
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
R0, #60H @R0, #0 R0 R0, #80H, LOOP
遍历连续的内存单元时格外重要!
单片机原理及其应用 Autumn 2010 第3章 8051指令集概述 8
3.2.4立即寻址(Immediate Addressing)
以MOV
A, #12为例,立即数为8位的常数。
只有以下指令特殊:MOV
单片机原理及其应用 Autumn 2010 第3章 8051指令集概述 23
A A, @A+PC
0F0H 0F0H, A AB 0F0H
不采用查找表的方法:
3.3.4布尔操作类指令(Boolean Instructions)
8051常常要对单个“位”进行存取,以便控制许多I/O其间,在输出方面,包括 中继器、电动马达、螺线管、LED状态灯、蜂鸣器、警报器、喇叭等,而在 输入方面,包括各种类型的开关和状态指示器。 例:P1.0和P1.1作为输入,P1.2作为输出,实现与门功能。(sim. boolean instruction)
第3章 8051指令集概述
•本章简介 •寻址模式 •指令类型 •8051汇编语言的伪指令
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
1
3.1 本章简介
8051指令操作码长度8位,因此可提供256条指令,8051中实现了255 条,1条指令没有给出定义,各种指令的分类参见课本39页。 按功能排列的指令表详见课本的61页至64页; 操作码映射表可到http://www.efton.sk下载; 指令及操作码详解参考MCS® 51 Microcontroller Family User‘s Manual(英 文)或8051微控制器教程中的附录C (中文)
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
2
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
3
3.2 寻址模式(Addressing Mode)
在8051中,共有8种寻址模式(addressing mode): 寄存器寻址(Register) 直接寻址(Direct) 间接寻址(Indirect) 立即寻址(Immediate) 相对寻址(Relative) 绝对寻址(Absolute) 长寻址(Long) 索引寻址(Indexed)
(直接寻址) (间接寻址) (寄存器寻址) (立即寻址)
注意:查表可知所有算术运算类指令的指令周期所具有的规律
单片机原理及其应用 Autumn 2010 第3章 8051指令集概述 15
例1:累加器A中的数据为63H,寄存器R3的值为23H,当前的程序状态字PSW的 值为00H。(1)在执行完如下指令后,累加器A和程序状态字PSW中的数据为多 少?(以十六进制形式表示)
(直接寻址) (间接寻址) (寄存器寻址) (立即寻址)
注意:查表可知带“A”的指令的指令周期为1,否则为2。
例:编写一段程序,将累加器A中的数据转换为BCD数。(sim. swap)
MOV DIV SWAP ADD B, #10 AB A A, B
例1:写两段程序,用两种方式演示如何把累加器A中的各位数据循环左移三 位。并从内存需求和执行速度方面讨论这两种方法的优点和缺点。
DPTR, #8000H,立即数为16位的常数。
3.2.5相对寻址(Relative Addressing)
SJMP
1
0 0
0
0 0 0 0 8位有符号数,偏移量范围为-128--127 该数据与PC相加,从而得到目标地址。 通常直接使用标号,如
SJMP THERE
9
注意:偏移量是相对于跳转指令后的下一条指令而言
(1)RL RL RL A A A (2)SWAP RR
第3章 8051指令集概述
A A
19
单片机原理及其应用 Autumn 2010
例2:写一段程序,颠倒累加器A中数据各位的次序。(sim. 3-18)
MOV LOOP: RLC XCH RRC XCH DJNZ XCH R7, #8 A A, 0F0H A A, 0F0H R7, LOOP A, 0F0H
21
2.处理外部RAM的指令 在对外部RAM进行读写时,只会用到两类三个寄存器:R0、R1(当前工作寄 存器组,8位)和DPTR(16位)。前者的好处在于,当外部RAM不足64kbytes 时,可以节省P2的某些位。(Lecture Notes 2.6.2) 例3:写一段指令序列,演示如下功能:把外部RAM地址10F4H和10F5H处的 数据分别读入到寄存器R6和R7中。
MOV MOVX MOV INC MOVX MOV DPTR, #10F4H A, @DPTR R6, A DPTR A, @DPTR R7, A
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
22
3.查找表(Look-up tables) 有两条指令可用来读取位于程序存储器(ROM)中的查找表,如下:
第3章 8051指令集概述
7
3.2.3间接寻址(Indirect Addressing)
以MOV
A, @R0为例,其对应的操作码是E6H。
1
1 1 0 0 1 1 0
思考:假如R0中的数据是40H,内部存储器40H处的数据单元所包含的数 据为55H,那么以上指令会使得累加器的内容成为……?
MOV LOOP: MOV INC CJNE (continue)
A中的数据所表示的十进制数取决于编程人员。
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
16
例2:写一段程序,从R7中减去R6,并把结果置于R7中。
MOV CLR SUBB MOV A, R7 C A, R6 R7, A
原因在于SUBB是带借位的减法
例3:写一段程序,RAM中7FH处的值增加1。
INC 7FH MOV A, 7FH A 7FH, A
DPL减1
或
INC MOV
注:对于DPTR,具有INC能力,但不具备DEC能力。
DEC MOV CJNE DEC SKIP: … DPL R7, DPL R7, #0FFH, SKIP DPH
否
将DPL赋值给R7
DPL是否溢出 是 DPH减1
执行SKIP子程序
3.3.3数据传送类指令(Data Transfer Instructions)
操作于内部RAM上的指令
三类
处理外部RAM的指令
查找表
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
20
1. 操作于内部RAM上的指令 MOV最为常用 例1:栈顶指针SP的值是07H,累加器A中的数据是55H,寄存器B中的数据是 4AH。在执行完如下指令后,内部RAM中的何处被改变?其新值是多少?
12
3.2.7长寻址(Long Addressing)
LCALL LJMP
3.2.8索引寻址(Indexed Addressing)
1字节
单片机原理及其应用 Autumn 2010 第3章 8051指令集概述 13
MOVC MOVC
A, @A+PC A,@A+DPTR
单片机原理及其应用 Autumn 2010
MOVC MOVC A, @A+PC A, @A+DPTR
例4:写一个名为SQUARE的子程序,计算0-9整数的平方值。要求,调用子程 序前,把待求的整数装入累加器A中,子程序返回时,该整数的平方值置于累 加器A中。(sim. keypad & keypad (ISIS))
SQUARE: INC MOVC RET TABLE: DB 0,1,4,9,16,25,36,49,64,81 SQUARE: PUSH MOV MUL POP RET
PUSH PUSH ACC 0F0H
例2:在执行完如下指令后,累加器A和寄存器B中的数据是多少?
MOV MOV MOV XCH XCHD 0F0H, #12H R0, #0F0H A, #34H A, 0F0H A, @R0
A=14H, B=32H
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
4
各 种 寻 址 模 式
单片机原理及其应用 Autumn 2010
第3章 8051指令集概述
5
3.2.1寄存器寻址(Register Addressing)
以ADD
A, R7为例,其对应的操作码是00101111。
0
0
1
0
1
1
1 1
ADD A, R3
(2)在执行完指令后,累加器A中的数据为多少?(以十进制形式表示) (sim. 3-11) 运算过程分析: