1、2.1 累加器和工作寄存器组累加器和工作寄存器组2.1.1 寄存器寄存器 8051 8051使用最频繁的一个使用最频繁的一个8 8位寄存器:用于所有的算位寄存器:用于所有的算术和逻辑运算指令,访问外部数据存储器或访问程序存术和逻辑运算指令,访问外部数据存储器或访问程序存储器中的查表指令。储器中的查表指令。一、寄存器一、寄存器A(累加器(累加器ACC,Accumulator)专为乘法和除法操作设置的专为乘法和除法操作设置的8 8位寄存器,常与累加位寄存器,常与累加器器A A配对使用,称为配对使用,称为ABAB寄存器对。寄存器对。二、寄存器二、寄存器B三、工作寄存器三、工作寄存器R0R7也是使用较
2、多的也是使用较多的8 8个个8 8位寄存器。常用来存放数据、地位寄存器。常用来存放数据、地址、运算的中间结果等,由于它们的功能及使用不做预址、运算的中间结果等,由于它们的功能及使用不做预先规定,因此也称为通用寄存器。先规定,因此也称为通用寄存器。MOV A,#23H;被加数;被加数23H23H送入送入A A,相当变量赋初值,相当变量赋初值 MOV R2,#47H;加数;加数47H47H送入送入R2R2,相当变量赋初值,相当变量赋初值 ADD A,R2;A=6AHA=6AH,两变量相加,和存入,两变量相加,和存入A A例例2-1 加法计算加法计算说明:说明:1 1、MOV MOV 目的操作数目的
3、操作数 ,源操作数源操作数 ;传送指令,将源操作数复制到目的操作数;传送指令,将源操作数复制到目的操作数指令执行后,目的操作数具有和源操作数同样的内容,其原来的数据被覆盖。指令执行后,目的操作数具有和源操作数同样的内容,其原来的数据被覆盖。2 2、ADD A ADD A,源操作数源操作数 ;加法指令;加法指令完成完成1 1字节的源操作数和累加器字节的源操作数和累加器A A中数据相加并把结果存放到累加器中数据相加并把结果存放到累加器A A的功能。源操的功能。源操作数在指令执行前后不发生变化,而累加器作数在指令执行前后不发生变化,而累加器A A在指令执行前存放的是一个加数,指在指令执行前存放的是一
4、个加数,指令执行后存放的是和。令执行后存放的是和。操作数的寻址方式:操作数的寻址方式:1 1、立即寻址:、立即寻址:前缀前缀“#”#”,8 8位立即数记作位立即数记作#data#data,是数值只能作为源操作数。,是数值只能作为源操作数。2 2、寄存器寻址:、寄存器寻址:操作数由寄存器单元提供,其内容可以改变,既可作源操作数也可以操作数由寄存器单元提供,其内容可以改变,既可作源操作数也可以做目的操作数。做目的操作数。A A和和R0R0R7R7均是寄存器寻址。均是寄存器寻址。MOV A,#25H ;被乘数;被乘数25H25H送入送入A A,相当变量赋初值,相当变量赋初值MOV B,#65H ;乘
5、数;乘数65H65H送入送入B B,相当变量赋初值,相当变量赋初值MUL AB ;A AB=0E99HB=0E99H,B=0EHB=0EH,A=99HA=99H例例2-2 乘法计算乘法计算说明:说明:1 1、MUL AB MUL AB ;乘法指令;乘法指令乘法时乘法时ABAB中放两个中放两个8 8位无符号乘数,执行后积的低位无符号乘数,执行后积的低8 8位存位存A A,积的高,积的高8 8位存位存B B。2 2、DIV AB DIV AB ;除法指令;除法指令除法时除法时A A中放一个中放一个8 8位被除数,位被除数,B B中放一个中放一个8 8位除数,均为无符号数;执行后商送入位除数,均为无
6、符号数;执行后商送入A A而余数送入而余数送入B B 操作数的寻址方式:操作数的寻址方式:操作数操作数ABAB寄存器对是寄存器寻址。寄存器对是寄存器寻址。2.1.2 工作寄存器和工作寄存器组工作寄存器和工作寄存器组 1 1、工作寄存器:、工作寄存器:指令当中指令当中R0R0R7R7这这8 8个工作寄存器是个工作寄存器是80518051的当前工作寄存器,的当前工作寄存器,80518051共有共有3232个工作寄存器。(在片内个工作寄存器。(在片内RAMRAM中占用了中占用了3232个单元(地址个单元(地址00H00H1FH1FH),称此区),称此区域为工作寄存器区)域为工作寄存器区)2 2、工作
7、寄存器组:、工作寄存器组:每每8 8个工作寄存器为个工作寄存器为1 1组,称之为工作寄存器组(组,称之为工作寄存器组(Register Register BanksBanks)。工作寄存器区分)。工作寄存器区分4 4组,组号依次为组,组号依次为0 0、1 1、2 2、3 3。3 3、当前工作寄存器组:当前工作寄存器组:每组都有工作寄存器每组都有工作寄存器R0R0R7R7,在任意时刻只能使用其中,在任意时刻只能使用其中的一组,这组正被使用的寄存器组就称为当前工作寄存器组。的一组,这组正被使用的寄存器组就称为当前工作寄存器组。4 4、切换、切换:用户可以通过指令改变程序状:用户可以通过指令改变程序
8、状态字寄存器态字寄存器PSWPSW中中RS1RS1(D4D4位)和位)和RS0RS0(D3D3位)位)的状态组合来切换工作寄存器组,使不同的的状态组合来切换工作寄存器组,使不同的程序段使用不同的寄存器组。这个功能为用程序段使用不同的寄存器组。这个功能为用户程序保护寄存器内容提供极大的方便,能户程序保护寄存器内容提供极大的方便,能实现快速现场保护功能实现快速现场保护功能,对于提高程序的效对于提高程序的效率和响应中断的速度是很有利的。率和响应中断的速度是很有利的。2.2 程序状态字寄存器(程序状态字寄存器(Program Status WordProgram Status Word)和其它的微处理
9、器一样,和其它的微处理器一样,80518051的的CPUCPU也包含表明运算结果状态的标志寄也包含表明运算结果状态的标志寄存器,这个标志寄存器在存器,这个标志寄存器在80518051中被称为程序状态字寄存器中被称为程序状态字寄存器PSWPSW,它是一个逐,它是一个逐位定义的位定义的8 8位寄存器。位寄存器。一、进位标志位一、进位标志位CYCY(PSW.7PSW.7):):在执行加(减)法运算过程中指示最高位在执行加(减)法运算过程中指示最高位D7D7有无进有无进(借)位。(借)位。二、辅助进位标志位二、辅助进位标志位ACAC(PSW.6PSW.6):):指示加法运算过程中指示加法运算过程中D3
10、D3位到位到D4D4位有无进位。用于位有无进位。用于BCDBCD码校正指令。码校正指令。三、溢出标志位三、溢出标志位OVOV(PSW.2PSW.2):):进位标志位进位标志位CYCY用于在无符号数算术运算中检查运算结用于在无符号数算术运算中检查运算结果是否超出果是否超出8 8位无符号数表示的数的范围(位无符号数表示的数的范围(0 0255255);溢出标志位只用于符号数算术运);溢出标志位只用于符号数算术运算中检查结果是否超出了算中检查结果是否超出了8 8位带符号数表示的数的范围(位带符号数表示的数的范围(128128127127)。当运算结果)。当运算结果超出了计算机最大所能表示的符号数范围
11、时,便产生溢出。此时的溢出标志位超出了计算机最大所能表示的符号数范围时,便产生溢出。此时的溢出标志位OVOV1 1。此外,在乘法运算中,此外,在乘法运算中,OV=1OV=1表示乘积超过表示乘积超过255255,需要从寄存器,需要从寄存器B B取出积的高字节;在除取出积的高字节;在除法运算中,法运算中,OV=1OV=1表示除数为表示除数为0 0。四、奇偶标志位四、奇偶标志位P P(PSW.0PSW.0):):指示指令执行后累加器指示指令执行后累加器A A中中1 1的个数的奇偶性。的个数的奇偶性。AC=1AC=1,因为,因为D3D3位向位向D4D4位产生进位位产生进位2.2 程序状态字寄存器(程序
12、状态字寄存器(Program Status WordProgram Status Word)例例2-3 2-3 分析下列加法指令对标志位的影响分析下列加法指令对标志位的影响MOV A,#38H ADD A,#2FH OV=CS CP=0OV=CS CP=0 因为符号位的进位因为符号位的进位CSCS及最高数值位的进位及最高数值位的进位CPCP的取值均为的取值均为0 0。CY=0CY=0,因为,因为D7D7位没有产生进位位没有产生进位P=1P=1,因为累加器因为累加器A A(保存的是和)中有奇数个(保存的是和)中有奇数个1 1(5 5个个1 1)。)。2.3 数据地址指针(数据地址指针(Data
13、PointerData Pointer)2.3.1 概述概述1616位的数据地址指针寄存器,指示数据地址的寄存器,简称数据指针。一般作为间位的数据地址指针寄存器,指示数据地址的寄存器,简称数据指针。一般作为间址寄存器访问片外数据存储器用。址寄存器访问片外数据存储器用。数据地址指针还可以与累加器数据地址指针还可以与累加器A A结合,访问程序存储器表格中的固定数据,作基址结合,访问程序存储器表格中的固定数据,作基址寄存器使用。寄存器使用。数据地址指针由两个数据地址指针由两个8 8位寄存器拼装而成,分别是高字节的位寄存器拼装而成,分别是高字节的DPHDPH(Data Pointer Data Poi
14、nter HighHigh)和低字节的)和低字节的DPLDPL(Data Pointer LowData Pointer Low)。)。2.3.2 操作操作1 1、赋值、赋值MOV DPTR,1000H ;给数据地址指针;给数据地址指针DPTRDPTR送入送入1616位立即数位立即数1000H1000H(按(按1616位寄存位寄存器操作),这是器操作),这是80518051唯一的唯一的1616位传送指令,其立即数在指令系统中以位传送指令,其立即数在指令系统中以#data16#data16描述。描述。或或 MOV DPH,10H;给;给DPHDPH送入高字节送入高字节8 8位立即数位立即数10H
15、10H(按(按8 8位寄存器操作)位寄存器操作)MOV DPL,00H;给;给DPLDPL送入低字节送入低字节8 8位立即数位立即数00H00H(按(按8 8位寄存器操作)位寄存器操作)2.3.2 操作操作2 2、自增、自增INC DPTR,1000H ;DPTR=DPTRDPTR=DPTR+1 +1 注意:注意:80518051中的数据地址指针寄存器中的数据地址指针寄存器DPTRDPTR只有加只有加1 1命令,没有减命令,没有减1 1命令。命令。数据指针自增操作的优点:数据指针自增操作的优点:由于在数据存储器中,数据一般是连续排放的,称数据块,相当高级语言中由于在数据存储器中,数据一般是连续
16、排放的,称数据块,相当高级语言中的数组。访问时先给出数据块首地址(地址指针赋值操作),即第一个数据的地址,的数组。访问时先给出数据块首地址(地址指针赋值操作),即第一个数据的地址,相当高级语言定义的数组名。然后通过数据指针的递增修改(地址指针自增操作),相当高级语言定义的数组名。然后通过数据指针的递增修改(地址指针自增操作),逐一访问数据块中的每一数据,相当高级语言指针变量的加逐一访问数据块中的每一数据,相当高级语言指针变量的加1 1的操作。这种访问模式的操作。这种访问模式比逐一给出每个数据的存储器的直接地址的访问模式节约存储空间,并且执行速度比逐一给出每个数据的存储器的直接地址的访问模式节约
17、存储空间,并且执行速度快。快。2.3 数据地址指针(数据地址指针(Data PointerData Pointer)2.4 单片机存储器组织单片机存储器组织物理上有物理上有4 4个存储空间个存储空间片内片内ROMROM片外片外ROMROM片内片内RAMRAM片外片外RAMRAM逻辑上(用户使用的角度)有逻辑上(用户使用的角度)有3 3个存储空间个存储空间片内外连续统一的片内外连续统一的ROMROM片内片内RAMRAM片外片外RAMRAM存储器哈佛配置存储器哈佛配置ROM、RAM片内集成、片外扩展片内集成、片外扩展2.4.1 程序存储器程序存储器一、片内外连续统一一、片内外连续统一ROMROM程
18、序存储器存放二进制的程序和常数,由程序存储器存放二进制的程序和常数,由PC(程序计数器、指令指针)寻址。(程序计数器、指令指针)寻址。统一:统一:1616位地址位地址的的ROMROM空间空间(0000H0FFFFH)片内片内ROMROM0000H0FFFH0000H0FFFH1000HFFFFH片外片外ROMROM4KB个单元个单元最多最多64KB个单元个单元EA 引脚:引脚:External Access Enable外部访问允许外部访问允许EA =0访问的是片外访问的是片外ROM 0000H0FFFHEA =1访问的是片内访问的是片内ROM 0000H0FFFH2.4.1 程序存储器程序存
19、储器一、片内外连续统一一、片内外连续统一ROMROM程序存储器存放二进制的程序和常数,由程序存储器存放二进制的程序和常数,由PC(程序计数器、指令指针)寻址。(程序计数器、指令指针)寻址。连续:连续:1616位地址位地址的的ROMROM空间空间(0000H0FFFFH)系统占用区系统占用区0003 H 0023H:为为ROM的系统占用区的系统占用区 不得被挪作它用不得被挪作它用0000 H:放第一条指令(转移指令):放第一条指令(转移指令)第二条指令放到第二条指令放到0030H单元以后单元以后 (跳过系统保留区)(跳过系统保留区)2.4.1 程序存储器程序存储器二、程序存储器操作二、程序存储器
20、操作(一)在程序存储器内定义数据表(一)在程序存储器内定义数据表1、字节定义伪指令、字节定义伪指令DB(Define Byte)功能:功能:从指定的地址单元开始,定义若干个字节存储单元的内容。从指定的地址单元开始,定义若干个字节存储单元的内容。标号:标号:DB 8位二进制数据表位二进制数据表2、字定义伪指令、字定义伪指令DW(Define Word)功能:功能:从指定的地址单元开始,定义若干个字(从指定的地址单元开始,定义若干个字(1616位)存储单元的内容。位)存储单元的内容。标号:标号:DW 16位二进制数据表位二进制数据表3、数据表首地址和项数、数据表首地址和项数数据表首地址是数据表存放
21、在数据表首地址是数据表存放在ROMROM的起始地址,常用的起始地址,常用ORGORG伪指令定义,以标号伪指令定义,以标号形式给出。形式给出。项数是此数据在数据表中的位置(以项数是此数据在数据表中的位置(以0 0起始计数)起始计数)2.4.1 程序存储器程序存储器二、程序存储器操作二、程序存储器操作(二)查表指令二)查表指令MOVC A,A+DPTR ;远程查表指令;远程查表指令MOVC A,A+PC ;近程查表指令;近程查表指令功能:功能:访问程序存储器(读操作),撷取表中常数(访问程序存储器(读操作),撷取表中常数(Move Code byteMove Code byte)说明:说明:由于数
22、据存储在程序存储器由于数据存储在程序存储器ROMROM中,它用指令中,它用指令MOVCMOVC表明是对程序存储器的表明是对程序存储器的访问,数据的传送是单向的。访问,数据的传送是单向的。两条指令都是以基址寄存器两条指令都是以基址寄存器DPTRDPTR或者或者PCPC的的1616位地址量为位地址量为基准,加上变址寄存器基准,加上变址寄存器A A的内容为偏移量,形成的的内容为偏移量,形成的1616位地址,就是存储在程序存储器位地址,就是存储在程序存储器中操作数(表格常数)的地址,从此地址取出操作数中操作数(表格常数)的地址,从此地址取出操作数存入累加器存入累加器A A,这种寻址方式称,这种寻址方式
23、称为变址寻址。使用中注意累加器为变址寻址。使用中注意累加器A A中的中的偏移量是偏移量是8 8位无符号数(位无符号数(0 0255255)。)。基址寄存器基址寄存器PCPC的表格只能放在该条查表指令后面的的表格只能放在该条查表指令后面的 256 256 个单元之中,表格的个单元之中,表格的大小受到限制,而且表格只能被一段程序所利用。大小受到限制,而且表格只能被一段程序所利用。基址寄存器基址寄存器DPTRDPTR的表格位置可以在的表格位置可以在 64 KB64 KB程序存储器中任意安排的程序存储器中任意安排的 256 256 个单个单元之中,并且一个表格可以为多个程序块所共用。元之中,并且一个表
24、格可以为多个程序块所共用。2.4.2 数据存储器数据存储器一、片内数据存储器一、片内数据存储器 是是8 8位地址的存储空间。保存数据、运算结果,做数据缓冲区等位地址的存储空间。保存数据、运算结果,做数据缓冲区等,用途广泛;用途广泛;使用频繁。按照侧重的功能有使用频繁。按照侧重的功能有4 4个功能分区:个功能分区:寄存器区寄存器区、位寻址区位寻址区、用户用户RAMRAM区区和和SFRSFR区区。51子系列子系列52子系列子系列片内片内RAM:低:低128B 00H7FHSFR区:区:80H0FFH片内片内RAM:全部:全部256B 00H0FFH SFR区:区:80H0FFH片内片内RAMRAM
25、SFRSFR区区地址地址地址地址工作寄存器区工作寄存器区位寻址区位寻址区用户用户RAM区区00H1FH20H2FH30H7FH80HFFH注意注意:SFRSFR区通常在片内区通常在片内RAMRAM介绍,不计入片内介绍,不计入片内RAMRAM容量。容量。80HFFH5252子系列子系列256B256B5151子系列子系列128B128BSFRSFR区区2.4.2 数据存储器数据存储器一、片内数据存储器一、片内数据存储器1、工作寄存器区(、工作寄存器区(00H1FH)有有4 4组组8 8个工作寄存器,占个工作寄存器,占3232个单元。当前工作寄存器组的选择由个单元。当前工作寄存器组的选择由PSWP
26、SW的的RS1RS1和和RS0RS0的位状态组合决定(缺省状态是的位状态组合决定(缺省状态是0 0组,即组,即RS1RS0=00RS1RS0=00)。此区域通常使用寄存器)。此区域通常使用寄存器寻址方式:例如寻址方式:例如MOV A,R0,此外还有其他两种寻址方式进行相同的操作。,此外还有其他两种寻址方式进行相同的操作。直接寻址直接寻址 MOV A,00H 将片内将片内RAMRAM的的00H00H单元数据传送到累加器单元数据传送到累加器A A中。操作数中。操作数00H00H的寻址方式称为直接寻址。直接寻址方式中的直接地址以的寻址方式称为直接寻址。直接寻址方式中的直接地址以RAMRAM单元地址的
27、形式给出,其范围单元地址的形式给出,其范围00H00H0FFHFFH,通常直接地址记,通常直接地址记为为directdirect。寄存器间接寻址寄存器间接寻址 MOV R0,#00H ;间址寄存器赋初值间址寄存器赋初值 MOV A,R0 是将工作寄存器是将工作寄存器R0R0中的内容作为地址,而将该地址中中的内容作为地址,而将该地址中的的数据传送到累加器数据传送到累加器A A中。执行完这条指令,累加器中。执行完这条指令,累加器A A中的值与工作寄存器中的值与工作寄存器R0R0中的值不中的值不同,而与以同,而与以R0R0内容为地址的片内内容为地址的片内RAMRAM中的值相同,操作数中的值相同,操作
28、数R0R0称为寄存器间接寻址;称为寄存器间接寻址;R0R0称作间址寄存器,也可以使用称作间址寄存器,也可以使用R1R1作为间址寄存器。通常记作作为间址寄存器。通常记作RiRi。2.4.2 数据存储器数据存储器一、片内数据存储器一、片内数据存储器2、位寻址区(、位寻址区(20H2FH)占占1616个字节单元(字节地址个字节单元(字节地址20H2FH),共),共16B16B8b8b128b128b。位地址(存储单元按位编址):位地址(存储单元按位编址):00H7FH双重功能区,既可以字节操作(直接寻址、寄存双重功能区,既可以字节操作(直接寻址、寄存器间接寻址)也可以位操作(位寻址)器间接寻址)也可
29、以位操作(位寻址)位寻址位寻址 MOV C,20H 位累加器位累加器C C是寄存器寻址,借用是寄存器寻址,借用PSWPSW中的进位位中的进位位CYCY,位累加器在位操作中使用频繁。此指令将片内,位累加器在位操作中使用频繁。此指令将片内RAMRAM的位地址为的位地址为20H20H单元数据传送到位累加器单元数据传送到位累加器C C中。操中。操作数作数20H20H的寻址方式称为位寻址。位寻址方式是在指的寻址方式称为位寻址。位寻址方式是在指令中直接给出位存储单元的地址即位地址。寻址方式令中直接给出位存储单元的地址即位地址。寻址方式类似于字节操作的直接寻址,注意的是直接寻址中的类似于字节操作的直接寻址,
30、注意的是直接寻址中的地址是字节地址,而位寻址中的地址是位存储单元的地址是字节地址,而位寻址中的地址是位存储单元的位地址,一个是字节操作一个是位操作。在解释指令位地址,一个是字节操作一个是位操作。在解释指令系统时,位地址以系统时,位地址以bitbit表示。表示。2.4.2 数据存储器数据存储器一、片内数据存储器一、片内数据存储器3、用户、用户RAM区(区(51子系列30H7FH,52子系列30H0FFH)用户真正使用的数据区,堆栈开辟于此区域。可用直接寻址、寄存器间接寻址进行操作用户真正使用的数据区,堆栈开辟于此区域。可用直接寻址、寄存器间接寻址进行操作 例例2-8 片内数据存储器操作。将片内数
31、据存储器操作。将40H单元起始的十个单元清零。单元起始的十个单元清零。MOV 40H,#00HMOV 41H,#00HMOV 42H,#00HMOV 43H,#00HMOV 44H,#00HMOV 45H,#00HMOV 46H,#00HMOV 47H,#00HMOV 48H,#00HMOV 49H,#00H或 MOV A,#00H MOV R0,#40H ;建立地址指针;建立地址指针 MOV R2,#0AH ;设计数循环初值;设计数循环初值LOOP:MOV R0,A INC R0 ;调整指针;调整指针 DJNZ R2,LOOP ;循环计数器减;循环计数器减1非零继非零继 ;续循环,为;续循环
32、,为0退出循环退出循环2.4.2 数据存储器数据存储器一、片内数据存储器一、片内数据存储器4、特殊功能寄存器区(、特殊功能寄存器区(80H0FFH)有有2121个个SFR,SFR,实现单片机的操作管理;留有大量空间可以扩充功能。实现单片机的操作管理;留有大量空间可以扩充功能。双重功能,其中双重功能,其中SFRSFR字节地址以字节地址以0H0H和和8H8H结尾的可以位操作;结尾的可以位操作;共有共有1111个个SFRSFR可以位操作。可以位操作。访问特殊功能寄存器只能采用访问特殊功能寄存器只能采用直接寻址直接寻址方式,即在指令中给出特殊功能寄存器方式,即在指令中给出特殊功能寄存器的直接地址的直接
33、地址directdirect。直接地址除以单元地址形式给出外,还可以以特殊功能寄存器名。直接地址除以单元地址形式给出外,还可以以特殊功能寄存器名称的形式出现。注意称的形式出现。注意ACCACC是累加器是累加器A A的特殊功能寄存器的名称,二者都指累加器,但是的特殊功能寄存器的名称,二者都指累加器,但是寻址方式不一样,寻址方式不一样,ACCACC是直接寻址,是直接寻址,A A是寄存器寻址。是寄存器寻址。使用名称书写指令简单,便于记使用名称书写指令简单,便于记忆。忆。MOV R0,A;A A是寄存器寻址是寄存器寻址 MOV R0,ACC;ACCACC是直接寻址是直接寻址下列指令是等价的:下列指令是
34、等价的:MOV R0,ACC MOV R0,0E0H ;ACCACC是直接寻址,实际上就是单元地址是直接寻址,实际上就是单元地址E0HE0H2.4.2 数据存储器数据存储器二、片外数据存储器二、片外数据存储器80518051可以通过并行总线扩展片外数据存储器,最大可扩展至可以通过并行总线扩展片外数据存储器,最大可扩展至64KB64KB。片外。片外64KB64KB数据存数据存储器和储器和I IO O口统一编址,地址范围口统一编址,地址范围0000H0FFFFH。规定片外数据存储器只能由规定片外数据存储器只能由寄存器间接寻址寄存器间接寻址的方法访问,所用的间址寄存器可为的方法访问,所用的间址寄存器
35、可为DPTRDPTR、RiRiMOVX A,DPTR ;读片外;读片外RAM指令指令MOVX DPTR,A ;写片外;写片外RAM指令指令片外片外RAM的操作的操作说明:说明:访问片外存储器指令助记符访问片外存储器指令助记符“MOVX”,X表示表示eXternal,即片外的意思。访,即片外的意思。访问片外问片外RAM DPTR所指向的存储单元,访问是双向的(可以读、写),但是只限于所指向的存储单元,访问是双向的(可以读、写),但是只限于指定存储单元和累加器指定存储单元和累加器A进行数据的传送。在访问存储单元前应该先对进行数据的传送。在访问存储单元前应该先对DPTR赋值,赋值,即赋予片外即赋予片
36、外RAM要访问的存储单元的要访问的存储单元的16位地址量。用位地址量。用DPTR做指针寻址时,由于做指针寻址时,由于DPTR为为16位寄存器,因此最大寻址范围位寄存器,因此最大寻址范围64KB。2.5 堆栈及堆栈指针堆栈及堆栈指针2.5.1 概念概念 堆栈(堆栈(stackstack)是一端固定,另一端活动的数据存储区,常用作暂存程序的上下文。是一端固定,另一端活动的数据存储区,常用作暂存程序的上下文。具有先进后出的特性。具有先进后出的特性。5151单片机的单片机的堆栈指针堆栈指针SPSP(Stack PointerStack Pointer):):8 8位寄存器,指示栈顶单元的地址。位寄存器
37、,指示栈顶单元的地址。堆栈类型:堆栈类型:向上生长型向上生长型2.5.2 堆栈操作堆栈操作初始化:初始化:系统缺省系统缺省SP07H,需要重新定,需要重新定义使其开辟在用户义使其开辟在用户RAM区。区。MOV SP,#60H ;在用户;在用户RAM区开辟堆栈,区开辟堆栈,;栈底栈底60H单元单元片内片内RAMRAM地址地址地址地址7FH80HFFHFFHSFRSFR区区0 0 0 0 0 1 1 1SP(81H)30H07H60H栈栈 底底0 1 1 0 0 0 0 02.5.2 堆栈操作堆栈操作(1 1)进栈指令)进栈指令PUSH direct功能:将直接地址功能:将直接地址direct的内
38、容压入堆栈。的内容压入堆栈。说明:堆栈指针说明:堆栈指针SP先加先加1指示新的栈顶单元,然后将直接地址为指示新的栈顶单元,然后将直接地址为direct的片内的片内RAM存存储单元的内容存入新的栈顶。储单元的内容存入新的栈顶。(2 2)出栈指令)出栈指令POP direct功能:将堆栈区栈顶单元的数据存入直接寻址字节内。功能:将堆栈区栈顶单元的数据存入直接寻址字节内。说明:将堆栈指针说明:将堆栈指针SP指示的栈顶单元的内容存入直接地址为指示的栈顶单元的内容存入直接地址为direct的片内的片内RAM存储单存储单元,元,SP减减1指向新的栈顶。指向新的栈顶。MOV SP,#60HMOV A,#0A
39、0HMOV B,#0AHPUSH ACCPUSH BPOP ACCPOP B2.6.1 位存储器位存储器2.6 位处理器和位寻址位处理器和位寻址 1 1、位累加器、位累加器C C 借用借用PSW的进位位的进位位CY,相当于累加器,相当于累加器A在在8位机的地位。是位操作中使用最位机的地位。是位操作中使用最频繁的。频繁的。C是寄存器寻址。是寄存器寻址。2 2、位存储器、位存储器(按位划分的(按位划分的8 8位位位地址位地址)片内片内RAM的位寻址区(位寻址)的位寻址区(位寻址)SFR区的可位寻址区的可位寻址SFR(位寻址)(位寻址)位地址:位地址:00H7FH(128b)位地址表示:位地址表示:
40、a.位地址位地址 b.字节地址字节地址.位位字节地址以字节地址以0H和和8H结尾的结尾的SFR,有,有11个个SFR的各位有位地址,共的各位有位地址,共88b。位地址表示:位地址表示:a.位地址位地址 b.字节地址字节地址.位位 c.位名称位名称 d.SFR名称名称.位位2.6.2 操作操作1 1、位存储器操作、位存储器操作SETB bit ;位置位指令,;位置位指令,bit置位(置位(bit)=1CLR bit;位复位指令,;位复位指令,bit复位(复位(bit)=0CPL bit ;位取非指令,;位取非指令,bit取非(取非(bit)=bit 例2-11 要求切换当前工作寄存器组为第2组,可执行下列指令序列SETB RS1;RS1置位,RS1=1CLR RS0;RS0复位,RS0=0SETB PSW.4 CLR PSW.32 2、位累加器操作、位累加器操作SETB C;C置位指令,置位指令,CY=1CLR C;C复位指令,复位指令,CY0CPL C ;C取非指令,取非指令,CYCY3 3、位传送、位传送MOV bit,C ;(;(bit)CYMOV C,bit ;CY(bit)