单片机原理与接口技术复习重点.ppt

上传人:本田雅阁 文档编号:3568625 上传时间:2019-09-12 格式:PPT 页数:216 大小:5.68MB
返回 下载 相关 举报
单片机原理与接口技术复习重点.ppt_第1页
第1页 / 共216页
单片机原理与接口技术复习重点.ppt_第2页
第2页 / 共216页
单片机原理与接口技术复习重点.ppt_第3页
第3页 / 共216页
单片机原理与接口技术复习重点.ppt_第4页
第4页 / 共216页
单片机原理与接口技术复习重点.ppt_第5页
第5页 / 共216页
点击查看更多>>
资源描述

《单片机原理与接口技术复习重点.ppt》由会员分享,可在线阅读,更多相关《单片机原理与接口技术复习重点.ppt(216页珍藏版)》请在三一文库上搜索。

1、单片机原理及应用,试卷构成,1 选择题 1分*1515分 2 填空题 1分*1515分 3 阅读程序 5分4=20分 4 简单程序设计 10分2=20分 5 应用题 152=30分 试题范围: 课本相关理论知识与编程设计、实验、作业,第2章 MCS-51系列单片机的结构和原理,1掌握单片机的基本结构(CPU、ROM、RAM、 定时/计数器、并行I/O、全双工串行口、中断系统、 总线结构)。 2掌握特殊功能寄存器SFR的功能、作用及它们复位后的状态。 3掌握存储器的组织结构(分ROM和RAM)及对应的寻址方式。 4了解单片机的工作时钟与时序。,2.1 单片机内部组成及引脚功能,MCS-51系列单

2、片机有3种类型的产品:8051、8751和8031,其主要差别:8051内设有4KB的掩膜ROM;8751内设有4KB的EPROM;8031内没有ROM。,51子系列的主要特点为: 8位CPU。 片内带振荡器,频率范围1.212MHZ。 片内带256字节的数据存储器。 片内带4K的程序存储器。 程序存储器的寻址空间为64K字节。 片外数据存储器的寻址空间内64K字节。 128个用户位寻址空间。,2.1.1 单片机内部结构,1.微处理器 即CPU,包括运算器和控制器。 (1)运算器ALU:进行算术或逻辑运算部件; (2)控制器:产生各种控制信号,控制计算机工作的部件。,2.内部数据存储器 共有2

3、56B(00HFFH),其中低128B(00H7FH)用户使用;高128B(80HFFH)为专用寄存器。 3.内部程序存储器 8051有4KB(0000H0FFFH)ROM,用于存放程序、原始数据或表格常数。 4. 定时器/计数器 2个16位定时/计数器。 5.并行I/O口 共有4个8位I/O口(P1、P2、P3、P4)。 6.串行口 1个全双工的异步串行口,实现串行数据传送。 7. 中断控制系统 2个外中断、2个定时/计数中断和1个串行口中断。 8. 时钟电路 为单片机产生时钟脉冲序列,1.2MHz12MHz。,2.1.2 MCS-51的引脚功能,MCS-51单片机的40引脚双列直插式(DI

4、P)封装结构如下图。,表2-1 P3各口线的第二功能表,片外总线结构,1数据总线 数据总线宽度为8位,由P0口直接提供。 2地址总线 地址总线宽度为16位,寻址范围都为64KB。由P0口经地址锁存器提供低8位(A7A0),P2口提供高8位(A15A8)而形成。可对片外程序存储器和片外数据存储器寻址。 3控制总线 控制总线由第二功能状态下的P3口和4根独立的控制线RST、EA、ALE和PSEN组成。,2.3 存储器组织,2.3.1 MCS-51储存器特点,物理上分为:4个空间,即片内ROM、片外ROM 片内RAM、片外RAM 逻辑上分为:3个空间, 即程序内存(片内、外)统一编址 MOVC 数据

5、存储器(片内) MOV 数据存储器(片外) MOVX,2.3.2 片内数据存储器,1、片内数据存储器低128B (字节地址为00H7FH),(1)通用寄存器区00H1FH R0R7;单片机复位后自动选择工作寄存器0区。,8051的片内8位地址寻址,寻址范围为256个单元(00HFFH),(2)位寻址区20H2FH: 可进行128位的位寻址 (3)用户RAM区30H7FH: 用户RAM区,字节寻址,用作数据缓冲区以及堆栈区。,表2-3 8051RAM区位地址分配表,(1)位寻址区的访问 SETB 7FH ; 7FH1 等价于 SETB 2FH.7,两点说明:,(2)堆栈 堆栈是在内存RAM中开辟

6、的一个特定的存储区,专门用来暂存数据或断点地址,并按照“先进后出,后进先出”的原则进行操作。,栈底是固定的,栈顶会自动地向地址递增的方向变化。,系统复位后,SP被初始化位07H。,2、片内数据存储器高128B,表2-4 特殊功能寄存器SFR地址表,特殊功能寄存器(SFR)也称专用寄存器,专门用于控制、管理片内算术逻辑部件、并行I/O口、串行口、定时/计数器、中断系统等功能模块的工作。,(1)累加器ACC 累加器ACC(简称为A)为一个8位的寄存器,它是CPU中使用最频繁的寄存器,ALU进行运算时,数据绝大多数时候都来自于累加器ACC,运算结果也通常送回累加器ACC。,(3)堆栈指针SP 堆栈指

7、针SP是一个8位寄存器,用它存放栈顶的地址。 数据入栈时,先SP自动加1,后写入数据;数据出栈时,先读出数据,后SP自动减 1;SP始终指向栈顶地址。 复位时 SP=07H。但在程序设计时应将SP值初始化为30H以后,以免占用宝贵的寄存器区和位地址区。,(2)B寄存器 主要用于乘法和除法运算。,(4)程序状态字PSW 程序状态字PSW是一个8位的寄存器,它用于保存指令执行结果的状态,以供程序查询和判别。,Cy 进位/借位标志;位累加器。 AC 辅助进/借位标志;用于十进制调整。 F0 用户定义标志位;软件置位/清零。 OV 溢出标志; 硬件置位/清零。 P 奇偶标志;A中1的个数为奇数 P =

8、 1;否则 P = 0。 RS1、RS0 寄存器区选择控制位。 0 0 : 0区 R0 R7 0 1 : 1区 R0 R7 1 0 : 2区 R0 R7 1 1 : 3区 R0 R7,(5)数据指针DPTR DPTR为16位寄存器,也可按两个8位寄存器使用: DPH:DPTR高位字节 DPL:DPTR低位字节,(6)程序计数器PC PC用于存放下一条执行的指令地址,是一个16位专用寄存器,可寻址64KB。 PC有自动加1的功能,PC没有地址,不可寻址。 复位后,PC0000H。,67H=01100111B 58H=01011000B 0 1 1 0 0 1 1 1B + 0 1 0 1 1 0

9、 0 0B 1 0 1 1 1 1 1 1 =0BFH 则执行后累加器A中的值为0BFH,由相加过程得Cy=0、AC=0、OV=1、P=1。,例: 试分析下面指令执行后,累加器A,标志位Cy、AC、OV、P的值? MOV A,#67H ADD A,#58H,分析:第一条指令执行时把立即数67H送入累加器A,第二条指令执行时把累加器A中的立即数67H与立即数58H相加,结果回送到累加器A中。加法运算过程如下:,2.3.3 片内程序存储器,寻址范围:0000H FFFFH 容量64KB,即地址长度:16位,,寻址内部ROM;,,寻址外部ROM。,当PC值超过片内ROM容量时会自动转向外部存储器空间

10、。,作 用: 存放程序及程序运行时所需的常数。,0000H 系统复位,PC指向此处; 0003H 外部中断0入口 000BH T0溢出中断入口 0013H 外中断1入口 001BH T1溢出中断入口 0023H 串口中断入口,1. P0 口(P0.0P0.7,3932 脚)为三态双向口 (1)P0口作地址/数据复用总线使用(低8位) (2)P0口作通用I/O端口使用 (3)P0口线上的“读修改写”功能 2. P1 口(P1.0P1.7、18 脚)准双向口 3. P2 口(P2.0P2.7,2128 脚)准双口 (1)P2口作通用I/O端口使用 (2)P2口作地址总线口使用(高8位) 4. P3

11、 口(P3.0P3.7、1017 脚)双功口 (1)P3口作第一功能口(通用I/O端口)使用 (2)P3口作第二功能口使用,2.4 并行I/O端口,多路开关 1)功能:用于控制选通I/O方式还是地址/数据输出方式 控制信号为0,I/O状态; 控制信号为1,地址/数据总线 2)方式控制:由内部控制信号产生,1个输出锁存器 锁存,就是把信号暂存以维持某种电平状态,2个输入缓冲器(BUF1和BUF2) 将外设送来的数据暂时存放,I/O驱动器,2.4 并行I/O端口,共有4个8位双向I/O口,共32口。每位均有自己的锁存器,输出驱动器和输入缓冲器。,1,0,2.4.1 P0口位图内部结构,(1)通用输

12、出 此时必须外接上拉电阻。 (2)通用输入 读引脚:CPU在执行“MOV”类输入指令时(如:MOV A , P0),内部产生的操作信号是“读引脚”。P0.X引脚上的数据经过缓冲器2读入到内部总线。,1、P0口作通用I / O口使用,2、 P0口作地址/数据总线 不必外接上拉电阻。,读锁存器:CPU在执行“读-改-写”类输入指令时(如:ANL P0, A ),锁存器中的数据经过缓冲器1送到内部总线,然后与A的内容进行逻辑“与”,结果送回P0锁存器并出现在引脚。,注意:在读引脚时,必须先向电路中的锁存器写入1。 MOV P0, #0FFH MOV A, P0,P1口内部结构如下图所示 输出部分有内

13、部上拉电阻R*约为20K。 其他部分与P0端口使用相类似(读引脚时先写入1)。,写数据,读端口,MOV P1, #0FFH JNB P1.1, $ CLR P1.0,2.4.2 P1口内部结构,2.4.3 P2口内部结构,说明: 1、P2可以作为通用的I/O,也可以作为高8位地址输出。 2、当控制信号为1时 P2口输出地址信息, 此时单片机完成外部的取指操作或对外部数据存储器16位地址的读写操作。 3、当P2口作为普通I/O口使用时用法和P1口类似。,2.4.4 P3口内部结构,说明: 1、做普通端口使用时,第二功能应为“1”。,2、使用第二功能时,输出端口锁存器应为“1”。 3、第二功能(

14、) P3.0 TXD P3.4 T0 P3.1 RXD P3.5 T1 P3.2 INT0 P3.6 WR P3.3 INT1 P3.7 RD,2.5.2 时序定时单位,1、振荡周期:也称为节拍(用P表示),Tosc = 1/fosc 2、状态周期:用S表示,是振荡周期的2倍,分为P1和P2两个节拍。 3、机器周期:CPU完成一个基本操作所需要的时间。 执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。MCS-51单片机每12个振荡周期为一个机器周期。 4、执令周期:即从取指到执行完一条指令所需时间。,CPU执行一条指令的各个微操作所对应时间顺序称为CPU时序。,8031对片外RAM

15、和ROM的连接,(1)对片外ROM的读操作 MOVC A, A+DPTR (2)对片外RAM的写操作 MOVX DPTR, A,第一阶段是根据程序计数器PC到片外ROM中取指令码; 第二阶段是对累加器A和DPTR中16位地址进行运算,并把运算得到的和的地址去片外ROM取出所需要常数送到累加器A。,读片外ROM的指令时序: MOVC A, A+DPTR,读片外RAM的指令时序: MOVX A, DPTR,2.6 MCS-51 单片机工作方式,2.6.1 复位电路与复位方式,1、复位方式 在RST/VPD端持续给出2个机器周期的高电平就可以完成复位操作(一般复位正脉冲宽度大于10 ms)。,使单片

16、机内各寄存器的值变为初始状态的操作称为复位。,1、 8051 的引脚RST是_(IN脚还是OUT脚),当其端出现_电平时,8051进入复位状态;复位后PC=_。8051一直维持这个值,直到RST脚收到_电平, 8051脱离复位状态, 进入程序运行状态。 2、 MCS51单片机的CPU每取一个指令字节,立即使( ) A.堆栈指针SP自动加1 B.数据指针DPTR自动加1 C.程序计数器PC自动加1 D.累加器A自动加1 3MCS51单片机的主程序应该从哪个单元开始存放?为什么? 4、单片机上电后或复位后,工作寄存器R2是在( ) A、0区01H单元 B、0区02H单元 C、0区0BH单元 D、S

17、FR 58051复位后,PC与SP的值为( ) A、0000H,00H B、0000H,07H C、0003H,07H D、0800H,00H,知识总结,1、掌握寻址方式 2、掌握指令的含义和使用方法,做到程序注释清晰准确。,第三章 MCS-51单片机指令系统,3.1.3 寻址方式及寻址空间 寻址方式即寻找操作数存放单元的地址的方式,共7种方式。,1、立即寻址方式 所谓立即寻址,就是指令中直接给出参与操作的数据本身,即操作数出现在指令中,用“#”作前缀。 MOV A,#40H,FFH,ROM,74H,40H,SFR,FFH,A,FAH,RAM,FFH,06H,SFR,FFH,A,06H,32H

18、,2、直接寻址方式 所谓直接寻址,就是在指令中直接给出参与操作的数据所在内部RAM单元的地址。 MOV A,32H,直接寻址方式中可以访问: (1)内部数据存储器的低 128 个字节单元(00H7FH)。 (2)特殊功能寄存器, 特殊功能寄存器只能用直接寻址方式进行访问。 ,3、寄存器寻址方式 所谓寄存器寻址,就是操作数存放在指定的寄存器中。 MOV A, R7,FAH,RAM,FFH,22H,SFR,FFH,A,40H,R7,40H,规定:按字节访问特殊功能寄存器只能用直接寻址方式。 MOV A,P0 等同于 MOV A, 80H,寄存器寻址方式的寻址范围包括: 通用工作寄存器有4组共32个

19、通用工作寄存器,R0R7。 部分专用寄存器累加器A、B寄存器、DPTR寄存器。,4、寄存器间接寻址方式 指令中寄存器的内容作为操作数存放的地址,在工作上间接寻址寄存器前用“”表示前缀。 MOV A, R0,FAH,RAM,FFH,22H,SFR,FFH,A,40H,40H,22H,R0,寻址范围: (1)访问内部RAM低128个单元,其通用形式为Ri (2)对片外数据存储器的64K字节的间接寻址, 例如:MOVX A,DPTR (3)片外数据存储器的低256字节 例如:MOVX A,Ri,5、基址变址寄存器间接寻址方式 基地址寄存器 DPTR 或 PC 变址寄存器 A 该寻址方式常用于访问程序

20、存储器,查表。 如 MOVC A,A + DPTR,56H,ROM,DPTR,+ =,2042H,2030H,12H,A,地址,56H,56H,说明: (1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR,6、相对寻址 把指令中给定的相对偏移量与本指令所在单元地址(PC内容)相加得到真正有效的操作数所存放的地址。 例如(rel75H) 2000H: SJMP rel,PC=2000H,2,+ 75,PC=2077H,2077H,2002H,2001H,200,0H,8

21、0H,75H,ROM,7位寻址方式 MCS-51有位处理功能,可以对数据位进行操作,例如: MOV C,40H 是把位40H的值送到进位标志位C。,目标地址PC当前值 指令字节数相对偏移量rel,rel是8位带符号数,正数则程序向下,负数向上转移,在程序中一般用标号代替。 128B127B,Rn 工作寄存器R0 R7 Ri 间接寻址寄存器R0、R1 direct 直接地址,包括内部128B RAM单元地址、 21个SFR地址。 #data 8位常数; #data16 16位常数 addr11 11位目的地址; addr16 16位目的地址 rel 8位带符号的偏移地址 DPTR 16位外部数据

22、指针寄存器 bit 可直接位寻址的位; /bit 指定位求反 (x) x中的内容 (x) x中的地址中的内容 $ 当前指令存放的地址,3.1.5 指令系统标识符,下列各条指令其源操作数的寻址方式是什么? (1)MOV A,#48H (2)ADD A,60H (3)ANL A,R0 (4)XCHD A,R0 (5)MOVX A,DPTR (6)MOV A,R0 (7)MOVC A,A+DPTR (8)PUSH DPH,3.2 数据传送类指令,使用最频繁的一类指令,通用格式: MOV , 属“复制”性质,而不是“剪切” 此类指令不影响标志位, Cy、Ac和OV,只影响奇偶标志位P。,1以累加器为目

23、的操作数的指令 MOV A, Rn ; A (Rn) ,n=07 MOV A, Ri ; A (Ri),i=0,1 MOV A, direct ; A (direct) MOV A, #data ; A #data,3.2.1 内部RAM单元之间的数据传送,27H,38H,33H,ROM,E6H,FFH,FFH,FFH,A,SFR,FFH,R0,38H,27H,RAM,MOV A, R0 (E6H ),27H,40H,33H,ROM,E5H,40H,FFH,SFR,FFH,A,RAM,FFH,R5,40H,27H,MOV A ,40H ; (E5H 40H ),例3-1:假设(R0)30H,内

24、RAM中(30H)=0F7H,(68H)=66H,给出执行每条指令后A的内容。 MOV A, R0 MOV A, R0 MOV A, 68H MOV A, #18,;(A)=30H ;(A)=0F7H ;(A)=66H ;(A)=18,2. 以Rn为目的操作数的指令 MOV Rn, A ; Rn (A), n=07 MOV Rn, direct ; Rn (direct), n=07 MOV Rn, #data ; Rn #data, n=07 功能:是把源操作数的内容送入当前一组工作寄存器区的R0R7中的某一个寄存器。 例3-2:假设(A)2FH,内RAM(36H)0E6H,给出执行每条指令

25、后的Rn的内容。 MOV R1, A MOV R7, 36H MOV R4, #96H,3.以寄存器间接地址为目的操作数的指令 MOV Ri, A ; (Ri) (A) MOV Ri, direct ; (Ri) (direct) MOV Ri, #data ; (Ri) #data 功能:把源操作数所指定的数据送入R0或R1所指向的内RAM单元。,;(R1)=2FH ;(R7)=0E6H ;(R4)=96H,例3-3:假设(A)2FH, 内RAM(36H)0E6H, 外RAM(36H)78H, (R0)30H, (R1)32H, 给出执行每条指令后的结果。 MOV R1, A MOV R1,

26、36H MOV R0,#56,4.以直接地址direct为目的操作数的指令 MOV direct, A ; direct (A) MOV direct, Rn ; direct (Rn), n=07 MOV direct1,direct2; MOV direct, Ri ; direct (Ri) MOV direct, #data; direct #data 功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。,;(32H)=2FH ;(32H)=0E6H ;(30H)=38H,例3-4:用3种方法将内RAM中30H单元的内容传送到40H单元。 MOV 4

27、0H, 30H MOV R0, #30H MOV 40H, R0 MOV R0,#40H MOV R0, 30H,5. 以DPTR为目的操作数的传送指令 MOV DPTR, #data16 ; DPTR #data16 唯一的16位数据的传送指令 ,立即数的高8位送入DPH,立即数的低8位送入DPL。,40H,33H,ROM,87H,45H,FFH,33H,ROM,C0H,40H,FFH,SFR,FFH,SP,RAM,FFH,40H,50H,51H,3.2.2 堆栈操作指令 1) PUSH direct 2) POP direct,1、在MCS -51 单片机的内部RAM中, 可以设定一个先进

28、后出的区域, 称其为堆栈。 2、在特殊功能寄存器中有一个堆栈指针SP, 它指出栈顶的位置。 3、执行操作: SP (SP)1 (SP) direct 例 PUSH 40H(C0H),51H,50H,33H,FFH,40H,ROM,87H,45H,FFH,FFH,ROM,D0H,40H,FFH,SFR,FFH,SP,RAM,40H,50H,51H,出栈指令的功能是: 将SP所指出的内部RAM单元的内容送入由直接地址所指出的字节单元, 接着将堆栈指针SP的内容减 1。 执行操作:direct (SP) SP (SP)1 例 POP 40H(D0H),51H,50H,3.2.2 堆栈操作指令 1)

29、PUSH direct 2) POP direct,3.2.3 数据交换指令,1. 字节交换指令 XCH A, Rn (A) (Rn) XCH A, direct (A) (direct) XCH A, Ri (A) (Ri) 2. 半字节交换指令 XCHD A, Ri (A)03 (Ri)03 3. 累加器半字节交换指令 SWAP A (A)03 (A)47,例3-6:假设(A)=12H,(R0)=34H,内RAM(34H)=56H,分析每条指令执行结果。 XCH A, R0 XCHD A, R0 SWAP A,;(A)=56H ;(A)=16H ;(A)=21H,51H,33H,FFH,4

30、0H,ROM,87H,45H,FFH,FFH,ROM,CFH,FFH,FFH,SFR,FFH,A,RAM,R7,50H,51H,51H,33H,XCH A,R7( CFH),F2H,CDH,FFH,40H,ROM,87H,45H,FFH,FFH,ROM,C5H,32H,FFH,SFR,FFH,A,RAM,32H,50H,51H,CDH,F2H,XCH A,32H (C5H 32H),B6H,CDH,44H,40H,ROM,87H,45H,FFH,ROM,C7H,FFH,FFH,SFR,FFH,A,RAM,R1,44H,45H,CDH,B6H,XCH A, R1 (C7H),3.2.4 累加器A

31、与外部数据存储器传送指令,ROM,93H,FFH,01H,SFR,DPH,20H,DPL,33H,A,89H,FFH,2001H,89H,外RAM,1、读外部RAM或外部I/O口的指令 MOVX A, DPTR ; A(DPTR), 读外部RAM/IO MOVX A, Ri ; A (Ri), 读外部RAM/IO 2、写外部RAM或外部I/O口的指令 MOVX DPTR, A ;(DPTR) (A),写外部RAM/IO MOVX Ri, A ;(Ri) (A),写外部RAM/IO,3.2.5 累加器A与ROM的数据传送指令(查表指令),汇编指令格式 机器指令格式 操 作 MOVC A, A+D

32、PTR 93H PC (PC)+1, A (A)+(DPTR) MOVC A, A+PC 83H PC (PC)+1, A (A)+(PC),注意:前一条指令只能查找指令所在位置256B范围内的代码或常数,后一条指令查表范围可达整个程序存储器的64KB空间。,例3.7 在程序存储器中有一平方表,从2000H单元开始存放,如图所示,试通过查表指令查找出6的平方。,解:采用DPTR作为基址寄存器的查表程序比较简单,查表范围大,也容易理解。只要预先使用一条16位数据传送指令,把表的首地址2000H送入DPTR,然后进行查表就可以了。 相应的程序如下: MOV A,#6 ;设定备查的表项 MOV DP

33、TR,#2000H ;设置DPTR为表始址 MOVC A,A+DPTR ;将A的平方值查表后送A 如果需要查找其他数的平方,只需要将累加器A的内容(变址)改一下即可。,上述指令不影响任何标志位,但PSW的P位除外。 注意:MOV Rn,Rn MOV Ri, Ri MOV Rn, Ri MOV #data, A 等等指令是非法指令。,哇!好容易出错啊!,练习:写出完成下列功能的程序段,(1)将R0的内容送R6中 MOV A,R0 MOV R6,A,(2)将片内RAM 30H单元的内容送片外60H单元中 MOV A,30H MOV R0,#60H MOVX R0,A,(3)将片处RAM 1000H

34、单元的内容送片内20H单元中 MOV DPTR,#1000H MOVX A,DPTR MOV 20H,A,(4)将ROM 2000H单元的内容送片内RAM的30H单元中 MOV A,#0 MOV DPTR,#2000H MOVC A,A+DPTR MOV 30H,A,考试例题,已知(A)=83H,(R0)=17H,(17H)=34H,试写出80C51执行下列程序段后,A的内容(要求写出分析过程)。 ANL A,#17H ORL 17H,A XOL A, R0 CPL A,3.3 算术运算类指令,1、不带进位的加法指令 ADD A, Rn ; A (A)+(Rn) ,n=07 ADD A, Ri

35、 ; A (A)+(Ri),i=0,1 ADD A, direct ; A (A)+(direct) ADD A, #data ; A (A)+data 加法运算影响PSW运算标志位(Cy、AC、P及OV)的状态。,例3-9:设(A)0B3H,(R1)56H,分析指令“ADD A, R1”执行后的结果。,3.3.1 加法指令,运算结果为(A)?,(Cy)?(AC)?(OV)?,(P)?,溢出标志位OV的判断: CyCy11表示溢出。,2DH,ROM,87H,FFH,ROM,24H,3 0H,FFH,SFR,FFH,A,2DH,+,F3H,3 0H,B6H,44H,40H,RAM,R1,30H,

36、31H,B6H,2DH,ROM,87H,FFH,ROM,24H,3 0H,FFH,SFR,FFH,A,2DH,+,F3H,3 0H,B6H,44H,40H,RAM,R0,44H,45H,B6H,ADD A ,R0,ADD A ,30H,说明:Cy反映两个无符号数运算是有无进位的特征。 OV反映两个带符号数运算时有无溢出的特征。 将两数看作无符号还是带符号数,完全是事先约定的,编程者必须心中有数,并可随时查询标志,获得正确的结果。,2带进位加法指令 ADDC A, Rn ; A (A)+(Rn)+Cy,n=07 ADDC A, direct ; A (A)+(direct)+Cy ADDC A,

37、 Ri ; A (A)+(Ri)+Cy,i=0,1 ADDC A, #data ; A (A)+#data+Cy,CDH,ROM,87H,FFH,ROM,34H,3 0H,FFH,SFR,FFH,A,CDH,+,FDH,3 0H,0 0 0 1 1 0 0,FFH,PSW,1,+,1,FFH,FEH,0,ADDC A ,#30H,例3-11:设内部RAM 30H32H 有3个单字节的无符号数,求和并将和的低字节送入33H单元,高字节送入34H单元。 MOV A, 30H ADD A, 31H MOV 33H, A MOV A, #00H ADDC A, #00H MOV 34H, A MOV

38、A, 33H ADD A, 32H MOV 33H, A MOV A, 34H ADDC A, #00H MOV 34H, A,3加1指令 INC A INC Rn ;n=07 INC direct INC Ri ;i=0,1 INC DPTR,例3-12:设(R0)7EH, (DPTR)=10FEH,内RAM (7EH)=0FFH, (7FH)=38H, 分析下列指令顺序执行的情况。 INC R0 INC R0 INC R0 INC DPTR,B6H,35H,+,1,B7H,0,B6H,30H,RAM,34H,35H,30H,R0,B6H,INC 34H,4十进制调整指令 指令格式: DA

39、A 调整的方法是把结果加6调整,即所谓十进制调整修正。,修正方法应是: (a)累加器低4位大于9或辅助进位位Ac=1,则进行低4位加6修正。 (b)累加器高4位大于9或进位位Cy=1,则进行高4位加6修正。 (c)累加器高4位9或Cy=1,低4位9或AC,则高4位和低4位分别加6修正。,例3-13:编程实现对两个BCD码数56和67的加法运算,要求和仍为BCD数。 解: MOV A, #56H ADD A, #67H DA A,注意:1)DA指令只能跟在加法指令后面使用; 2)调整前参与运算的两数是BCD码数;,1带借位的减法指令 SUBB A, Rn ; A(A)(Rn)Cy,n=07 SU

40、BB A, direct ; A(A)(direct)Cy SUBB A, Ri ; A(A)(Ri)Cy, i=0,1 SUBB A, #data ; A(A)#dataCy 功能:从累加器A中的内容减去指定的变量和进位标志Cy的值,结果存在累加器A中。,3.3.2 减法指令,CDH,ROM,87H,FFH,ROM,34H,3 0H,FFH,SFR,FFH,A,CDH,-,9DH,3 0H,0 0 0 1 1 0 0,FFH,PSW,1,-,1,FFH,9CH,0,FFH,B6H,30H,RAM,34H,35H,B6H,30H,SUBB A ,35H,假设外部数据存储器1000H单元的内容为

41、28H,PSW的内容为82H,执行指令序列后,A的内容为 ,CY的内容为 ,AC的内容为 ,OV的内容为 。 MOV DPTR, #1000H MOVX A, DPTR MOV R6, #0FAH SUBB A, R6,2DH 1 1 0,2、减1指令 DEC A ;(A)-1A DEC Rn ;(Rn)-1Rn,n=07 DEC direct ;(direct)-1direct DEC Ri ;(Ri)-1(Ri),i=0,1 说明:减1指令不影响标志位。,CDH,ROM,87H,35H,ROM,04H,SFR,FFH,A,CDH,-,1,FFH,0 0 0 1 1 0 0,FFH,PSW,

42、1,1,FFH,CCH,0,B6H,30H,RAM,34H,35H,B6H,30H,R0,DEC A,例:试编程计算5678H-1234H的值,结果保存在R6、R5中。 解:减数和被减数都是16位二进制数,计算时要先进行低8位的减法,然后再进行高8位的减法,在进行低8位减法时,不需要考虑借位,所以要在减法指令之前将借位标志清0。程序如下: MOV A, #78H ;被减数低8位送累加器 CLR C ;清进位标志位Cy SUBB A, #34H ;减去减数 MOV R5, A ;保存低8位 MOV A, #56H ;被减数高8位送累加器 SUBB A, #12H ;减去减数 MOV R6, A

43、;保存高8位,3.3.3 乘法指令(无符号数) MUL AB ;A(A)(B)低字节 ;B(A)(B)高字节 注意:若乘积大于0FFH,则OV置1,否则清0(此时B的内容为0)。Cy总是被清0。该操作也影响标志位P。,02H,ROM,87H,FFH,ROM,24H,3 0H,FFH,00H,3 0H,06H,FFH,02H,SFR,A,B,06H,0CH,0CH,00H,0 0 0 1 1 0 0,PSW,0,1,3.3.4 除法指令 DIV AB ;A(A)/(B)(商) ;B (A)/(B)(余数) 注意:若除数(B)=00H,则结果无法确定,则OV置1。 Cy总是被清0。该操作也影响标志

44、位P。,3.4.1 单操作数逻辑操作指令 1、CLR A ;(A) 0 2、CPL A ; A中8位按位求反,3.4 逻辑运算类指令,SFR,A,1,1,0,1,0,1,0,0,1,1,0,1,0,1,0,0,3、累加器A循环左移指令 RL A,4、累加器A带进位循环左移指令 RLC A,0,0,SFR,A,1,1,0,1,0,1,0,1,1,0,1,0,1,0,0,PSW,1,0,1,0,1,0,0,1,0,1,0,1,0,0,5、累加器A循环右移指令 RR A,6、累加器A带进位循环右移指令 RRC A,0,0,PSW,1,0,1,0,1,0,0,0,1,0,1,0,0,SFR,A,1,1

45、,0,1,0,1,0,1,1,0,1,0,1,0,0,3.4.2 双操作数逻辑运算指令 1、逻辑“与”指令 ANL A,Rn ; (A) (A)(Rn),以下类同。 ANL A,direct ANL A,Ri ANL A,#data ANL direct,A ANL direct,#data,例、(P1)= 35H,使其高4位输出0,低4位不变。 解: ANL P1,#0FH 此做法称为“屏蔽”位。,2、逻辑“或”指令 ORL A,Rn ; (A) (A)(Rn),以下类同。 ORL A,direct ORL A,Ri ORL A,#data ORL direct,A ORL direct,#

46、data,例、将A中的低3位送入P1中,并且保持P1中高5位不变。 ANL A,#07H ANL P1,#0F8H ORL P1,A ;(P1)= P17P16P15P14P13A2A1A0 这称为“数位组合”。,3、逻辑“异或”指令 XRL A,Rn ; (A) (A)(Rn),以下类同。 XRL A,direct XRL A,Ri XRL A,#data XRL direct,A XRL direct,#data,例、设(P1)= 0B4H = 10110100B,执行: XRL P1,#00110001B 结果按# 0 0 1 1 0 0 0 1 取反,即: (P1)= 1 0 0 0 0 1 0 1 B = 85H 这称为“指定位取反”。,【问】写出完成下列功能的指令段。 1对累加器A中的1、3、5位清0,其余位不变 ANL A,#11010101B 2对累加器A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1