引入新课 简要回顾关于MCS-51单片机的硬件结构及引脚功能,特别要求学生对以下几 寄存器应引起注意:A、RO~R7、DTR等。引入本次将学习MCS-51单片机的工作 方式及寻址方式 新课敏 80min 第三讲指令格式与常用符号 1指令组成 30min 操作码:表明指令要执行的操作性质 操作数:说明参与操作的数据或数据所存放的地址。 指令分类 10min (1)单字节指令(49条) 单字节指令格式由8位二进制编码表示,例如 CLRA→E4H (2)双字节指令(46条) 双字节指令格式由两个字节组成,操作码和操作数,例如 MOVA,#1OH→74H10H (3)三字节指令(16条 字节指令格式中,第一个字节为操作码,后两个字节为操作数,例如: MOV 40H. #30H--75H 40H 30H 2指令格式 (1)指令的基本格式 [标号:]操作码[操作数][;注释] 4个区段之间要用分隔符分开:标号与操作码之间用“:”隔开,操作码与操/smin 作数之间用空格隔开,操作数与注释之间用“;”隔开,如果操作数有两个及以上, 则在操作数之间要用逗号“,”隔开(乘法指令和除法指令除外) 3常用符号 Rn当前选定的寄存器区中的8个工作寄存器R0~R7,即n=0~7 15min Ri—一当前选定的寄存器区中的2个寄存器R0、R1,i=0、1。 dret-8位内部RAM单元的地址,它可以是一个内部数据区RAM单元 (00H~TFH)或特殊功能寄存器地址(/O端口、控制寄存器、状态寄存器80H OFFH)。 #data指令中的8位常数。 #data16—指令中的16位常数 addr16-16位的目的地址,用于LJMP、LCAL指令,可指向64KB程序存 储器地址空间。 addr1-11位的目的地址,用于AJMP, ACALL指令。目的地址必须与下一条 指令的第一个字节在同一个2KB程序存储器地址空间之内。 rel—-8位带符号的偏移量字节,用于SJMP和所有条件转移指令中。偏移量相 对于下一条指令的第一个字节计算,在-128~+127范围内取值。 bit—一内部数据RAM或特殊功能寄存器中的可直接寻址位。 DPTR—数据指针,可用作16位的地址寄存器。 A—累加器
引入新课 简要回顾关于 MCS-51 单片机的硬件结构及引脚功能,特别要求学生对以下几 寄存器应引起注意:A、R0~R7、DPTR 等。引入本次将学习 MCS-51 单片机的工作 方式及寻址方式。 新课教学 第三讲 指令格式与常用符号 1.指令组成 操作码:表明指令要执行的操作性质; 操作数:说明参与操作的数据或数据所存放的地址。 指令分类: (1)单字节指令(49 条) 单字节指令格式由 8 位二进制编码表示, 例如: CLR A→E4H (2)双字节指令(46 条) 双字节指令格式由两个字节组成, 操作码和操作数, 例如: MOV A, #10H→74H 10H (3)三字节指令(16 条) 三字节指令格式中, 第一个字节为操作码, 后两个字节为操作数, 例如: MOV 40H, #30H→75H 40H 30H 2.指令格式 (1)指令的基本格式 [标号:] 操作码 [操作数] [;注释] 4 个区段之间要用分隔符分开: 标号与操作码之间用“:”隔开, 操作码与操 作数之间用空格隔开, 操作数与注释之间用“;”隔开, 如果操作数有两个及以上, 则在操作数之间要用逗号“,”隔开 (乘法指令和除法指令除外)。 3.常用符号 Rn——当前选定的寄存器区中的 8 个工作寄存器 R0~R7, 即 n=0~7。 Ri——当前选定的寄存器区中的 2 个寄存器 R0、 R1, i=0、1。 direct—— 8 位内部 RAM 单元的地址, 它可以是一个内部数据区 RAM 单元 (00H~7FH)或特殊功能寄存器地址(I/O 端口、控制寄存器、 状态寄存器 80H~ 0FFH)。 #data——指令中的 8 位常数。 #data16——指令中的 16 位常数。 addr16——16 位的目的地址, 用于 LJMP、LCALL 指令, 可指向 64 KB 程序存 储器地址空间。 addr11——11 位的目的地址, 用于 AJMP, ACALL 指令。目的地址必须与下一条 指令的第一个字节在同一个 2KB 程序存储器地址空间之内。 rel——8 位带符号的偏移量字节, 用于 SJMP 和所有条件转移指令中。偏移量相 对于下一条指令的第一个字节计算, 在-128~+127 范围内取值。 bit——内部数据 RAM 或特殊功能寄存器中的可直接寻址位。 DPTR——数据指针, 可用作 16 位的地址寄存器。 A——累加器。 5min 80min 30min 10min 5min 15min
B—寄存器,用于MUL和DVv指令中。 C—进位标志或进位位(位累加器) @—间接寻址寄存器或基址寄存器的前缀,如@R,@DPIR。 —位操作数的前缀,表示对该位取 (X)一X中的内容 (X)由X寻址的单元中的内容 箭头左边的内容被箭头右边的内容所代替 31寻址方式 所谓寻址方式,就是寻找操作数地址的方式,在用汇编语言编程时,数据的 存放、传送、运算都要通过指令来完成。编程者必须自始至终都要十分清楚操|50min 作数的位置,以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都 具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。 1.立即寻址 含义:立即寻址方式是指操作数包含在指令字节中。跟在指令操作码后面的 数就是参加运算的数,该操作数称为立即数(规定:立即数前必须加#)。立即数6min 有一字节和二字节两种可能,例如指令: MOVA,#3AH;(A)←3AH MOV DPTR # ODFFFH: (DPTR)+ODFFFH 寻址空间:程序存储 2.直接寻址 含义:在指令中直接给出操作数的存储器地址,这种寻址方式就属于直接寻址 方式。在这种方式中,指令的操作数部分直接是操作数的地址。 6min 例:MOVA,40H;(A)-(40H 存储器空间: (1)内部数据存储器的低128个字节单元(00H~7FH) (2)特殊功能寄存器。特殊功能寄存器只能用直接寻址方式进行访问。SFR经 常采用符号形式表示,但符号将转换为相应的地址(如累加器用ACC表示) (3)位地址空间 3.寄存器寻址 含义:在该寻址方式中,参加操作的数存放在寄存器里,指令中直接给出该寄 存器名称的寻址方式称为寄存器寻址。采用寄存器寻址可以获得较高的传送和运6min 算速度 寻址空间:采用寄存器寻址的寄存器: 个工作寄存器RO~R7 累加器A 寄存器B 数据指针DPTR 布尔处理器的位累加器C。 例如:MOVA,R 4.寄存器接间寻址: 含义:在这种寻址方式中,寄存器的内容为操作数的地址。寄存器间接寻址 只能使用资存器80、R1作为地址指针寻址内部RN区的数据:当访间外部R|9mn 时,可使用RO、R1及DPTR作为地址指针。寄存器间接寻址符号为
B——寄存器, 用于 MUL 和 DIV 指令中。 C——进位标志或进位位(位累加器)。 @——间接寻址寄存器或基址寄存器的前缀, 如@Ri,@DPTR。 /——位操作数的前缀, 表示对该位取反。 (X)—— X 中的内容。 ((X))——由 X 寻址的单元中的内容。 ←——箭头左边的内容被箭头右边的内容所代替。 3.1 寻址方式 所谓寻址方式, 就是寻找操作数地址的方式,,在用汇编语言编程时,数据的 存放、传送、 运算都要通过指令来完成。 编程者必须自始至终都要十分清楚操 作数的位置,以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都 具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。 1.立即寻址 含义:立即寻址方式是指操作数包含在指令字节中。 跟在指令操作码后面的 数就是参加运算的数,该操作数称为立即数(规定:立即数前必须加#)。立即数 有一字节和二字节两种可能,例如指令: MOV A, #3AH;(A) ←3AH MOV DPTR, #0DFFFH;(DPTR) ←0DFFFH 寻址空间:程序存储 2.直接寻址 含义:在指令中直接给出操作数的存储器地址, 这种寻址方式就属于直接寻址 方式。在这种方式中, 指令的操作数部分直接是操作数的地址。 例: MOV A, 40H ; (A)←(40H) 存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~7FH)。 (2) 特殊功能寄存器。特殊功能寄存器只能用直接寻址方式进行访问。SFR 经 常采用符号形式表示,但符号将转换为相应的地址(如累加器用 ACC 表示)。 (3) 位地址空间。0 3.寄存器寻址 含义:在该寻址方式中, 参加操作的数存放在寄存器里,指令中直接给出该寄 存器名称的寻址方式称为寄存器寻址。采用寄存器寻址可以获得较高的传送和运 算速度。 寻址空间:采用寄存器寻址的寄存器: 8 个工作寄存器 R0~R7 累加器 A 寄存器 B 数据指针 DPTR 布尔处理器的位累加器 C。 例如:MOV A,R 4.寄存器接间寻址: 含义:在这种寻址方式中, 寄存器的内容为操作数的地址。 寄存器间接寻址 只能使用寄存器 R0、R1 作为地址指针,寻址内部 RAM 区的数据; 当访问外部 RAM 时, 可使用 R0、 R1 及 DPTR 作为地址指针。寄存器间接寻址符号为“@” 50min 6min 6min 6min 9min
寻址空间:片同RAM和片外数据存贮器 5.基址寄存器加变址寄存器的间接寻址 含义:以PC或DPTR为基址寄存器,以A为变址寄存器。这种寻址方式以 个基地址(基址寄存器)加一个偏移量地址(变址寄存器)形成操作数的寻址 方式,主要用于访间程序存储器中的数据表格,它以基址寄存器DPR或PC的内8mn 容为基本地址,加上变址寄存器A的内容作为操作数的地址,由于程序存储器是只 读存储器,所以变址寻址操作只有读操作而无写操作。例如 MOVC A, @DPTR+A JMP @A+DPTR MOVC A, @PC+A 寻址空间:程序存储器 6.相对寻址 含义:以PC为基地址,加上一个偏移量rel,作为程序转移的地址。在MCS 51指令系统中设有转移指令,分为直接转移和相对转移指令,在相对转移指令中 采用相对寻址方式。这种寻址方式是以PC的内容为基本地址,加上指令中给定的8mn 偏移量作为转移地址。指令中给出的偏移量是一个8位带符号的常数,可正可负, 其范围为-128~+127,例如: CJNE A,# OFFH rel 寻址空间:程序存储器 7.位寻址 含义:仅对某一位二进制的寻址,该种寻址方式中,操作数是内部RAM单 7min 元中某一位的信息。例如: MOVACC7,20H 寻址空间:片内RAM的20H-~2FH,SFR中的某些能进行位寻址的寄存器 (地址能被8整除的单元)。 课堂小结 5mi 1.MCS-51单片机指令格式常用的符号及其含义。 2.MCS-51单片机的寻址方式及其寻址空间 诈业 思考题T3、4 课后分析
寻址空间:片同 RAM 和片外数据存贮器 5. 基址寄存器加变址寄存器的间接寻址 含义:以 PC 或 DPTR 为基址寄存器,以 A 为变址寄存器。这种寻址方式以 一个基地址(基址寄存器)加一个偏移量地址(变址寄存器)形成操作数的寻址 方式,主要用于访问程序存储器中的数据表格, 它以基址寄存器 DPTR 或 PC 的内 容为基本地址, 加上变址寄存器A的内容作为操作数的地址, 由于程序存储器是只 读存储器,所以变址寻址操作只有读操作而无写操作。例如: MOVC A, @DPTR+A JMP @A+DPTR MOVC A, @ PC+A 寻址空间:程序存储器 6.相对寻址 含义:以 PC 为基地址,加上一个偏移量 rel,作为程序转移的地址。在 MCS -51 指令系统中设有转移指令, 分为直接转移和相对转移指令, 在相对转移指令中 采用相对寻址方式。这种寻址方式是以 PC 的内容为基本地址, 加上指令中给定的 偏移量作为转移地址。指令中给出的偏移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127,例如:CJNE A,#0FFH,rel。 寻址空间:程序存储器 7.位寻址 含义:仅对某一位二进制的寻址,该种寻址方式中, 操作数是内部 RAM 单 元中某一位的信息。例如: MOV ACC.7,20H 寻址空间:片内 RAM 的 20H~~2FH,SFR 中的某些能进行位寻址的寄存器 (地址能被 8 整除的单元)。 8min 8min 7min 课堂小结 1. MCS-51 单片机指令格式、常用的符号及其含义。 2. MCS-51 单片机的寻址方式及其寻址空间。 作 业 思考题 T3、4 5min 课后分析
引入新课 5min 简要回顾MCS-51的寻址方式及指令格式、常用符号表示,引入本次课将学习 数据传送指令。 新课教些 80min 指令分类 5min 按功能分,可分为如下几类 (1)数据传送 (2)算术运算 (3)逻辑运算; (4)位操作 (5)控制转移。 数据传送类指令 75min 1.以A为目的地传送指令 ;n=0-7,A←(Rn) MOv A direct A←( direct ;=0,1,A←(R) ;A←data 功能:把源操作数的内容送入累加器A。例如:MOVA,#10H,该指令执 行时将立即数10H送入累加器A中 2.以直接地址 direct为目的地 MoV direct, direct aR 功能是:把源操作数的内容送入内部RAM单元或特殊功能寄存器。其中第三条指 令是三字节指令。第三条指令的功能很强,能实现内部RAM之间、特殊功能寄存 器之间或特殊功能寄存器与内部RAM之间的直接数据传送 mil 3.工作寄存器Rn为目的地的传送指令 MOV Rn direct 功能是:把源操作数的内容送入当前工作寄存器区的R0~R7中的某一个寄存 器。指令中Rn在内部数据存储器中的地址由当前的工作寄存器区选择位RS、RS0 确定,可以是00H~07H、08H~OFH、10H~17H、18H~1FH。例如:MORO, 若当前RS1、RS0设置为00(即工作寄存器0区),执行该指令时,将累加器 A中的数据传送至工作寄存器R0(内部RAM00H)单元中。 emir
引入新课 简要回顾 MCS-51 的寻址方式及指令格式、常用符号表示,引入本次课将学习 数据传送指令。 新课教学 一、指令分类 按功能分,可分为如下几类: (1) 数据传送; (2) 算术运算; (3) 逻辑运算; (4) 位操作; (5) 控制转移。 二、数据传送类指令 1.以 A 为目的地传送指令 Rn ;n=0—7 ,A←(Rn) MOV A, direct ;A←(direct) @Ri ;i=0,1,A←((Ri)) #data ;A←data 功能:把源操作数的内容送入累加器 A。例如: MOV A, #10H, 该指令执 行时将立即数 10H 送入累加器 A 中。 2.以直接地址 direct 为目的地 A Rn MOV direct, direct @Ri #data 功能是:把源操作数的内容送入内部 RAM 单元或特殊功能寄存器。其中第三条指 令是三字节指令。第三条指令的功能很强, 能实现内部 RAM 之间、特殊功能寄存 器之间或特殊功能寄存器与内部 RAM 之间的直接数据传送。 3.工作寄存器 Rn 为目的地的传送指令 A ;i=0—7 MOV R n, direct #data 功能是: 把源操作数的内容送入当前工作寄存器区的 R0~R7 中的某一个寄存 器。指令中 Rn 在内部数据存储器中的地址由当前的工作寄存器区选择位 RS1、RS0 确定, 可以是 00H~07H、08H~0FH、10H~17H、18H~1FH。 例如: MOV R0, A, 若当前 RS1、RS0 设置为 00 (即工作寄存器 0 区), 执行该指令时,将累加器 A 中的数据传送至工作寄存器 R0(内部 RAM 00H)单元中。 5min 80min 5min 75min 7min 7min 6min 6min
4.以Ri间址为目的地 MOV @Ri, direct #data 7min 5.访问片外数据存贮器的传送指令 MOVX A 况DPTR MOVX @Ri aDPTR, A 在累加器A与外部数据存储器RAM单元或IO口之间进行数据传送,前两条 指令执行时,P3.7引脚上输出RD有效信号,用作外部数据存储器的读选通信号 后两条指令执行时,P36引脚上输出WR有效信号,用作外部数据存储器的写选通 信号。DPIR所包含的16位地址信息由P2(高8位)和P0(低8位)输出,而数据 信息由P0口传送,PO口作分时复用的总线。由Ri作为间接寻址寄存器时,P0口 10min 上分时输出Ri指定的8位地址信息及传输8位数据。 6.访问程序存贮器 @A+DPTR MOVC A @A+PC 这是两条很有用的查表指令,可用来查找存放在外部程序存储器中的常数表 格。第一条指令是以DPTR作为基址寄存器,累加器A的内容作为无符号数与 DPIR内容相加,得到一个16位的地址,并把该地址指出的程序存储器单元的内 容送到累加器A这条指令的执行结果只与指针DPTR及累加器A的内容有关,与 该指令存放的地址无关,因此,表格的大小和位置可以在64KB程序存储器中任 意安排,并且一个表格可以为各个程序块所共用。第二条指令是以PC作为基址寄 存器,A的内容作为无符号数和PC的内容(下一条指令的起始地址)相加后得 到一个16位的地址,并将该地址指出的程序存储器单元的内容送到累加器A 这条指令的优点是不改变特殊功能寄存器和PC的状态,只要根据A的内容就可以 取出表格中的常数。缺点是表格只能放在该条查表指令后面的256个单元之内 表格的大小受到限制,而且表格只能被一段程序所利用。 amir 7.交换指令 (1)以A为一方的字节变量交换指令 XCH A, direct aR 将累加器A的内容和源操作数内容相互交换 (2)BCD码交换指令
4.以@Ri 间址为目的地 A MOV @Ri, direct #data 5.访问片外数据存贮器的传送指令 @R i MOVX A, @DPTR MOVX @Ri, A @DPTR, A 在累加器 A 与外部数据存储器 RAM 单元或 I/O 口之间进行数据传送, 前两条 指令执行时, P3.7 引脚上输出 RD 有效信号, 用作外部数据存储器的读选通信号; 后两条指令执行时, P3.6 引脚上输出WR有效信号, 用作外部数据存储器的写选通 信号。DPTR 所包含的 16 位地址信息由 P2(高 8 位)和 P0 (低 8 位) 输出, 而数据 信息由 P0 口传送, P0 口作分时复用的总线。由 Ri 作为间接寻址寄存器时, P0 口 上分时输出 Ri 指定的 8 位地址信息及传输 8 位数据。 6.访问程序存贮器 @A+DPTR MOVC A, @A+PC 这是两条很有用的查表指令, 可用来查找存放在外部程序存储器中的常数表 格。第一条指令是以 DPTR 作为基址寄存器, 累加器 A 的内容作为无符号数与 DPTR 内容相加, 得到一个 16 位的地址, 并把该地址指出的程序存储器单元的内 容送到累加器 A。这条指令的执行结果只与指针 DPTR 及累加器 A 的内容有关, 与 该指令存放的地址无关, 因此, 表格的大小和位置可以在 64 KB 程序存储器中任 意安排, 并且一个表格可以为各个程序块所共用。第二条指令是以 PC 作为基址寄 存器, A 的内容作为无符号数和 PC 的内容 ( 下一条指令的起始地址)相加后得 到一个 16 位的地址, 并将该地址指出的程序存储器单元的内容送到累加器 A。 这条指令的优点是不改变特殊功能寄存器和 PC 的状态, 只要根据 A 的内容就可以 取出表格中的常数。缺点是表格只能放在该条查表指令后面的 256 个单元之内, 表格的大小受到限制, 而且表格只能被一段程序所利用。 7.交换指令 (1)以 A 为一方的字节变量交换指令 Rn XCH A, direct @Ri 将累加器 A 的内容和源操作数内容相互交换 (2)BCD 码交换指令 7min 10min 8min