指示累加器A中1的个数。如果A中有奇数个1,则置P=1;否则, 置P=0。 DPTR---16位的寄存器,分为两个寄存器并占用两个字节单元, 高位字节寄存器用DPH表示,低位字节用DPL表示。DPTR既可以作 为一个16位的寄存器处理,也可以作为两个独立的8位寄存器来使 用。 堆栈-一一在计算机内存中开辟出的一块遵守“后进先出”或“先 进后出"”规则的特殊区域。对MCS-51单片机,其堆栈区域位于30H7FH 中。堆栈由8位的特殊功能寄存器SP自动管理,它始终存放堆栈顶 部字节单元的地址。堆栈的操作有两中方式:压栈(PUSH),即将数 据压入堆栈和出栈(POP),即将数据从堆栈中弹出。输入压栈时,SP 首先自动加1,然后数据压入SP内容(值)指示的字节单元,而数 据出栈时,SP内容(值)指示的字节单元中的数据弹出,然后SP的 值自动减1。MCS-51的这种堆栈结构属于向上生长型的堆栈,存取信 息必需按照“后进先出”或“先进后出”的规则进行。 一般在程序中断或程序调用时,CPU利用堆栈自动把程序返回地 址压栈存储,同时把中断或调用程序的入口地址赋给P℃,而返回时 (执行RETI或RET指令),CPU自动把栈中存储的程序返回地址弹出 赋给PC,让其回原处继续执行程序。堆栈的另外一个用途,CPU利用 堆栈作一些特殊数据及寄存器内容的保护。系统复位时,S初试化 值为07H。 2
12 指示累加器 A 中 1 的个数。如果 A 中有奇数个 1,则置 P=1;否则, 置 P=0。 DPTR----16 位的寄存器,分为两个寄存器并占用两个字节单元, 高位字节寄存器用 DPH 表示,低位字节用 DPL 表示。DPTR 既可以作 为一个 16 位的寄存器处理,也可以作为两个独立的 8 位寄存器来使 用。 堆栈----在计算机内存中开辟出的一块遵守“后进先出”或“先 进后出”规则的特殊区域。对 MCS-51 单片机,其堆栈区域位于 30H~7FH 中。堆栈由 8 位的特殊功能寄存器 SP 自动管理,它始终存放堆栈顶 部字节单元的地址。堆栈的操作有两中方式:压栈(PUSH),即将数 据压入堆栈和出栈(POP),即将数据从堆栈中弹出。输入压栈时,SP 首先自动加 1,然后数据压入 SP 内容(值)指示的字节单元,而数 据出栈时,SP 内容(值)指示的字节单元中的数据弹出,然后 SP 的 值自动减 1。MCS-51 的这种堆栈结构属于向上生长型的堆栈,存取信 息必需按照“后进先出”或“先进后出”的规则进行。 一般在程序中断或程序调用时,CPU 利用堆栈自动把程序返回地 址压栈存储,同时把中断或调用程序的入口地址赋给 PC,而返回时 (执行 RETI 或 RET 指令),CPU 自动把栈中存储的程序返回地址弹出 赋给 PC,让其回原处继续执行程序。堆栈的另外一个用途,CPU 利用 堆栈作一些特殊数据及寄存器内容的保护。系统复位时,SP 初试化 值为 07H
作业一: 1.8051单片机芯片内包含哪些主要逻辑 部件? 2.805 1存储器分为哪几个地址空间?如 何区别不同空间寻址? 3.简述直接位寻址的空间分配,片内 RAM中包含哪些可位寻址单元? 4.单片机EA引脚有何功能? 5.片内RAM的低128B单元划分为哪三 个主要区域?各区域主要功能是什么? 6.开机复位后,CPU使用的8个工作寄存 器的地址是什么?如何改变工作寄存器 的地址? 7.位地址与字节单元地址7CH如何区别? 位地址7CH位于片内RAM中的什么 地址的单元? 8.什么是堆栈?堆栈的作用是什么?8051 堆栈的容量最大为多少? 13
13 作业一: 1. 8051 单片机芯片内包含哪些主要逻辑 部件? 2. 8051 存储器分为哪几个地址空间?如 何区别不同空间寻址? 3. 简述直接位寻址的空间分配,片内 RAM 中包含哪些可位寻址单元? 4. 单片机 EA 引脚有何功能? 5. 片内 RAM 的低 128B 单元划分为哪三 个主要区域?各区域主要功能是什么? 6. 开机复位后,CPU 使用的 8 个工作寄存 器的地址是什么?如何改变工作寄存器 的地址? 7. 位地址与字节单元地址 7CH 如何区别? 位地址 7CH 位于片内 RAM 中的什么 地址的单元? 8. 什么是堆栈?堆栈的作用是什么?8051 堆栈的容量最大为多少?
第三章 MCS-51指令系统 3.1寻址方式 单片机的功能是从外部接收信息,并在CPU中进行加工、处理, 然后再将计算结果送回外部。要完成上述一系列的操作,就要提供一 套具有特定功能的命令,这种操作命令称为指令。全体指令的集合, 称为指令系统。 指令格式: [标号:]操作码[目的操作数][,源操作数][;注释] 方扩号-一表示该项可有可无。 标号--用户设定的符号,它实际代表该指令所在的地址。标号 以字母开头。 操作码-一-本条指令完成什么样的功能。 目的操作数一-一提供操作的对象,并指出一个目标地址,表示操 作结果存放的地址。 源操作数-一提供一个源地址,表示操作的对象或操作数来自何 处。 注释-一-“:”号后的文字。为提高程序的可读性而增加的注释。 指令中常用的符号 A---累加器ACC: B--一辅助寄存器: C----进(借)位标志位,在位操作指令中作为累加器使用: direct----直接地址: 14
14 第三章 MCS-51 指令系统 3.1 寻址方式 单片机的功能是从外部接收信息,并在 CPU 中进行加工、处理, 然后再将计算结果送回外部。要完成上述一系列的操作,就要提供一 套具有特定功能的命令,这种操作命令称为指令。全体指令的集合, 称为指令系统。 指令格式: [标号:]操作码 [目的操作数][,源操作数][;注释] 方扩号---表示该项可有可无。 标号----用户设定的符号,它实际代表该指令所在的地址。标号 以字母开头。 操作码----本条指令完成什么样的功能。 目的操作数----提供操作的对象,并指出一个目标地址,表示操 作结果存放的地址。 源操作数----提供一个源地址,表示操作的对象或操作数来自何 处。 注释----“;”号后的文字。为提高程序的可读性而增加的注释。 指令中常用的符号 A----累加器 ACC; B----辅助寄存器; C----进(借)位标志位,在位操作指令中作为累加器使用; direct----直接地址;
bit----位地址,内部RAM中的可寻址位和SFR中的可寻址位。 #data----8位常数; #datal6----16位常数: @----间接寻址: re1---8位带符号偏移量,-126127: Rn----8个工作寄存器: i--可作为地址寄存器的工作寄存器和。(X)--X寄存器: ((X))--由X寄存器内容寻址的存储单元内容; →--数据的传送方向: 寻址方式--一寻找并确定参与操作的数的真正地址的方式。 MCS-51单片机共有七中寻址方式。 1.立即寻址 立即寻址也称为立即数寻址,它是指在指令操作数域直接给出参 与运算的操作数。 例:MOVA,#70h 2.直接寻址 指令操作数域给出的是参加运算的操作数地址。MCS-51单片机 中,直接地址只能用来表示特殊功能寄存器、内部数据存储器和位地 址空间。其中特殊功能寄存器和位地址空间只能用直接寻址方式访 问。 例:ANL70H,#48H: 70H单元的内容&立即数48H→70H单元
15 bit-----位地址,内部 RAM 中的可寻址位和 SFR 中的可寻址位。 #data----8 位常数; #data16----16 位常数; @----间接寻址; rel----8 位带符号偏移量,-126~127; Rn----8 个工作寄存器; Ri---可作为地址寄存器的工作寄存器和。(X)---X 寄存器; ((X))---由 X 寄存器内容寻址的存储单元内容; →---数据的传送方向; 寻址方式----寻找并确定参与操作的数的真正地址的方式。 MCS-51 单片机共有七中寻址方式。 1. 立即寻址 立即寻址也称为立即数寻址,它是指在指令操作数域直接给出参 与运算的操作数。 例:MOV A,#70h 2. 直接寻址 指令操作数域给出的是参加运算的操作数地址。MCS-51 单片机 中,直接地址只能用来表示特殊功能寄存器、内部数据存储器和位地 址空间。其中特殊功能寄存器和位地址空间只能用直接寻址方式访 问。 例:ANL 70H,#48H; 70H 单元的内容&立即数 48H→70H 单元
3.寄存器寻址 对选定的工作寄存器R7R0、累加器A、通用寄存器B、地址寄 存器和进位位C中的数进行操作。 例:INC RO: (R0)+1→R0 4.寄存器间接寻址 指令操作数给出的是存放操作数地址的寄存器。MCS-51单片机 中,可作为寄存器间接寻址的寄存器有工作寄存器RO、R1、堆栈指 示器SP和地址寄存器。在指令注记符中,用@表示间接。 例:ANLA,@R0;(RO))→A 5.相对寻址 将程序计数器P℃中的当前值与指令第二字节给出的数相加,其 结果作为转移指令的转移地址。转移地址称为转移目的地址,P℃中 的当前值称为基地址,指令第二字节给出的数值称为偏移量。由于目 的地址是相对P℃中的基地址而言,故这种寻址方式称为相对寻址。 偏移量为带符号的数,+127-128。 例:JC80H;C=1则跳转 若(PC)=20H:C=1,则执行JC80H后, (PC)=a0H. 6.变址寻址 指令操作数域指定一个存放变址基值的寄存器。变值寻址时,偏 移量与变址基值相加,其结果作为操作数的地址。在MCS-51单片机 中,变址寄存器有程序计数器PC和地址寄存器DPTR。 6
16 3. 寄存器寻址 对选定的工作寄存器 R7~R0、累加器 A、通用寄存器 B、地址寄 存器和进位位 C 中的数进行操作。 例:INC R0; (R0)+1→R0 4. 寄存器间接寻址 指令操作数给出的是存放操作数地址的寄存器。MCS-51 单片机 中,可作为寄存器间接寻址的寄存器有工作寄存器 R0、R1、堆栈指 示器 SP 和地址寄存器。在指令注记符中,用@表示间接。 例:ANL A,@R0 ; ((R0))→A 5. 相对寻址 将程序计数器 PC 中的当前值与指令第二字节给出的数相加,其 结果作为转移指令的转移地址。转移地址称为转移目的地址,PC 中 的当前值称为基地址,指令第二字节给出的数值称为偏移量。由于目 的地址是相对 PC 中的基地址而言,故这种寻址方式称为相对寻址。 偏移量为带符号的数,+127~-128。 例:JC 80H ;C=1 则跳转 若(PC)=20H;C=1,则执行 JC 80H 后, (PC)=a0H. 6. 变址寻址 指令操作数域指定一个存放变址基值的寄存器。变值寻址时,偏 移量与变址基值相加,其结果作为操作数的地址。在 MCS-51 单片机 中,变址寄存器有程序计数器 PC 和地址寄存器 DPTR