茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统1/227第3章8051单片机的指令系统指令及寻址方式3.1数据传送类指令3.2算术运算类指令3.3逻辑运算类指令3.4茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统2/227控制转移类指令3.5位处理指令3.6技能训练3.7茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统3/2273.1指令及寻址方式3.1.1指令及指令格式一、指令及指令系统的概念1.指令。指令就是CPU执行某种操作的命令,即能被计算机识别和执行的命令。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统4/227指令是以指令代码的形式表示的,它由两部分组成:操作码和操作数。占据内部ROM中若干个字节,8051单片机共有111条指令,其中,单字节指令49条、双字节指令45条、三字节指令17条。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统5/2272.指令系统。指令系统是一台计算机所能执行的全部指令的集合。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统6/227二、指令的表示形式指令有二进制、十六进制和助记符3种表示形式。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统7/227三、8051单片机的指令格式8051单片机的汇编语言指令由操作码字段和操作数字段两部分组成,其具体格式为标号:操作码[操作数1][,操作数2][,操作数3];注释茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统8/227四、8051单片机指令系统中的符号意义在8051单片机系统中,一些常用符号的意义如下。1.#data:8位立即数据,即包含在指令中的8位常数。2.#data16:16位立即数据,即包含在指令中的16位常数。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统9/2273.addr11:11位目的地址。4.addr16:16位目的地址。5.direct:8位内部数据存储器单元地址,它可以是内部RAM单元的地址(0~127)或一个专用寄存器的地址(128~255)。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统10/2276.Rn:工作寄存器R0~R7中的一个。7.Ri:工作寄存器R0或R1中的一个。8.rel:补码形式的8位地址偏移量。9.DPTR:16位寄存器。常用来存放外部RAM的地址,用作外部RAM的指针;也可用于查表指令,存放ROM的16位地址。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统11/22710.BIT:内部RAM或专用寄存器中的直接寻址位。11.A:累加器ACC。12.B:特殊功能寄存器,用于乘除法指令中;也可作为通用寄存器使用。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统12/22713.C:即PSW中的CY位。进位标志位或进位位,在位操作指令中,相当于累加器。14.@:间址寄存器或基址寄存器的前缀,如@Ri表示以Ri中的内容为地址的单元内容。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统13/22715.$:当前指令的地址,用于条件转移指令中,原地等待情况下。16./:位操作数的取反操作。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统14/22717.(X):X中的内容,即X为一个直接地址。18.((X)):以X中的内容为单元地址的单元内容。19.←:将箭头左面的内容,赋给箭头右面。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统15/227以下是在编译过程中产生的列表文件,读出各条指令的字节数,并计算程序占据内存的字节总数。LineIAddrCodeSource1:N0000ORG0000H2:00000130AJMPSTART3:N0030ORG0030H4:0030758130START:MOVSP,#30H5:00337590FFMOVP1,#0FFH茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统16/2276:00362080FDSTA:JBP0.0,STA7:003900NOP8:003A00NOP9:003B00NOP10:003C2080F7JBP0.0,STA11:003FB290CPLP1.012:00413080FDJNBP0.0,$13:00440136AJMPSTA14:END茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统17/227行号地址十六进制指令形式助记符指令形式字节数1N0000ORG0000H-20000H01H30HAJMPSTART23N0030ORG0030H-40030H75H81H30HSTART:MOVSP,#30H350033H75H90HFFHMOVP1,#0FFH360036H20H80HFDHSTA:JBP0.0,STA370039H00HNOP18003AH00HNOP19003BH00HNOP110003CH20H80HF7HJBP0.0,STA311003FHB2H90HCPLP1.02120041H30H80HFDHJNBP0.0,$3130044H01H36HAJMPSTA214NEND-表3.1列表文件(.lst)中指令字节表茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统18/227从表中得知,本程序指令共占内存24个字节,地址范围分成两块:一块是0000H,0001H;另一块是0030H~0045H。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统19/2273.1.2寻址方式8051单片机的寻址方式共有如下7种。一、立即寻址二、直接寻址三、寄存器寻址茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统20/227四、寄存器间接寻址五、变址寻址(基址寄存器+变址寄存器间接寻址)六、相对寻址七、位寻址茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统21/227寻址方式寻址空间立即寻址程序存储器ROM直接寻址片内RAM低128B和特殊功能寄存器SFR寄存器寻址工作寄存器R0~R7(内部RAM中00H~1FH)寄存器间接寻址片内RAM低128B[@Ri,SP(仅PUSH,POP)],片外RAM(@Ri,@DPTR)变址寻址程序存储器(@A+PC,@A+DPTR)相对寻址程序存储器256B范围(PC+偏移量)位寻址片内RAM的20H~2FH字节地址和部分特殊功能寄存器SFR表3.27种寻址方式的寻址范围茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统22/227PC是程序指针,它永远指向将要执行的下一条程序的所在单元地址。请问:8051单片机系统中除了程序指针PC外,还有哪些指针?茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统23/227所谓指针,是指指令操作数中存放的是单元地址,这个地址指向存储器某一个单元,单元内容就是指令所要求提取的数据。8051单片机系统中指针形式有如下几种。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统24/2271.堆栈指针SP:指向的是堆栈地址。2.程序指针PC和@A+DPTR,@A+PC:指向的是ROM地址。3.数据指针@DPTR和@Ri:指向的是RAM地址。茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统25/227一、ORG(汇编起始命令)[标号:]ORG#addr16二、END(汇编结束命令)三、EQU(等值命令)字符名称EQU数或汇编符号茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统26/227四、DATA(数据地址赋值命令)字符名称DATA表达式五、DB(定义字节命令)[标号:]DB字节常数(串)或字符或表达式茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统27/227ORG0300HTAB1:DB0FFH,0F9H,30HTAB2:DB20H,2FH,0FCH茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统28/227六、DW(定义字命令)[标号:]DW16位数据(或16位数据表)ORG1000HHTAB:DW1234H,80H,3FH茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统29/227七、BIT(位地址符号命令)字符名称BIT位地址AABITP1.0BBBITP3.2茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统30/227分析下列程序的结构。AAAEQUR3BBBEQUR4NUMBEQU60HIN232BITP3.0OUT1BITP1.0OUT2BITP1.1ORG0000HAJMPSTART…茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统31/227ORG0030HSTART:MOVSP,#NUMBCLRIN232NOPSETBIN232CLROUT1CLROUT2…茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统32/227MOVDPTR,#TABMOVA,#01HMOVCA,@A+DPTR…TAB:DB30H,21H,32H,33HDB44H,55H,66H,00HEND茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统33/2273.2数据传送类指令3.2.1内部存储器间的传送指令一、以累加器A为目的操作数的指令指令助记符格式指令在存储器中的形式执行操作机器周期MOVA,#data(A)←data1MOVA,direct(A)←(direct)1MOVA,Rn(A)←(Rn)1MOVA,@Ri(A)←((Ri))1表3.3以累加器A为目的操作数的传送指令茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统34/227【例3.1】已知(R0)=20H,(20H)=30H依次执行以下4条指令过程中,A的内容是怎样变化的?①MOVA,#20H②MOVA,20H③MOVA,@R0④MOVA,R0茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统35/227解:A中内容变化过程以注释的方式列于每条指令后面。①MOVA,#20H;A=20H②MOVA,20H;A=30H③MOVA,@R0;A=30H④MOVA,R0;A=20H茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统36/227指令助记符格式指令在存储器中的形式执行操作机器周期MOVRn,A(Rn)←(A)1MOVRn,#data(Rn)←data1MOVRn,direct(Rn)←(direct)2表3.4以寄存器为目的操作数的传送指令二、以寄存器Rn为目的操作数的指令茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统37/227【例3.2】已知累加器A中的内容为23H,50H中的内容为45H,R3的内容为33H。依次执行以下3条指令过程中,R3的内容发生怎样的变化?①MOVR3,A②MOVR3,50H③MOVR3,#00H茂名市第二高级技工学校2020年1月29日星期三第三章8051单片机的指令系统38/227分析:第①条指令是将A中的内容送入R3中;第②条指令是将50H单元的内容送入R3中;第③条指令是