片内数据存储器 片内数据数据存储器是最灵活的地址空间它在 物理上又分成两个独立的功能不同的区。 片内数据随机存取储存器区:对80C51型单片 微机,为地址空间的低128B;对80C52型单 片微机,为地址空间的0~256B。 特殊功能寄存器SFR区:地址空间的高128 B。 片内RAM
片内数据存储器 片内数据数据存储器是最灵活的地址空间它在 物理上又分成两个独立的功能不同的区。 ·片内数据随机存取储存器区:对 80C51型单片 微机,为地址空间的低 128 B ; 对 80C52 型单 片微机,为地址空间的 0 ~ 256B。 ·特殊功能寄存器 SFR 区:地址空间的高 128 B 。 片内RAM
片内数据随机存取储存器区(作寄存器区) 在片内数据随机存取储存器区,根据不同的寻址方式又可分为以下 几个区域: ①工作寄存器区:这是一个用寄存器直接寻址的区域,指令的数 量最多,均为单周期指令,执行的速度最快。 从图中可知,其中片内数据随机存取储存器区的(00H~1FH) 共32个单元,是4个通用工作寄存器组,每个组包含8个8位寄 存器,编号为R0~R7 Rs(PsW4)Rs0(PsW.3)组号地址单元 0 0组 00H-0ZH 0011 1组 08H OFH 0 2组 10H~17H 组18H~1FH片内RAM
片内数据随机存取储存器区(工作寄存器区) 在片内数据随机存取储存器区,根据不同的寻址方式又可分为以下 几个区域: ①工作寄存器区:这是一个用寄存器直接寻址的区域,指令的数 量最多,均为单周期指令,执行的速度最快。 从图中可知,其中片内数据随机存取储存器区的 ( 00H~ 1FH), 共 32 个单元,是 4 个通用工作寄存器组,每个组包含 8 个 8 位寄 存器,编号为 R0 ~ R7 。 片内RAM RS1(PSW.4) RS0 (PSW.3) 组号 地址单元 0 0 0 组 00H~ 07H 0 1 1 组 08H~ 0FH 1 0 2 组 10H~ 17H 1 1 3 组 18H~ 1FH
片内数据随机存取储存器区 (位寻址区及字节寻址区) ②位寻址区:从片内数据随机存取储存器区的20H~2FH) 的16个字节单元,共包含128位,是可位寻址的随机存 取储存器区,其中每一位都可视作软件触发器,由位操 作指令处理。这16个字节单元,既可进行字节寻址,又 可位寻址。字节地址与位地址之间的关系见表2—1。 ③字节寻址区:从片内数据随机存取储存器区的48~127 30H~7FH),共80个字节单元,可以采用直接字节 寻址的方法访问。 位地址和字节地址的区别:位地址只能用位操作指令。 位地址中只能存一位数,取值范围只有0、1两个数,字 节地址能存8位数,取值范围是00H~0FFH共256个数 表1
片内数据随机存取储存器区 (位寻址区及字节寻址区) ②位寻址区:从片内数据随机存取储存器区的 20H~ 2FH) 的 16 个字节单元,共包含 128 位,是可位寻址的随机存 取储存器区,其中每一位都可视作软件触发器,由位操 作指令处理。这16 个字节单元,既可进行字节寻址,又 可位寻址。字节地址与位地址之间的关系见表2 - 1 。 ③字节寻址区:从片内数据随机存取储存器区的48 ~ 127 ( 30H~ 7FH),共 80 个字节单元,可以采用直接字节 寻址的方法访问。 位地址和字节地址的区别:位地址只能用位操作指令。 位地址中只能存一位数,取值范围只有0、1两个数,字 节地址能存8位数,取值范围是00H~0FFH共256个数 表2-1
片内数据随机存取储存器区 (堆栈区及堆栈指示器) ④堆栈区及堆栈指示器:堆栈是在片内数据随机存取储存 器区中,数据先进后出或后进先出的区域。堆栈指示器 (堆栈指针)SP存放当前的堆栈栈顶所指存储单元地址 的一个8位寄存器。系统复位时SP)=07H,也可用指令 MOV SP,#data(data一般为30I~7FH)。 堆栈共有两种操作:进栈和出栈,不论是数据进栈还是数 据出栈,都是对栈顶单元进行的,即对栈顶单元的写和 读操作。进栈时SP的内容是增加的;出栈时SP的内容是 减少的。 堆栈是为子程序调用和中断操作而设立的其具体功能有两 个:保护断点和保护现场
片内数据随机存取储存器区 (堆栈区及堆栈指示器) ④堆栈区及堆栈指示器:堆栈是在片内数据随机存取储存 器区中,数据先进后出或后进先出的区域。堆栈指示器 (堆栈指针)SP存放当前的堆栈栈顶所指存储单元地址 的一个 8位寄存器。系统复位时(SP)=07H,也可用指令 MOV SP,#data(data一般为30H~7FH)。 堆栈共有两种操作:进栈和出栈,不论是数据进栈还是数 据出栈,都是对栈顶单元进行的,即对栈顶单元的写和 读操作。进栈时SP的内容是增加的;出栈时SP的内容是 减少的。 堆栈是为子程序调用和中断操作而设立的其具体功能有两 个:保护断点和保护现场
堆栈的概念和使用二 设R2=04H,SP=07H DE2: PUSH R2 (SP)=08H sP)=08H(SP)=08H(SP)=08H (08H)=04H (08H)=03H(O8H)=02H(O8H)=01H DE3: DNZR2DB3R2从04H开始R2从03H开始R2从02H开始R2从01H开始 减1循环4次减1循环3次减1循环2次减1循环1次 POP R2 栈顶弹出给R2栈顶弹出给R2栈顶弹出给R2栈顶弹出给R2 (R2)=04H(R2)=03H(R2)=02H(R2)=01H (SP)=07H(SP)=07H(SP)=07H(SP)=07H DJNZ R2,DE2 R2减1=03HR2减1=02HR2减1=01HR2减1=0OH 转移到DE2转移到DE2转移到DE2循环结束 RET 子程序返回 共循环4+3+2+1=10次 若不用堆栈技术,则程序将十分冗长 2 1.asm
堆栈的概念和使用二 DE2: PUSH R2 DE3: DJNZ R2,DE3 POP R2 DJNZ R2,DE2 RET 设R2=04H,SP=07H (SP)=08H (08H)=04H R2从04H开始 减1循环4次 栈顶弹出给R2 (R2)=04H (SP)=07H R2减1=03H 转移到DE2 (SP)=08H (08H)=03H (SP)=08H (08H)=02H (SP)=08H (08H)=01H R2从03H开始 减1循环3次 R2从02H开始 减1循环2次 R2从01H开始 减1循环1次 栈顶弹出给R2 (R2)=03H (SP)=07H 栈顶弹出给R2 (R2)=02H (SP)=07H 栈顶弹出给R2 (R2)=01H (SP)=07H R2减1=02H 转移到DE2 R2减1=01H 转移到DE2 R2减1=00H 循环结束 共循环4+3+2+1=10次 若不用堆栈技术,则程序将十分冗长 子程序返回 2_1.asm