单片机教程 第3章.ppt_第1页
单片机教程 第3章.ppt_第2页
单片机教程 第3章.ppt_第3页
单片机教程 第3章.ppt_第4页
单片机教程 第3章.ppt_第5页
已阅读5页,还剩196页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 3 章 MCS - 51单片机指令系统 福布斯中国大陆商业城市排行镑 排名 城市 人才指数 城市规模 经营成本 消费力指数 客运指数 1 上海 0.8571 1.0000 0.0091 0.9093 6 北京 0.9893 0.9898 0.0000 0.7982 7 南京 1.0000 0.8517 0.1144 0.7415 8 无锡 0.6107 0.8522 0.3719 0.7506 11 天津 0.7571 0.9494 0.0936 0.6984 17 泉洲 0.3964 0.7637 0.7575 0.6372 26 福州 0.7500 0.6931 0.3446 0.5965 29 厦门 0.6143 0.4409 0.2165 0.6884 83 晋江 0.0000 0.1320 0.5325 0.4943 32 昆山 0.1786 0.3330 0.5384 0.9229 第 3 章 MCS - 51单片机指令系统 第3章 MCS - 51单片机指令系统 及汇编语言程序设计 3.1 指令系统简介 3.2 寻址方式 3.3 指令系统 3.4 汇编语言程序设计基础 3.5 程序设计举例 3.6 习题 逻辑电路模拟 指令部分上机 第 3 章 MCS - 51单片机指令系统 1. 单字节指令 单字节指令格式由 8 位二进制编码表示, 例如: CLR AE4H 2. 双字节指令 双字节指令格式由两个字节组成, 操作码和操作数, 例如 : MOV A, 10H 74H 10H 3. 三字节指令 三字节指令格式中, 第一个字节为操作码, 后两个字节为 操作数, 例如: MOV 40H, 30H 75H 40H 30H 3.1 指令系统简介 第 3 章 MCS - 51单片机指令系统 一条汇编语言指令中最多包含 4 个区段, 如下所示: 标号: 操作码 操作数 ;注释 4 个区段之间要用分隔符分开: 标号与操作码之间用“: ” 隔开, 操作码与操作数之间用空格隔开, 操作数与注释之间 用 “;” 隔开, 如果操作数有两个以上, 则在操作数之间要用逗 号 “,” 隔开 (乘法指令和除法指令除外 )。 3.1.1 指令格式 第 3 章 MCS - 51单片机指令系统 3.1.2 指令分类及符号说明 1. 按功能, MCS -51 指令系统可分为 5 类: (1) 数据传送; (2) 算术运算; (3) 逻辑运算; (4) 位操作; (5) 控制转移。 不同存储区用不同的传送指令 哪些位允许按位寻址? 位地址的表示方式。 第 3 章 MCS - 51单片机指令系统 Rn当前选定的寄存器区中的 8 个工作寄存器 R0R7, 即 n = 07。 Ri当前选定的寄存器区中的 2 个寄存器R0、 R1, i=0、1。 direct 8 位内部RAM单元的地址, 它可以是一个内部数据 区 RAM单元(00H7FH) 或 特殊功能寄存器地址。 data 指令中的 8 位常数。 data16 指令中的 16 位常数。 2. 描述指令的符号意义 P45 第 3 章 MCS - 51单片机指令系统 addr16 16 位的目的地址, 用于 LJMP, LCALL 指 令,可指向 64 KB 程序存储器地址空间。 addr11 11位的目的地址, 用于AJMP, ACALL指令。 目的地址必须与下一条指令的第一个字节在同 一个 2 KB 程序存储器地址空间之内。 rel 8 位带符号的偏移量字节, 用于SJMP 和所有条 件转移指令中。 偏移量相对于下一条指令的第 一个字节计算, 在128+127 范围内取值。 描述指令的符号意义 非数据存储器 第 3 章 MCS - 51单片机指令系统 描述指令的符号意义 bit内部数据 RAM 或 特殊功能寄存器中的可直 接 寻址位。 DPTR数据指针, 可用作 16 位的地址寄存器。 A累加器。 B寄存器, 用于 MUL 和 DIV 指令中。 20H 2FH 第 3 章 MCS - 51单片机指令系统 3.1 寻址方式 寻找操作数地址的方式 第 3 章 MCS - 51单片机指令系统 在 MCS -51单片机指令系统中, 有以下 7 种寻址方式: (1) 立即寻址; (2) 直接寻址; (3) 寄存器寻址; (4) 寄存器间接寻址; (5) 基址寄存器加变址寄存器间接寻址; (6) 相对寻址; (7) 位寻址。 第 3 章 MCS - 51单片机指令系统 1. 立即寻址 立即寻址方式是指操作数包含在指令字节中。 如:MOV A, 3AH ; 将立即数 3AH 送累加器A中 MOV DPTR, 0DFFFH 注意 立即数前加 “#” 号 第 3 章 MCS - 51单片机指令系统 2. 直接寻址 在指令中直接给出操作数的地址。 内部数据存储器的低 128 个字节单元(00H7FH)。 特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问。 位地址空间。 使用空间 第 3 章 MCS - 51单片机指令系统 例: MOV TCON, A MOV A, P1 MOV A, 76H ADD A, 43H 第 3 章 MCS - 51单片机指令系统 3. 寄存器寻址 (1)参加操作的数存放在寄存器里。 (2)寄存器包括 8个工作寄存器 R0R7, 累加器A, 寄 存器B、数据指针DPTR和布尔处理器的位累加器 C。 注意 操作数类型要配对 当前寄存器处于哪一个寄存器区 第 3 章 MCS - 51单片机指令系统 例: MOV A,R1 ADD A, R1 MOV DPTR,#4321H 第 3 章 MCS - 51单片机指令系统 4. 寄存器间接寻址 (1)寄存器的内容为操作数的地址。 (2)寄存器间接寻址符号为“”, (3)寻址内部 RAM 区, 只能使用寄存器 R0、R1 作为地址指针 (4)访问外部 RAM 时,可使 用 R0、 R1 及 DPTR 作 为地址指针。例如: 第 3 章 MCS - 51单片机指令系统 例 MOV A, R0 MOV R1,76H XCHD A, R0 MOVX DPTR , A INC R1 第 3 章 MCS - 51单片机指令系统 5. 基址寄存器加变址寄存器间接寻址 (1)用于访问程序存储器中的数据表格; (2)它以基址寄存器 DPTR 或 PC 的内容为基本地址, 加上变址寄存器 A 的内容作为操作数的地址。 如 MOVC A, A + DPTR JMP A+DPTR MOVC A, A + PC 第 3 章 MCS - 51单片机指令系统 6. 相对寻址 (1)以 PC 的内容为基本地址, 加上指令中给定的 偏移量作地址增量。 (2)偏移量是一个 8 位带符号的常数, 其范围为128+127。 (3)用于相对转移指令, 第 3 章 MCS - 51单片机指令系统 例 (1) 2000H SJMP 08H ; 2字节指 令 目标地址 = 2000H+02H+08H = 200AH JZ 30H ; 2字节指令 若(A) = 0, 则 PC = PC+2+rel 若(A) 0, 继续执行下一条 第 3 章 MCS - 51单片机指令系统 7. 位寻址 操作数为二进制数中的位; PSW 中的 CY 是位寻址区中的累加器 ; 可按位寻址的位 * 内部RAM单元中 20H 2FH 区域中的位 * 地址可用 8 整除的专用寄存器中的位。 第 3 章 MCS - 51单片机指令系统 例 MOV C, 07H SETB EX0 第 3 章 MCS - 51单片机指令系统 3.3 指令系统 MCS -51 指令系统可分为 5 类: (1) 数据传送; (2) 算术运算; (3) 逻辑运算; (4) 控制转移。 (5) 位操作; 第 3 章 MCS - 51单片机指令系统 3.3.1 数据传送指令 1、特点 一般不影响标志位 目的操作数为 A 的指令将影响 P 标志 寻址方式 寄存器、寄存器间接、直接、立即、 基址加变址 第 3 章 MCS - 51单片机指令系统 2、数据传送指令 包括: (1)片内数据存储器传送指令 (2)片外数据存储器传送指令 (3)程序存储器数据交换指令 (4)数据交换指令 (5)堆栈操作指令 第 3 章 MCS - 51单片机指令系统 片内数据传送指令 以累加器为目的操作数 MOVA,Rn MOVA,Ri MOVA,direct MOVA,#data 指令功能:把源操作数的内容送入累加器A,源操作数不变。 以工作寄存器为目的操作数 MOVRn,A MOVRn, direct MOVRn,#data 指令功能:把源操作数的内容送入通用寄存器,源操作数不变 。 传送指令 寄存器 寄存器 ? 第 3 章 MCS - 51单片机指令系统 3) 以直接地址为目的操作数 MOVdirect, A MOVdirect, Rn MOVdirect, direct MOVdirect, Ri MOVdirect, # data 4) 以间接地址为目的操作数 MOVRi, A MOVRi, direct MOVRi, # data 5) 16位数据传送 MOVDPTR, # data 第 3 章 MCS - 51单片机指令系统 例3-1 MOV A, R1 例3-2 MOV A, #16H 例3-3 MOV R0,#50H MOV A, R0 例3-4 MOV A, 30H 例3-5 MOV R1, A MOV R3, 30H MOV R7, #80H 寄存器寻址 立即寻址 寄存器间接寻址 直接寻址 寄存器 在第几区? 第 3 章 MCS - 51单片机指令系统 例3-6 MOV 30H, A MOV 20H, R7 MOV 27H, #0FH MOV 50H, 40H 例3-7 MOV A, #00H MOV R0, #20H MOV R7, #20H LP1: MOV R0, A INC R0 DJNZ R7, LP1 1 第 3 章 MCS - 51单片机指令系统 (2)片外数据存储器传送指令 MOVX A, DPTR MOVX A, Ri MOVX DPTR, A MOVX Ri, A 传送指令 第 3 章 MCS - 51单片机指令系统 在累加器A 与 外部数据存储器 RAM 单元或I/O口 之间进行数据传送。 DPTR 所包含的 16 位地址信息, 由 P0(低8位)和 P2(高8位)输出, 而数据信息由 P0 口传送。 由 Ri 作为间接寻址寄存器时, P0 口上分时输出 Ri 指定的 8 位地址信息及传输 8 位数据。 高位地址? 这组指令的功能 第 3 章 MCS - 51单片机指令系统 例3-8 MOV DPTR,#8000H MOVX A, DPTR 例3-9 MOV DPTR,#2040H MOVX A, DPTR MOV 20H, A 例3-10 MOV DPTR,#2041H MOV A, 20H MOVX DPTR ,A 例3-11 MOV DPTR,#2000H MOVX A, DPTR MOV DPTR,#3FFFH MOVX DPTR ,A 第 3 章 MCS - 51单片机指令系统 (3) 程序存储器数据传送指令 MOVC A, A+PC ;(A)为8位无符号数 查表指令 查找存放在程序存储器中的常数表格。 (PC) ( 下一条指令的起始地址)+( A) A 表格只能被一段程序所利用。 若表格不是紧跟在查表指令的下面,可以通过 调整 A 的内容进行查表。 传送指令 第 3 章 MCS - 51单片机指令系统 MOVC A, A+DPTR ;(A)为8位无符号数 查表指令功能: 查找存放在程序存储器中的常数表格。 (DPTR)+(A)A, 表格的大小和位置可以在 64 KB程序存储器中任意安排, 并且一个表格可以为各个程序块所共用。 第 3 章 MCS - 51单片机指令系统 例3-12 2100H MOV A, #0AH 2102H MOVC A, A+PC 2103H 0C0H;字符“0”的段码 2104H 0F9H;字符“1”的段码 2105H 0A4H;字符“2”的段码 2106H 0B0H;字符“3”的段码 2107H 0B0H;字符“4”的段码 : 第 3 章 MCS - 51单片机指令系统 例3-12 从段码表中取出“3”的LED显示 码,送显示端口。 2100H MOV A, #0AH 2102H MOVC A, A+PC 2103H MOV DPTR, #1200H 2106H MOVX DPTR, A : 210AH 0C0H;字符“0”的段码 210BH 0F9H;字符“1”的段码 210CH 0A4H ;字符“2”的段码 210DH 0B0H;字符“3”的段码 210EH 0B0H;字符“4”的段码 : 第 3 章 MCS - 51单片机指令系统 例3-12 2100H MOV A, #0AH 2102H MOVC A, A+PC 2103H MOV DPTR, #1200H 2106H MOVX DPTR, A : 210AH 0C0H;字符“0”的段码 210BH 0F9H;字符“1”的段码 210CH 0A4H;字符“2”的段码 210DH 0B0H;字符“3”的段码 210EH 0B0H;字符“4”的段码 : MOV A,#3 ADD A,#7 第 3 章 MCS - 51单片机指令系统 例3-13 已知:ASCII 码表首地址为 7000H P42 要求:查找数字 2 的 ASCII 码 1004H MOV A, #02H 1006H MOV DPTR,#7000H 1009H MOVC A,A+DPTR : 7000H 30H;ASCII码表 7000H 31H 7000H 32H 7000H 33H 7000H 34H 第 3 章 MCS - 51单片机指令系统 (4)数据交换指令 1) 字节交换指令 字节交换 XCH A, Rn XCH A, Ri XCH A, direct 传送指令 A 的内容与源操作 数内容相互交换 将累加器 A 的 高 4 位与低 4 位之 间相互交换 将 A 的低 4 位内容 和(Ri)所指出的内部 RAM 单元的低 4 位内容 相互交换 半字节交换 XCHD A, Ri SWAP A 作业 第 3 章 MCS - 51单片机指令系统 例3-17 设:外部 RAM 中,(20H)= 38H, 内部 RAM 中,(20H)= 08H, P55 MOV R1, 20H MOVX A, R1 XCH A, R1 MOVX R1, A 源程序: 建立地址指针 第 3 章 MCS - 51单片机指令系统 例3-14 A=3FH,R0=20H,(20H)= 46H 执行: XCH A,R0 XCHD A,R0 XCH A, 20H 例3-15 A=7FH,R0=20H,(20H)= 35H 执行: XCHD A,R0 例3-16 将 20H 单元的内容与 A 的内容互换,再将A 的高四位存入 R1 指向的内部 RAM 单元的 低四位,A 的低四位存入该单元的高四位。 XCH A,20H SWAP A MOV R1, A 第 3 章 MCS - 51单片机指令系统 (5) 堆栈操作指令 PUSH direct POP direct 说明: 堆栈指针 SP 随时指示栈顶的位置。 进栈指令功能: 将堆栈指针 SP 的内容加 1, 将直接地址所指 出的 内容送入 SP 指出的内部 RAM 单元; 出栈指令功能: 将 SP 所指出的内部 RAM 单元的内容送入由直接 地址所指出的字节单元, 且堆栈指针SP的内容减 1。 传送指令 第 3 章 MCS - 51单片机指令系统 P56 PUSH A PUSH DPL PUSH DPH 例3-19 将栈中内容弹出至原处 POP DPL POP A 例3-18 设栈底为 30H,将 A 和 DPTR 压入堆栈 MOV SP,#30H POP DPH 恢 复 现 场 保 护 现 场 第 3 章 MCS - 51单片机指令系统 例3-20 将片外 2500H 单元中的内容通 过 堆栈传入片内40H单元。 MOV DPTR,#2500H MOVX A, DPTR MOV 20H, A MOV SP, #30H PUSH 20H POP 40H 第 3 章 MCS - 51单片机指令系统 开机后: 1. MOV A,R5; MOV A, #05H MOV A,05H MOV A,R1 MOV 0EH, R4 MOV R0, 06H MOV 10H, R0 MOV 0EH, 10H MOV A, R1 MOV DPTR, #2050H MOVX DPTR,A MOV A, R1 MOVX R1,A 举例 1区 0区 2区 1区 0区 2区 第 3 章 MCS - 51单片机指令系统 在程序存储器中, 从2000H开始,存放 09的 平方值值,执执行下列程序段: 1. 以 DPTR 为指针,用查表指令求 9 的平方值 。 MOV DPTR, #2000H MOV A, 09H MOVC A, A+DPTR (A)= (DPTR)= 指令上机 补充举例 第 3 章 MCS - 51单片机指令系统 2000H 0 1 4 9 : 51 MOV A, #09H ADD A,N ; MOVC A, A+PC 1FF0H 24 0C ADD A, #12 90 20 10 MOV DPTR, #2010H F0 MOVX DPTR, A 补充举例 N = 6 第 3 章 MCS - 51单片机指令系统 1. 将外部 RAM单元 40FBH 的内容传送到内部RAM 08H 单元. 法一 寄存器寻址 法二 通过堆栈 法三 直接寻址 将内存中05H单元中的内容与07H单元中的容交换。 法一 寄存器寻址 法二 通过堆栈 法三 直接寻址 法四 用寄存器间址 3.将外存中1205H单元中的内容与1507H单元中的内容交换。 4.将外存中1205H单元中的内容与1507H单元中的内容的低4位交换 。 5.将外存中1205H单元中的内容与1507H单元中的内容的高4位交换, 并存入1050H单元。 作业 第 3 章 MCS - 51单片机指令系统 将外部 RAM单元 40FBH 的内容传送到内部RAM 08H 单元。 法1:寄存器寻址 MOVDPTR,#40FBH MOVX A,DPTR SETB RS0 MOV R0, A 法2: 通过堆栈传送 MOVDPTR,#40FBH MOVX A,DPTR PUSH A POP 08H 作业分析 法3 :直接寻址 MOV DPTR,#40FBH MOVX A,DPTR MOV 08H,A 第 3 章 MCS - 51单片机指令系统 2. 将内存中 05H 单元中的内容与 07H 单元中的容交换 。 法1:寄存器寻址 MOV A, 05H MOV R4, 07H XCH A, R4 MOV R7, R4 ;送回 MOV R5, A 法2:通过堆栈传送 PUSH 05H PUSH 07H POP 05H POP 07H 作业分析 法3 :直接寻址 MOVA, 05H XCH A, 07H MOV A, 05H 法4:寄存器间接寻址 MOV R0, #05H MOV A, 07H XCH A, R0 XCH A, 07H 第 3 章 MCS - 51单片机指令系统 3.将外存中1205H单元中的内容 与1507H单元中的内容交换。 MOV DPTR, #1205H MOVX A, DPTR MOV B, A MOV DPTR, #1507H MOVX A, DPTR XCH A, B MOVX DPTR, A XCH A, B MOV DPTR, #1205H MOVX DPTR, A 作业分析 4.将外存中1205H单元中的内容 与1507H单元中的内容的低4位交换。 MOV R0, #10H MOV DPTR, #1205H MOVX A, DPTR MOV R0, A MOV DPTR, #1507H MOVX A, DPTR XCHD A, R0 MOVX DPTR, A MOV DPTR, #1205H XCH A, R0 MOVX DPTR, A 第 3 章 MCS - 51单片机指令系统 5. 将外存中1205H单元中的内容与1507H单元中的内容的高4位交 换,并存入1050H单元。 法1: MOV R0, #30H MOV DPTR, #1205H MOVX A, DPTR ; A= SWAP A MOV R0, A ; (30H) = MOV DPTR, #1507H MOVX A, DPTR ; A= SWAP A ; A= XCHD A, R0 ; A= ; (30H)= XCH A, R0 SWAP A MOV DPTR, #1050H MOVX DPTR, A 作业分析 11110000 00001111 1100 0011 00111100 00111111 0000 1100 (1205H) (1507H) SWAP后 第 3 章 MCS - 51单片机指令系统 5. 将外存中1205H单元中的内容与1507H单元中的内容的 高4位交换,并存入1050H单元。 法2: MOV R0, #30H MOV DPTR, #1205H MOVX A, DPTR ; MOV R0, A ; (30H) = (1205H) MOV DPTR, #1507H MOVX A, DPTR ; (A) = (1507H) XCHD A, R0 XCH A, R0 ; (A)=(30H) MOV DPTR, #1050H MOVX DPTR, A 作业分析 第 3 章 MCS - 51单片机指令系统 上机调试 指令 ADD A, A 是否为合法指令? 执行指令 MOVX A,Ri 时, 存储单元的地 址如何构成 ? 执行指令 MOV R3, #25H 后,如何察看指令 执行的结果? 指令上机 第 3 章 MCS - 51单片机指令系统 表 3.1 数据传送类指令一览表 98幅 第 3 章 MCS - 51单片机指令系统 第 3 章 MCS - 51单片机指令系统 3.3.2 算术运算类指令 P57 1. 算术运算类指令特点 对 8 位无符号数直接预算; 借助 OF 标志进行带符号二进制整数进行加减运算; 利用 CF 标志可实现多字节加减运算; 借助 AF 标志可对运算结果进行压缩 BCD 码修正; 影响标志位 CY、AC、OV (INC、DEC 指令除外) 包括:(1)加法指令 (2)减法指令 (3)乘法指令 (4)除法指令 第 3 章 MCS - 51单片机指令系统 2、 加法指令 (1) 不带进位的加法指令 ADD A, Rn ADD A, direct ADD A, Ri ADD A, data 算术运算 第 3 章 MCS - 51单片机指令系统 (2) 带进位加法指令 ADDC A, Rn ADDC A, direct ADDC A, Ri ADDC A, data 指令功能与普通加法指令类似, 唯一的不同之处是, 在执行 加法时, 还要将上一次进位标志Cy的内容也一起加进去, 对 于标志位的影响也与普通加法指令相同。 第 3 章 MCS - 51单片机指令系统 (3) 加 1 指令 INC A INC Rn INC direct INC Ri INC DPTR 指令功能:将指令中所指出操作数的内容加 1。 不影响任何标志。 注意: 操作数不能是立即数。 第 3 章 MCS - 51单片机指令系统 (4). 十进制调整指令 DA A 指令功能: 对累加器A内容进行十进制调整; 使累加器A中的内容调整为二位压缩型 BCD码。 它只能跟在加法指令 ( ADD、ADC、INC ) 之后; 其结果不影响溢出标志位。 例3-24 有两个 BCD数,A = 56 , R3=67H,求其和。 ADD A, R3 DAA A = 01010110B R3=01100111B A =10111101B A =10111101B 01100110B 100100011B CY 第 3 章 MCS - 51单片机指令系统 什麽指令的执行影响标志位? 标志位的含义是什麽? 执行加法和减法指令时,两个操作数可以是有符号数 或无符号数,但计算机总按有符号数预算产生标志位 。 如 MOV A, #5AH MOV R5,#6BH ADD A, R5 注意指令执行时对标志位的影响 第 3 章 MCS - 51单片机指令系统 3、 减法指令 (1) 带进位减法指令 SUBB A, Rn SUBB A, direct SUBB A, Ri SUBB A, data 指令功能: 将累加器A的内容与第二操作数及进位标志相减, 结果送回到累加器A中。 注意:若要进行不带借位的减法操作, 则必须先将Cy清“0”。 算术运算 第 3 章 MCS - 51单片机指令系统 (2) 减1指令 DEC A DEC Rn DEC direct DEC Ri 指令功能: 操作数内容减 1。 不影响任何标志。 注意 操作数不能是立即数 DEC DPTR 第 3 章 MCS - 51单片机指令系统 例3-25 已知 A=0DBH,R1=73H,CY=1 执行指令: SUBB A,R1 补充 计算 2400H 单元的内容与2500H 单元内容之积,并存入2400H及 2401H 单元。 源程序:MOV DPTR,#2400H MOVX A, DPTR MOV B,A MOV P2,#25H MOV R0,#00H MOVX A, R0 MUL AB MOVX DPTR,A XCH A, B INC DPTR MOVX DPTR,A 逻辑运算指令 第 3 章 MCS - 51单片机指令系统 4、 乘法指令 MUL AB 功能: A 的内容与寄存器 B 的内容相 乘 乘积的 低 8 位A, 高 8 位B。 乘积超过 0FFH, 则 OV 置 “1”, 否则 OV 清 “0” 。 进位标志 Cy 总是被清 “0”。 算术运算 第 3 章 MCS - 51单片机指令系统 5、除法指令 DIV AB 功能: 将 A 的内容除以 B 的 8 位无符号整数, 商 A, 余数 B 指令执行后 Cy = 0 若 B = 0, 则 OV 置 1 算术运算 补充题 第 3 章 MCS - 51单片机指令系统 算术运算指令 第 3 章 MCS - 51单片机指令系统 算术运算指令表 第 3 章 MCS - 51单片机指令系统 影响标志位的指令 第 3 章 MCS - 51单片机指令系统 算术运算影响标志位的指令 第 3 章 MCS - 51单片机指令系统 3.3.3 逻辑运算类指令 特点:所有指令均对 8 位二进制数按位操作。 一般不影响标志位。 包括: (1)双操作数逻辑运算指令 (2)单操作数逻辑运算指令 (3)累加器 A 循环移位指令 第 3 章 MCS - 51单片机指令系统 1、双操作数逻辑运算指令 (1)逻辑“与”指令 ANL A, Rn ANL A, direct ANL A, Ri ANL A, data ANL direct, A ANL direct, data 功能: 将两个操作数的内容按位进行逻辑与操作, 将结果送回目的操作数的单元中。 逻辑运算 第 3 章 MCS - 51单片机指令系统 (2) 逻辑“或”指令 ORL A, Rn ORL A, direct ORL A, Ri ORL A, data ORL direct, A ORL direct, data 功能: 将两个操作数的内容按位进行逻辑或操作, 结果送回目的操作数的单元中。 第 3 章 MCS - 51单片机指令系统 (3) 逻辑异或指令 XRL A, Rn XRL A, direct XRL A, Ri XRL A, data XRL direct, A XRL direct, data 指令功能: 将两个操作数的内容按位进行逻辑异或操作, 将结果送回到目的操作数的单元中。 第 3 章 MCS - 51单片机指令系统 说明: 凡目的操作数为 P0、P1、P2、P3 的指令,执 行指令都相当于 读入、改写、输出三种操作。 举例:AND P1,#F0H 第 3 章 MCS - 51单片机指令系统 2、 单操作数指令 (1)CLR A ; A 的内容清 “0” (2)CPL A ; A的内容按位取反 例3-31 对40H 单元内容求补。 MOV A,40H CPLA INCA MOV 40H,A 补充 对 40H、41H 单元中 的双字节数求补。 MOV A,40H CPLA MOV 40H,A MOV A,41H CPLA INC40H ADCA,0 MOV 41H,A 逻辑运算 第 3 章 MCS - 51单片机指令系统 3、累加器 A 循环移位指令 P62 (1 )累加器A 循环移位指令 RL A ; A的内容向左环移 1 位 RR A ; A的内容向右环移 1 位 (2)带进位位Cy的累加器A 循环移位指令 RLC A ; A的内容带进位向左环移 1 位 RRC A ; A的内容带进位向右环移 1 位 指令功能: 对A的内容进行逻辑操作。 除了带 CY 的移位指令外, 其它不影响Cy, AC, OV等标志。 注意 只有循环位移 第 3 章 MCS - 51单片机指令系统 逻辑运算指令表 第 3 章 MCS - 51单片机指令系统 上机(第5周) 拆字程序 把 8000H 单元的内容拆开,高位送 8001H 单元,低位 送 8002H 单元, 并将 8001H、8002H 单元的高 4 位清 。 思考:修改 8000H、8001H的内容重复执行, 观察结果。 2、已知: A = 83H,R0 = 17H, (17H)= 34H 要求:分析下列程序段执行后,A 的内容。 程序:ANL A, #17 ORL 17H,A XRL A, R0 CPL A 第 3 章 MCS - 51单片机指令系统 上机(第5周) 3、单字节乘法 设 (30H)= 4EH, (1000H)= 5DH 计算 (30H) * (1000H) (1000H) , 观察状态位 CF=?OF=? 4、计算 DPTR 1的结果。 5. 将外存1030H 、1031H单元中的双字节数 乘以2,并将所得积 存入原单元。 第 3 章 MCS - 51单片机指令系统 2、已知: A = 83H,R0 = 17H, (17H)= 34H 要求:分析下列程序段执行后,A 的内容 程序:ANL A, #17 ;83H11H=01H ORL 17H,A ; XRL A, R0 ;01H34H=35H CPL A ;A=0CAH 3、注意: 外存中的数据只有调入内存后才能进行处理; MUL 指令的应用: 操作数只能是 A 和 B 积在 A、B 中,可根据 OV 的状态决定对 B 内容的取 舍 处理结果要送存 上机(第5周)作业分析 第 3 章 MCS - 51单片机指令系统 4、注意: DEC DPTR 是非法指令; 多字节减运算要考虑字节间的借位; 运算结果送回原处。 5、分析: 先将外部 RAM 中的数据调入内存。 乘 2 的运算有多种作法: 法1:用 MUL AB 指令 法2:用 移位 指令 法3:用 加法 指令 从低位字节作起。 结果送存 上机(第5周)作业分析 第 3 章 MCS - 51单片机指令系统 上机(第5周)作业分析 程序 法1:MOVDPTR,#1030H MOVX A, DPTR;取低位字节数 MOV B, #2 MUL AB;(1030H) 2 MOVX DPTR , A;(1030H) = 低位积 MOV R5, B;高位积 R5 INCDPTR MOVX A, DPTR;取高位字节数 MOV B, #2 MUL AB ADD A, R5 MOVX DPTR , A ;(1031H)= 中位积 MOV A, B INC DPTR MOVX DPTR , A ;(1031H)= 高位积 SJMP $ 第 3 章 MCS - 51单片机指令系统 程序 法2: MOV DPTR,#1030H MOVX A, DPTR;取低位字节数 CLR C RLC A;低位字节乘 2 ;(C) 低字节进位位 MOVX DPTR , A;(1030H) 低 位积 INC DPTR MOVX A, DPTR;取低位字节数 RLC A;高位字节乘 2 MOVX DPTR , A;(1030H) 高 位积 ;(C) 高字节进位 INC DPTR MOV A,#0 JNC N Y:INC A N:MOVX DPTR , A;(1030H) 进 位 SJMP$ 上机(第5周)作业分析 第 3 章 MCS - 51单片机指令系统 程序 法3: MOV DPTR, #1030H MOVX A, DPTR;取低位字节数 MOV 20H, A ADD A, 20H; 低位字节数2 MOVX DPTR, A INC DPTR MOVX A, DPTR MOV 20H, A ADDC A, 20H; 高位字节数2 MOVX DPTR, A INC DPTR XRLA , A MOVACC.0 , C; MOVX DPTR, A; 存进位位 SJMP$ 上机(第5周)作业分析 129 第 3 章 MCS - 51单片机指令系统 上机 1.双字节无符号数加法 ( RR1 ) +()() 2.双字节无符号数相减 ()()(及 H) 4.双字节数乘以单字节数。 设:被乘数为16位无符号数,存放地址为 M1 和 M1+1, 乘数为 8 位无符号数,地址为 M2, 积存入 R2、R3、R4 中。 指令上机 第 3 章 MCS - 51单片机指令系统 上机 6. 双字节压缩 BCD 码加 设: R5、R4 为被加数,R3、R2为加数,和存R6、R5、R4 。 7.双字节数取补 设:双字节数在 R3、R2中, 要求:取补,结果存如内存单元 41H、42H 中。 第 3 章 MCS - 51单片机指令系统 上机 5. 分析:程序段的功能. 若程序执行前,(A)=0A8H, 程序执行后, (M1)、(M2)的值。 MOV B, #64H DIV AB MOV M1,A MOV A,#0AH XCH A,B SWAP A ADD AB MOV M2, A 第 3 章 MCS - 51单片机指令系统 包括: 1. 无条件转移指令 2. 条件转移指令 3. 子程序调用与返回指令 3.3.4 控制转移指令P51 第 3 章 MCS - 51单片机指令系统 1、 无条件转移指令 不受任何条件限制的转移指令 (1) 长跳转指令 (2) 绝对转移指令 (3) 相对转移指令(短转移指令) (4) 散转指令(间接长转移指令) 第 3 章 MCS - 51单片机指令系统 (1) 长跳转指令 LJMP addr16 三字节指令 目的地址直接出现在指令中 如: 0000H LJMP 3000H 则: 转移目标地址为 3000H 转移的目标地址可以在 64 KB程序存储 器地址空间的任何地方 。 16位地址常用标号表示。 第 3 章 MCS - 51单片机指令系统 (2)绝对转移指令 AJMP addr11 双字节指令 功能:2KB 范围内的无条件跳转指令, 执行时, 先将PC+2, 然后将 addr11 送入PC10PC0, 而 PC15PC11保持不变。 注意 目标地址与起跳点地址 必须在同一个2KB 存储区内 第 3 章 MCS - 51单片机指令系统 若 AJMP 指令的存放地址 PC 指令 取指前: 2300H AJMP 0FFH ;2字 节 取指后: 2302H = (PC)+2 = 0010001100000010B 目标地址: (PC)10 0 00011111111B (PC)15 11 = 00100 所以,转移地址为 20FFH 补充例题 第 3 章 MCS - 51单片机指令系统 (2)若AJMP指令的存放地址 PC 指令 2FFFH AJMP 0FFH ;2字节 取出指令后 3001H= 0011000000000001B =(PC ) 目标地址 = (PC)15 11 = 00110 (PC)10 0 00011111111B 所以,转移地址为 30FFH 讨论: 目标地址与源地址不在同一页内, 超出 2KB 范围 第 3 章 MCS - 51单片机指令系统 (3) 相对转移指令(短转移指令) SJMP rel 双字节指令 目的地址 = 源地址 + 2 + rel 如1: 2100H SJMP 5AH 则: 转移目的地址 = 2100H + 2 + 5AH = 215CH 如2: 2100H SJMP F0H 则: 转移目的地址 = 2100H + 2 + 0FF0H = 20F2H 第 3 章 MCS - 51单片机指令系统 如3:SJMP 0FEH 则:目标地址等于源地址; 造成单指令无限循环,进入等待状态; 可表示为 HERE:SJMP HERE 或 HERE:SJMP $ 转移范围: -128+127 指令中给出的是相对转移地址, 当指令修改时 , 只要相对地址不变,该指令不必改变。 第 3 章 MCS - 51单片机指令系统 例3-32 在程序存储器 0100H 单元开始存储下列程序段。 分析标号 LOOP 的地址是怎样形成的, 计算 SJMP 的偏移地址 rel。 P51 0100H SJMP LOOP 0102H MOV A,#10H 0130H ADD A,R0 0131H LOOP: MOV A, #40H Rel = 目的地址 源地址 = (0131H 0100H)- 2 = 2FH 第 3 章 MCS - 51单片机指令系统 (4) 散转指令(间接长转移指令) JMP A+DPTR 双字节指令 执行指令时, 把 A 中的 8 位无符号数与数据指针中 的 16 位数相加, 结果作为下条指令的地址送入PC。 不改变 A 和 DPTR 的内容, 不影响标志位。 64KB 内无条件转移。 应用:利用该指令能实现程序的散转。 说明: 转移地址在程序执行过程中可以改变; 第 3 章 MCS - 51单片机指令系统 如 MOV A, #DATA MOV DPTR,#TABEL CLR C ; RLC A JMP A+DPTR : TABEL: AJMP TAB1 AJMP TAB2 AJMP TAB3 : A的内容乘以2 说明 以上程序可依据 A 的内容进行多分支操作; A 的内容必须是偶数。 (因为 AJMP TABL 是 2 字节指令) 第 3 章 MCS - 51单片机指令系统 编写 4 段程序,用 JMP A+DPTR 指令实现散转。 程序 将内部 RAM 30H 单元的内容与 31H 单元的内容相加。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论