版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、p4.1 指令和指令程序指令和指令程序 p4.2 寻址方式寻址方式 p4.3 数据传送指令数据传送指令p4.4 算术运算指令算术运算指令 p4.5 逻辑运算及移位指令逻辑运算及移位指令 p4.6 控制转移指令控制转移指令 p4.7 布尔变量操作指令布尔变量操作指令 1附录附录1:指令汇总指令汇总附录附录2:某些指令的说明某些指令的说明4.1 指令和指令程序指令和指令程序p所有软件,都要翻译成计算机能直接识别和执行所有软件,都要翻译成计算机能直接识别和执行的命令,才能由计算机去执行。这种计算机能直的命令,才能由计算机去执行。这种计算机能直接识别和执行的命令称为接识别和执行的命令称为指令指令。一台
2、计算机所能。一台计算机所能执行的全部指令的集合称为这台计算机的执行的全部指令的集合称为这台计算机的指令系指令系统统。24.1 指令和指令程序指令和指令程序“指令指令”: CPU能能直接识别和执行直接识别和执行的的命令命令。指令系统指令系统:CPU所能执行的全部指令的集合。所能执行的全部指令的集合。 与与CPU的能力、使用的方便灵活性密切相关。的能力、使用的方便灵活性密切相关。指令的记忆问题指令的记忆问题?指令本身是二进制代码。?指令本身是二进制代码。3例如以下的例如以下的51单片机指令:单片机指令:把10放到累加器A中 A加20,结果仍在A中 为了便于记忆 740AH 2414H用一组有一定意
3、义的字符来表示 指令助记符 助记符、助记符、汇编语言源程序汇编语言源程序4p虽然书写的字符增多了,但由于可读性增强虽然书写的字符增多了,但由于可读性增强了,使用时反而感到方便。了,使用时反而感到方便。 p经常采用经常采用助记符助记符和其他一些符号来编写指令程序,和其他一些符号来编写指令程序,这样编出的程序称为这样编出的程序称为汇编语言源程序汇编语言源程序。它经过一种。它经过一种称为称为汇编程序汇编程序的软件的翻译,就可变成机器可执行的软件的翻译,就可变成机器可执行的的目标程序目标程序了。了。p高级语言编程、效率问题高级语言编程、效率问题指令的组成指令的组成及字节数及字节数5p指令通常由两部分构
4、成,即指令通常由两部分构成,即操作码操作码和和操作数操作数。p操作码操作码用来规定这条指令完成什么操作,如是做加法用来规定这条指令完成什么操作,如是做加法还是做减法,是数据传送还是数据移位等。还是做减法,是数据传送还是数据移位等。p操作数操作数则表示这条指令所完成操作的对象,即是对谁则表示这条指令所完成操作的对象,即是对谁来进行操作。操作数可以直接是一个数,或者一个数据来进行操作。操作数可以直接是一个数,或者一个数据所在的地址。所在的地址。 51单片机的指令的长度:单片机的指令的长度:13个字节。个字节。5大类大类111条。条。 单字节:单字节:49条条双字节:双字节:45条条三字节:三字节:
5、17条条在二进制的在二进制的51指令中,单字节指令的操作码和操作数加起来指令中,单字节指令的操作码和操作数加起来只有只有1B;双字节指令的操作码和操作数各占;双字节指令的操作码和操作数各占1B;三字节指;三字节指令的第令的第1字节为操作码,第字节为操作码,第2、第、第3字节为操作数、操作数地字节为操作数、操作数地址或符号。址或符号。1单字节指令(单字节指令(49条)条)在在51指令指令系统中,单字节指令可分为指令指令系统中,单字节指令可分为两大类两大类:无操作数无操作数的单字节指令的单字节指令和和含有操作数寄存器编号的单字节指令含有操作数寄存器编号的单字节指令。1)无操作数单字节指令)无操作数
6、单字节指令这类指令只有操作码字段,操作数隐含在操作码中。这类指令只有操作码字段,操作数隐含在操作码中。例如:例如:INC DPTR 指令码为指令码为 : 数据指针隐含其中数据指针隐含其中 指令的组成指令的组成及字节数及字节数2)含有操作数寄存器号的单字节指令)含有操作数寄存器号的单字节指令 单字节的指令码由操作码字段和指示操作数所单字节的指令码由操作码字段和指示操作数所 在寄在寄存器号的字段组成。存器号的字段组成。 例如;例如;MOV A,Rn 指令码为:指令码为: 其中,其中,rrr为寄存器为寄存器Rn的编号的编号 指令的组成指令的组成及字节数及字节数2双字节指令(双字节指令(45条)条)双
7、字节指令的操作码字节在双字节指令的操作码字节在前前;在后面的操作数字节可以;在后面的操作数字节可以是是立即数立即数,也可以是操作数所在的,也可以是操作数所在的片内片内RAM地址地址。例如:例如:MOV A,#23H指令码为:指令码为: 这条这条8位数传送指令的含义是把指令码第位数传送指令的含义是把指令码第2字节立即数字节立即数23H取出来存放到累加器取出来存放到累加器(A)中。该指令的操作码占中。该指令的操作码占1B;23H为源操作数,也是为源操作数,也是1B;累加器(累加器(A)是目的操作数寄)是目的操作数寄存器,隐含在操作码字段中存器,隐含在操作码字段中。指令的组成指令的组成及字节数及字节
8、数3三字节指令(三字节指令(17条)条)这条指令的指令码的第这条指令的指令码的第1字节为字节为操作码操作码;第;第2和第和第3字节为字节为操作数或操作数地址操作数或操作数地址,有如下,有如下3类。类。1)16位数据位数据例如:例如:MOV DPTR,#26ABH指令码为:指令码为:指令的组成指令的组成及字节数及字节数2)8位地址和位地址和8位数据位数据例如:例如:MOV 74H,#0FFH指令码为:指令码为:指令的组成指令的组成及字节数及字节数01175H 74H FFH3)16位地址位地址例如:例如:LCALL 2020H指令码为:指令码为:指令的组成指令的组成及字节数及字节数指令的组成指令
9、的组成及字节数及字节数12p三字节指令三字节指令第第1个字节的操作码,后两个字节是操作数。个字节的操作码,后两个字节是操作数。 操作数可以是数据,也可以是地址。操作数可以是数据,也可以是地址。有以下有以下4种情况。种情况。 在程序设计中,应尽可能选用字节少的指令。这在程序设计中,应尽可能选用字节少的指令。这样,指令所占存储单元少,执行速度也快。样,指令所占存储单元少,执行速度也快。 51汇编语言有汇编语言有42种种操作码助记符,用来描述操作码助记符,用来描述33种种操作功操作功能。一种操作码可以使用一种以上的数据类型,又由于能。一种操作码可以使用一种以上的数据类型,又由于助记符规定了其访问的存
10、储器空间,所以一种功能可能助记符规定了其访问的存储器空间,所以一种功能可能有几个助记符有几个助记符(如(如MOV、MOVX、MOVC)。功能助记)。功能助记符与寻址方式组合,得到符与寻址方式组合,得到111条指令。条指令。4.2 寻址方式寻址方式4.2 寻址方式寻址方式p寻址就是寻找操作数的地址。寻址就是寻找操作数的地址。p在用高级语言编程时在用高级语言编程时,编程者,编程者不必关心不必关心参与运算数据参与运算数据(操作数)的(操作数)的存放问题存放问题,也不必关心这些运算是在哪里,也不必关心这些运算是在哪里(哪个寄存器)完成的。编程者只需关心语句的使用是(哪个寄存器)完成的。编程者只需关心语
11、句的使用是否正确,结果是否正确。至于变量的值存放在何处,则否正确,结果是否正确。至于变量的值存放在何处,则根本不必关心。根本不必关心。p在汇编语言编程时在汇编语言编程时,数据的存放、传送、运算都要通过,数据的存放、传送、运算都要通过指令来完成,编程者必须自始至终都要十分指令来完成,编程者必须自始至终都要十分清楚清楚操作数操作数的的位置位置以及如何将它们传送至适当的寄存器中去运算。以及如何将它们传送至适当的寄存器中去运算。因此,如何从各个存放操作数的区域去寻找和提取操作因此,如何从各个存放操作数的区域去寻找和提取操作数就变得十分重要。数就变得十分重要。p所谓寻址方式就是如何通过确定操作数所在的位
12、置所谓寻址方式就是如何通过确定操作数所在的位置(地地址址)从而把操作数提取出来的方法。从而把操作数提取出来的方法。 14常用符号说明常用符号说明用汇编语言编写指令时必须遵守一定的规则用汇编语言编写指令时必须遵守一定的规则,下表给,下表给出了编写指令时的出了编写指令时的一些符号的约定含义。一些符号的约定含义。51单片机的寻址方式单片机的寻址方式1.立即寻址立即寻址2.寄存器寻址寄存器寻址3.直接寻址直接寻址4.寄存器间接寻址寄存器间接寻址5.变址寻址(基址寄存器加偏移量寄存器)变址寻址(基址寄存器加偏移量寄存器)6.相对寻址相对寻址7.位寻址位寻址 16操作数的寻址方式有操作数的寻址方式有7种种
13、1、立即寻址立即寻址若指令的若指令的操作数操作数是一个是一个8位二进制数或位二进制数或16位二进制数,就位二进制数,就称为称为立即寻址立即寻址。指令中出现的操作数就称为。指令中出现的操作数就称为立即数立即数。例如:例如:MOV A,#3AH;A 3AH MOV DPTR,#8000H在在MCS51系统中采用系统中采用“#”来表示后面的是立即数。来表示后面的是立即数。 172、寄存器寻址寄存器寻址u寄存器寻址就是以通用寄存器的内容作为操作数,在指令寄存器寻址就是以通用寄存器的内容作为操作数,在指令的助记符中直接以寄存器的名字来表示操作数位置。这种的助记符中直接以寄存器的名字来表示操作数位置。这种
14、寻址方式如果使用了另一个操作数,那么另一操作数必须寻址方式如果使用了另一个操作数,那么另一操作数必须是是累加器累加器A,这些指令都是,这些指令都是单字节指令单字节指令u 在在MCS-51指令中,若操作数是以指令中,若操作数是以R0R7来表示操作数时,来表示操作数时,就属于寄存器寻址方式。就属于寄存器寻址方式。u例如例如MOV A,R0 ;(;(A)(R0)INC R0; (R0)+1R0 183、直接寻址直接寻址在指令中在指令中直接给出操作数地址直接给出操作数地址,就属于直接寻址方式。此,就属于直接寻址方式。此时,指令的操作数部分直接是操作数的地址。时,指令的操作数部分直接是操作数的地址。19
15、例如:例如:MOV A,3AH;A 68H3、直接寻址直接寻址20例如:例如:MOV A,TH0 MOV A, 8CH直接寻址方式只能给出直接寻址方式只能给出8位地址位地址,因此,这种寻址方式的,因此,这种寻址方式的寻址范围只限于片内寻址范围只限于片内RAM,具体说:,具体说: 1)低)低128单元,在指令中直接以单元地址形式给出。单元,在指令中直接以单元地址形式给出。 2)特殊功能寄存器,这时除可以用单元地址形式给出外,)特殊功能寄存器,这时除可以用单元地址形式给出外,还可以寄存器符号形式给出。还可以寄存器符号形式给出。特殊功能寄存器的唯一寻址特殊功能寄存器的唯一寻址方式。方式。4、寄存器间
16、接寻址寄存器间接寻址操作数的地址,若以寄存操作数的地址,若以寄存器的名称间接给出器的名称间接给出,则为,则为寄存器间接寻址。采用寄寄存器间接寻址。采用寄存器间接寻址,可以访问存器间接寻址,可以访问内部数据内部数据RAM的的128个存贮个存贮单元(单元(007FH),全部的),全部的64kB外部数据存贮器,外部数据存贮器,但但不能访问特殊功能寄存器不能访问特殊功能寄存器。21例如:例如:MOV A,R0;A(R0)A=65Hp可以用做间接寻址的寄存器:R0和R1,数据指针寄存器DPTR;用寄存器名前加“”符号来表示。 寄存器间接寻址的寻址范围:寄存器间接寻址的寻址范围: 1)片内)片内RAM低低
17、128单元:这里只能用单元:这里只能用R0和和R1作为间接作为间接寻址寄存器。寻址寄存器。 2)片外)片外RAM 64KB:使用:使用DPTR作为间接寻址寄存器。作为间接寻址寄存器。 3)片外)片外RAM低低256单元:也可以使用单元:也可以使用R0和和R1。MOVX 4)在执行)在执行PUSH(压栈)(压栈)和和POP(出栈)(出栈)指令时,采指令时,采用堆栈指针用堆栈指针SP作寄存器间接寻址作寄存器间接寻址。 例:例:PUSH 30H;把内部把内部RAM地址地址30H内的值放到堆内的值放到堆栈区中栈区中堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RA
18、M地址30H内的值放到RAM的61H内。例:例:已知已知R0中存放片内中存放片内RAM地址地址65H,数据指针,数据指针DPTR内存放片外内存放片外RAM地址地址8000H,地址,地址65H和和8000H里面都里面都存放着立即数存放着立即数30H,执行以下指令后:,执行以下指令后: MOV A,R0; MOVX A,DPTR;累加器累加器A的内容为的内容为30H。例:例: MOVR0,#30H; MOVA,R0MOVA,R0MOVXA,R0这种寻址方式用于访问这种寻址方式用于访问程序存储器中的数据表格程序存储器中的数据表格,以程序,以程序计数器(计数器(PC)或数据指针()或数据指针(DPTR
19、)作为基址寄存器,以)作为基址寄存器,以累加器作为变址寄存器。基址寄存器和变址寄存器的内容累加器作为变址寄存器。基址寄存器和变址寄存器的内容相加形成相加形成16位地址,该地址即作为操作数的地址。位地址,该地址即作为操作数的地址。245、变址寻址变址寻址例如:例如: MOVC A,A+PC ;(A)+(PC)A MOVC A,A+DPTR; (A)+(DPTR)Ap变址寻址的区域是程序存储器ROM而不是数据存储器RAM 。操作数地址操作数地址 = 变地址变地址 + 基地址基地址6、相对寻址相对寻址p相对寻址用于访问程序存储器,只出现在转移指令中,指相对寻址用于访问程序存储器,只出现在转移指令中,
20、指令的操作数部分给出的是地址的相对偏移量。令的操作数部分给出的是地址的相对偏移量。用用“rel”表示表示(补码数)(补码数)。相对转移指令所在的地址称为源地址,转移。相对转移指令所在的地址称为源地址,转移后的地址称为目的地址后的地址称为目的地址 。程序的转移范围以程序的转移范围以PC当前值为中当前值为中心,介于心,介于-128+127之间之间25例如例如SJMP rel指令的机器码指令的机器码是是“80H,rel”,两个字节。,两个字节。设指令所在地址为设指令所在地址为2000H,rel为为54H,则转移地址,则转移地址(目的目的地址地址)为:为: 2000H十02H十54H2056H PC的
21、值变为2056H,程序的执行发生了转移。 目的地址源地址十转移指令字节数十relrel=85H?267、位寻址位寻址p采用位寻址方式的指令,其操作数将是采用位寻址方式的指令,其操作数将是8位二进制数中的位二进制数中的某某一位一位。位的直接地址。位的直接地址。p MCS-51系统的内部数据系统的内部数据RAM有两个可以按位寻址的区域:有两个可以按位寻址的区域:一是一是从内部从内部RAM 20H2FH共共16个单元中的每一位都可单个单元中的每一位都可单独作为位操作数;独作为位操作数;二是二是某些特殊功能寄存器,其特征是这某些特殊功能寄存器,其特征是这些特殊功能寄存器的单元地址些特殊功能寄存器的单元
22、地址能被能被8整除整除。p位地址在指令中用位地址在指令中用bit表示。具体表示方法有表示。具体表示方法有:27(1)直接用位地址直接用位地址00HFFH来表示;来表示; (2)采用第几单元第几位的表示方法;采用第几单元第几位的表示方法;25H.5 (3)对特殊功能寄存器可直接用寄存器名加位数;对特殊功能寄存器可直接用寄存器名加位数;TCON.3 (4)用伪指令定义用伪指令定义,详见第,详见第5章章 。可以位寻址的可以位寻址的特殊功能寄存器特殊功能寄存器位地址表位地址表 28对于对于20H一一2FH单元中的各位单元中的各位 位地址位地址(单元地址一单元地址一20H)x 8 十十 位号位号例:例:
23、 MOV C,40H小结:小结:指令对哪个存储器空间进行操作是由指令对哪个存储器空间进行操作是由指令的操作码指令的操作码和和寻址方式寻址方式确定的。确定的。程序存储器程序存储器只能采用立即寻址和变只能采用立即寻址和变址寻址方式,址寻址方式,特殊功能寄存器特殊功能寄存器只能采用直接寻址方式,只能采用直接寻址方式,不能不能采用寄存器间接寻址,采用寄存器间接寻址,位操作指令只能位操作指令只能对位寻址对位寻址区进行操作。区进行操作。外部扩展的数据存储器只能用外部扩展的数据存储器只能用MOVX指令访问,而内指令访问,而内部部RAM的低的低128字节(字节(00H7FH)既能用直接寻址,)既能用直接寻址,
24、也能用寄存器间接寻址。也能用寄存器间接寻址。MCS-51指令系统,可以分为五大类指令系统,可以分为五大类即:即:u数据传送指令数据传送指令28条条u算术运算指令算术运算指令24条条u逻辑运算及移位指令逻辑运算及移位指令25条条u控制转移指令控制转移指令17条条u位操作(布尔操作)指令位操作(布尔操作)指令17条条304.3 数据传送指令数据传送指令一、内部一、内部RAM数据传送类数据传送类二、二、 外部外部RAM数据传送数据传送三、与程序三、与程序ROM之间的数据传送之间的数据传送 (查表指令)(查表指令)31数据传送类数据传送类-功能示意图功能示意图32程序程序存储器存储器ROMEPROM特
25、殊功能特殊功能寄存器寄存器SFR片内片内RAM128字节字节片外片外数据数据存储器存储器RAMMOVCMOVXMOV PUSHPOPXCHXCHD单片机单片机内部数据存储器内部数据存储器一、内部一、内部RAM数据传送类数据传送类1、基本数据传送指令、基本数据传送指令MOV2、栈操作指令、栈操作指令PUSH、POP3、数据交换指令、数据交换指令331、基本数据传送指令、基本数据传送指令MOV34格式格式 MOV 目的操作数,源操作数目的操作数,源操作数 ;目的操作数目的操作数 源操作数源操作数, 本质是复制本质是复制8Ri不包括特不包括特殊功能寄存器殊功能寄存器根据目的操作根据目的操作数的不同来
26、学数的不同来学习和记忆。习和记忆。基本数据传送指令基本数据传送指令MOV351、以、以累加器累加器为目的操作数为目的操作数 MOV A,Rn ; ARnMOV A,direct;MOV A,Ri;MOV A,#data;举例举例2、以、以寄存器寄存器Rn为目的操作数为目的操作数 MOV Rn,A ; Rn AMOV Rn,directMOV Rn,#data8R0R7R0,R1若(若(R1)=20H,(,(20H)=60H, 分析程序执行后分析程序执行后,累加器,累加器A的内容的内容MOV A,R1 ;MOV A,20H;MOV A,Ri;MOV A,# 20H;若(若(A)=20H,(,(2
27、0H)=F0H,分析程序执行后寄,分析程序执行后寄存器的内容存器的内容:MOV R0,A ;MOV R0,20H ;MOV R0,#20H;36A20HA60HA60HA20H(R0)=20H (R0)=F0H(R0)=20H基本数据传送指令基本数据传送指令MOV37MOV Ri,AMOV Ri, directMOV Ri,#data举例举例MOV direct,AMOV direct,RnMOV direct,directMOV direct,RiMOV direct,#data3、以、以直接地址直接地址为目的操作数为目的操作数 8R0R7R0,R14、以、以间接地址间接地址为目的操作数为目
28、的操作数 例:将例:将A的内容送至的内容送至30H单元,单元,R6的内容送至的内容送至32H单元,立单元,立即数即数66H送至送至36H单元,单元,38H单元内容送至单元内容送至40H单元,可用单元,可用以下指令:以下指令: MOV30H,A MOV32H,R6 MOV36H,#66H MOV38H,40H 例:若例:若A的内容为的内容为20H,32H单元的内容为单元的内容为46H,42H单元的单元的内容为内容为52H,R0的内容为的内容为42H,执行以下指令后,寄存器,执行以下指令后,寄存器中的内容如下:中的内容如下: MOVR0,A MOVR0,32H MOVR0,#35H(A) 30H
29、(R6)32H 66H(36H)(40H)(38H)(42H)=20H,(,(A)=20H(42H)=32H,(,(32H)=46H(42H)=35H基本数据传送指令基本数据传送指令MOV39MOV DPTR,#data16 ;举例举例8R0R7R0,R15、唯一的、唯一的16位数据位数据 传送指令。传送指令。MOV DPTR,#1234H MOV DPH,#12H; MOV DPL,#34H; 注意注意40上述指令不影响任何标志位,但上述指令不影响任何标志位,但PSW的的P位除外。位除外。注意:注意:MOV Rn,Rn MOV Ri, Ri MOV Rn, Ri MOV #data, A 等
30、等等指令是等指令是非法指令非法指令。 哇!好容易出错啊! 立即数不能为目的操作数。立即数不能为目的操作数。 一条指令中不能出现两个工作寄存器。一条指令中不能出现两个工作寄存器。 特殊功能寄存器特殊功能寄存器SFR只能直接寻址。只能直接寻址。 间接寻址间接寻址 的寄存器为的寄存器为R0和和R1。2、堆栈操作指令、堆栈操作指令p数据存取数据存取原则按照原则按照“先进后出,后进先出先进后出,后进先出”。p堆栈是在堆栈是在内存中内存中专门开辟出来的专门开辟出来的区域(片内区域(片内RAM)。p堆栈指示器堆栈指示器SP就是用来指示堆栈位置的。就是用来指示堆栈位置的。p在使用堆栈之前,先给在使用堆栈之前,
31、先给SP赋值,以规定堆栈的起始位量,赋值,以规定堆栈的起始位量,称为栈底。称为栈底。p复位后,复位后,SP=07Hp进栈指令进栈指令PUSHp出栈指令出栈指令POP41进栈操作指令进栈操作指令PUSH格式:格式:PUSH direct自动进行两步操作:自动进行两步操作:(1) SPSP + 1(2)(SP) ( direct )42例例1首先将首先将SP 中的值加中的值加1,然后把然后把SP 中的值当作中的值当作地址,将地址,将direct 中的值中的值送进以送进以SP 中的值为地中的值为地址的址的RAM 单元中。单元中。 MOV SP,#5FH ; MOV A,#100 ; MOV B,#2
32、0 ; PUSH ACC ; PUSH B ;堆栈操作指令中的操作堆栈操作指令中的操作数只能用直接寻址方式,数只能用直接寻址方式,所以将累加器压入堆栈所以将累加器压入堆栈时,累加器时,累加器(ACC)不能不能简写简写A。 出栈操作指令出栈操作指令POP格式:格式:POP direct自动进行两步操作:自动进行两步操作:(1)()( direct ) ( SP ) (2) SPSP - 143例例2、首先将SP 中的值作为地址,并将此地址中的数送到POP 指令后面的那个direct 中,然后SP 减1。 MOV SP,#5FH ; MOV A,#100 ; MOV B,#20 ; PUSH AC
33、C ; PUSH B ; POP B ; POP ACC ; 作用?作用?结论:结论:441)PUSH 与与 POP 操作过程刚好相反,成对出现;操作过程刚好相反,成对出现; 2)进、出栈规则:进、出栈规则: 先进后出,后进先出。应注意指令书写先后顺序;先进后出,后进先出。应注意指令书写先后顺序; 3)可用于可用于“保护现场,恢复现场保护现场,恢复现场”。 3、数据交换指令数据交换指令半字节交换半字节交换45 整字节交换整字节交换 XCHD A,Ri;高四位不变,第四位互换。;高四位不变,第四位互换。 SWAP A;累加器自身的高低四位互换。累加器自身的高低四位互换。将将A A的低的低4 4位
34、和位和R0R0或或R1R1指出的指出的RAMRAM单元低单元低4 4位相互交换,各自位相互交换,各自的高的高4 4位不变。源操作数只有寄存器间接寻址方式。位不变。源操作数只有寄存器间接寻址方式。二、二、 外部外部RAM数据传送数据传送46MOVX A,Ri;读有效,输入;读有效,输入MOVX A, DPTR;MOVX Ri, A;写有效,输出;写有效,输出MOVX DPTR,Au执行过程中会使写执行过程中会使写/WR、读、读/RD有效。有效。具体分析。具体分析。u间接寻址,间接寻址,8位或位或16位的地址指针位的地址指针 。u只能通过累加器传送只能通过累加器传送。举例举例47例例3、试编写一程
35、序段,实现将外试编写一程序段,实现将外RAM 0FAH单元中的单元中的内容传送到外内容传送到外RAM 04FFH单元中。单元中。解:解: MOV DPTR,#04FFH MOV R0,#0FAH MOVX A,R0 MOVX DPTR, A 三、与程序三、与程序ROM之间的数据传送之间的数据传送48p 执行时会使执行时会使/PSEN有效。有效。p MOVC 传送传送常数常数。p 以以DPTR 为基地址的指令,可在为基地址的指令,可在ROM 的的64KB范范围内查表;围内查表;p 而以而以PC为基地址的指令只能在(为基地址的指令只能在(PC)+ 1为中心为中心上、下上、下256B范围内查表。范围
36、内查表。p 只能通过累加器传送只能通过累加器传送。所谓的查表指令所谓的查表指令MOVC A,A+PC ;(;(PC)(PC)+1 ;(;(A)(A)+(PC)MOVC A,A+DPTR;(;(A)(A)+(DPTR)例:例:设(设(A)=30H,执行指令:,执行指令:MOVCA, A+PC;若本指令的存储地址为;若本指令的存储地址为1000H 结果结果? 将程序存储器中将程序存储器中1031H单元的内容送入累加器单元的内容送入累加器A 举例举例 例:设(例:设(DPTR)=8200H,(,(A)=30H,执行指令:,执行指令: MOVCA, A+DPTR结果结果? 将程序存储器中将程序存储器中
37、8230H单元的内容送入累加器。单元的内容送入累加器。 举例举例举例举例例例、设(、设(A)= 一个一个BCD码常数,试用查表法获得其相应的码常数,试用查表法获得其相应的ASCII码。码。51解法解法I: MOV DPTR,#TAB MOVC A,.A+DPTR TAB:DB 30H DB 31H DB 32H,33H,34H,35H 解法解法II: MOVC A,A+PC TAB: DB 30H,31H,32H,33H DB 34H,35H,36H,37H 4.4 算术运算指令算术运算指令4.4.1 加法指令加法指令4.4.2 带进位加法指令带进位加法指令4.4.3 加加1指令指令4.4.4
38、 带借位减法指令和减带借位减法指令和减1指令指令4.4.5 乘、除指令乘、除指令4.4.6 十进制加法调整指令十进制加法调整指令4.4.7 数据指针数据指针DPTR加加1指令指令524.4.1 加法指令加法指令53这些指令的意思就是把后面的值与这些指令的意思就是把后面的值与A 中的值相加,结果中的值相加,结果送到送到A 中去中去 加法类指令都是加法类指令都是以以A 为核心为核心的,其中一个数必须放在的,其中一个数必须放在A 中,而运算结果也必须放在中,而运算结果也必须放在A 中。中。4.4.2 带进位带进位加法指令加法指令54这些指令的作用都是将这些指令的作用都是将A 中的值和其后面的值相加,
39、中的值和其后面的值相加,并且加上并且加上进位进位位位CY 中的值。中的值。 例如例如 2 个个16 进制数相加:进制数相加:1367H+12A0H ,先做,先做67H+A0H=107H ,而,而107H 显然超过了显然超过了0FFH ,因此,因此最终保存在最终保存在A 中的是中的是7,而,而1 则进到了则进到了PSW 中的中的CY 位去了,换言之,位去了,换言之,CY 位就相当于是位就相当于是100H ,然后再,然后再做做12H+13H+CY ,结果是,结果是26H ,所以最终的结果是,所以最终的结果是2607H。 4.4.3 加加1指令指令55p指令说明指令说明:从结果上看:从结果上看INC
40、 A 和和ADD A,#1 差不多,差不多,但但INC A 是单字节单周期指令是单字节单周期指令,而,而ADD A,#1 则是双则是双字节双周期指令字节双周期指令,而且,而且INC A 不会影响不会影响PSW 位(位(P位位除外)除外),如,如A=0FFH,INC A 后后A=00H ,而,而CY 依然保依然保持不变;如果是持不变;如果是ADD A ,#1,则,则A=00H ,而,而CY 一定一定是是“1”。因此加因此加1 指令并不适合做加法,事实上它主要指令并不适合做加法,事实上它主要是用来做计数、地址增加等用途。是用来做计数、地址增加等用途。 例:例:设(设(A)=0FFH,(,(R3)=
41、0FH,(,(30H)=0E2H,(,(R0)=40H,(,(40H)=0AAH,执行指令:执行指令: INCA INCR3 INC30H INCR0( A)=00H(R3)=10H(30H)=0E3H (40H)=0ABH4.4.4 带借位减法指令带借位减法指令和减和减1指令指令57p 指令说明指令说明:没有没有不带借位不带借位的减法指令的减法指令,如果需要做不,如果需要做不带借位的减法指令(在做第一次相减时),只要先将带借位的减法指令(在做第一次相减时),只要先将CY 清零清零即可。即可。 CLR C减减1指令指令58p指令说明指令说明:既然加:既然加1 指令可以用于计数、地址等加指令可以
42、用于计数、地址等加1,所以减所以减1 指令的功能与加指令的功能与加1 指令类似指令类似.(1)DEC A ;(2)DEC Rn ;例如:例如:R7=20H, DEC A; R7=19H (3)DEC direct; 例如:例如:30H=20H, DEC 30H; (30H)=19H (4)DEC Ri ;4.4.5 乘、除指令乘、除指令u乘、除指令乘、除指令(单字节,四周期)(单字节,四周期)p MUL AB ;AB=B(高(高8 位)位) A (低(低8 位)位)p DIV AB ;ABA(商)(商)B(余数)(余数)59 MUL乘法乘法指令说明指令说明:两个:两个8 位无符号数相乘,结果位
43、无符号数相乘,结果16位位 ,在乘积大于在乘积大于FFH时,时,0V =“1”(溢出),否则(溢出),否则OV =“0”,而,而CY 位总是为位总是为“0”。 DIV除法指令说明除法指令说明: 通常通常CY 位和位和OV 位都是位都是“0”,但是但是如如果在做除法前果在做除法前B 中的值是中的值是00H,也就是除数为,也就是除数为0,那么,那么0V=1。 例:(A)=4EH,(B)=5DH;MUL AB ;乘积是1C56H 如13/5 ,其商是2,余数是3。除了以后,商2放在A 中,余数3放在B 中。 4.4.6 十进制加法调整指令十进制加法调整指令u十进制加法调整指令十进制加法调整指令p D
44、A A60p 是对压缩的是对压缩的BCD码(一个字节存放码(一个字节存放2位位BCD码)的码)的加加法结果法结果进行进行十进制调整十进制调整。p 两个两个BCD码码按二进制相加按二进制相加之后,必须经本指令的之后,必须经本指令的调整调整才能得到正确的结果(压缩的才能得到正确的结果(压缩的BCD码的码的和数和数)。)。十进制加法调整指令十进制加法调整指令u十进制加法调整指令十进制加法调整指令p DA A61调整方法调整方法(加法时加法时)p高低四位各一组高低四位各一组相加结果大于相加结果大于9(1001B,无效的无效的BCD),加),加6修正;修正;结果大于等于结果大于等于=16(进位(进位CY
45、或辅助进位或辅助进位AC),加),加6修正。修正。例如加法: 87 +35MOV A,#87HADD A,#35H;A=0bcHDA A ;例如:减法87-35?87+(100-35)计算计算87H+(9AH-35H)再调整再调整4.4.7 数据指针数据指针DPTR加加1指令指令u数据指针加数据指针加1指令指令p INC DPTR ; DPTRDPTR+162注意:没有相应的减1指令。在算术运算类指令中,除了加在算术运算类指令中,除了加1 和减和减1 指令外,指令外,其他的算术运算类指令都要把结果放到累加器其他的算术运算类指令都要把结果放到累加器A 中,这与数据传递类指令有所不同。中,这与数据
46、传递类指令有所不同。 4.5 逻辑运算及移位指令逻辑运算及移位指令4.5.1 逻辑与运算指令逻辑与运算指令4.5.2 逻辑或运算指令逻辑或运算指令4.5.3 逻辑异或运算指令逻辑异或运算指令4.5.4 累加器清零及取反指令累加器清零及取反指令4.4.5 循环循环移位指令移位指令63逻辑运算指令逻辑运算指令64主要用于对主要用于对2 2个操作数按个操作数按位进行逻辑位进行逻辑操作,结果送到操作,结果送到ACC或或直接寻址直接寻址单元。单元。v 主要操作主要操作 与、与、或或、异或、异或、取反取反、清零等。、清零等。v 对标志位的影响对标志位的影响 除了目的操作数为除了目的操作数为ACCACC的指
47、令影响的指令影响奇偶标志奇偶标志P P外,外,一般不影响标志位。一般不影响标志位。4.5.1 逻辑逻辑“与与”运算指令运算指令65某一位和某一位和0逻辑逻辑 与与结果为结果为0;和;和1逻辑逻辑 与与结果不变。结果不变。p“指定位清零指定位清零”p逻辑或逻辑或ORL、逻辑异或逻辑异或 XRL的的寻址方式寻址方式与此相同与此相同。后两条指令,后两条指令,若若直接地址为直接地址为I/O端口端口,则为,则为“读修改读修改-写写”操作。操作。例例1解解: ANL P1,#0FH“位屏蔽位屏蔽”: 从包含多个位集的一个或一从包含多个位集的一个或一组字节中选出制定的一(些)位组字节中选出制定的一(些)位6
48、6P1= 35H, 使其高使其高4位输出位输出0,低,低4位不变。位不变。4.5.2 逻辑逻辑“或或”运算指令运算指令67按位依次进行逻辑运算。按位依次进行逻辑运算。 某一位和某一位和1逻辑逻辑 或或结果为结果为1;和;和0逻辑逻辑 或或结果不变。结果不变。p“指定位置指定位置1”后两条指令,若直接地址为后两条指令,若直接地址为I/O端口,则为端口,则为“读修改读修改-写写”操作。操作。例例2将将A中的低中的低3位送入位送入P1中,并且保持中,并且保持P1中高中高5位不变。位不变。68ANL A,#07HANL P1,#0F8HORL P1,A ;(;(P1)= P17P16P15P14P13
49、A2A1A0这称为这称为“数位组合数位组合”。 4.5.3 逻辑逻辑“异或异或”运算指令运算指令69按位依次进行逻辑运算。按位依次进行逻辑运算。某一位和某一位和1逻辑异或逻辑异或结果为取反;和结果为取反;和0逻辑异或逻辑异或结果不变。结果不变。p“指定位取反指定位取反”后两条指令,若直接地址为后两条指令,若直接地址为I/O端口,则为端口,则为“读修改读修改-写写”操作。操作。4.5.4 累加器清零及取反指令累加器清零及取反指令70指令说明:指令说明:CLR A,累加器累加器A 清零清零。效果同。效果同MOV A,#00H 是一样的,只不过它是单字节指令,而是一样的,只不过它是单字节指令,而MO
50、V A,#00H 是双字节指令。是双字节指令。 指令说明:指令说明: CPL A 将累加器将累加器A 逐位取反逐位取反。相当于数字相当于数字电路的电路的“非非”逻辑,例如:逻辑,例如:A=12H, CPL A ;12H 化化为二进制是为二进制是00010010,逻辑取反后为,逻辑取反后为11101101,即,即A=0EDH。4.4.5 循环循环移位指令移位指令71全部是全部是累加器累加器A循环移位循环移位,移位后信息没有丢失。,移位后信息没有丢失。p移位位数:移位位数:1 位。位。C循环移位指令循环移位指令72A.0A.7A.0A.7A.0A.7A.0A.7CYCYC16位数的算术左移,位数的
51、算术左移,16位数在内存中存放在位数在内存中存放在M1和和M1+1单元,低单元,低8位先存。位先存。CLR CMOV R1,#M1MOV A,R1RLC AMOV R1,AINC R1MOV A,R1RLC AMOV R1,A7316位循环移位的实现方法?位循环移位的实现方法?;进位进位Cy=0;操作数地址送操作数地址送R1;低低8位送位送A;低低8位左移,最低位添位左移,最低位添0,Cy A7;送回送回;指向高指向高8位位;高高8位送位送A;A7移入,高移入,高8位左移位左移; 送回送回4.6 控制转移指令控制转移指令控制转移类指令共有控制转移类指令共有17 条条转移指令分为三大类转移指令分
52、为三大类 无条件转移指令、无条件转移指令、条件转移指令条件转移指令调用及返回指令调用及返回指令空操作指令空操作指令NOP74作用:作用:改变程序计数器改变程序计数器PC的值,从而改变程序执行方向,的值,从而改变程序执行方向,转向指令设定的目标地址。转向指令设定的目标地址。4.6.1无条件转移指令无条件转移指令75AJMP L2L0:MOV A,#15HL2:MOV R1,#3AH(绝对绝对)长转移指令长转移指令LJMP addr16;PC addr16绝对转移指令绝对转移指令AJMP addr11;PC100 addr11(相对)短转移指令(相对)短转移指令SJMP rel;PC 源地址源地址
53、+2+rel变址方式的转移指令变址方式的转移指令JMP A + DPTR;前三个:在助记符中可用前三个:在助记符中可用标号标号(符号地址符号地址)来表示。来表示。例如例如LJMP L1MOV A,#12HL1:MOV R1,#3AHp目标地址目标地址L2与与下一条指令的地下一条指令的地址址L0在同一个在同一个2K 空间空间pL1为为64K的全部空间。的全部空间。(相对)短转移指令、(相对)短转移指令、散转指令散转指令76(绝对绝对)长转移指令长转移指令LJMP addr16;PC addr16绝对转移指令绝对转移指令AJMP addr11;PC100 addr11(相对)短转移指令(相对)短转
54、移指令SJMP rel;PC 源地址源地址+2+rel变址方式的转移指令变址方式的转移指令JMP A + DPTR;Rel为为8位有符号数。(位有符号数。(-128+127)Rel = L3 - L0SJMP L3L0:MOV A,#12HL3:MOV R1,#3AH汇编时会自动计算汇编时会自动计算rel。前三个:在助记符中可用前三个:在助记符中可用目标地址(目标地址(标号标号)来表示。来表示。例如例如JMP A + DPTR;间接转移,间接转移,所谓的所谓的“散转指令散转指令”,常用于常用于多多分支程序结构分支程序结构中,可在程序运行过程中动态地决定程序分支走向。中,可在程序运行过程中动态地
55、决定程序分支走向。 4.6.2 条件转移指令条件转移指令77p 基本规则:基本规则:条件成立时条件成立时则转移到则转移到目标地址目标地址, 条件条件不成立时不成立时顺序执行下一条指令。顺序执行下一条指令。p 属于属于相对寻址相对寻址。p条件转移指令在执行过程中需要判断某种条件是否满条件转移指令在执行过程中需要判断某种条件是否满足,从而决定要不要转移。足,从而决定要不要转移。 转移目的地址转移目的地址在以下一条指令地址为中心的在以下一条指令地址为中心的256B范围范围内(内(-128+127)。)。条件转移指令条件转移指令的条件的条件78实现按照一定条件决定转移的方向实现按照一定条件决定转移的方
56、向,分三类分三类:累加器累加器A判零条件转移指令判零条件转移指令比较条件转移指令比较条件转移指令循环转移指令(减循环转移指令(减1条件转移指令)条件转移指令) p 基本规则:基本规则:条件成立条件成立则转移到则转移到目标地址目标地址, 条件条件不成立不成立顺序执行下一条指令。顺序执行下一条指令。l条件转移的条件条件转移的条件可以是上一条指令或者更前一条指令可以是上一条指令或者更前一条指令的执行结果(常体现在标志位上),也可以是条件转移的执行结果(常体现在标志位上),也可以是条件转移指令本身包含的某种运算结果指令本身包含的某种运算结果。(1)累加器累加器A判判0条件转移指令条件转移指令79p 执
57、行指令时,如执行指令时,如条件满足条件满足,则转移;不满足,则顺序执,则转移;不满足,则顺序执行下一指令。行下一指令。p 转移目的地址转移目的地址在以下一条指令首地址为中心的在以下一条指令首地址为中心的256B范范围内(围内(-128+127)。)。JZ rel;如果如果A=0,则转移,否则顺序执行。,则转移,否则顺序执行。JNZ rel;如果如果A0,就转移,否则顺序执行。,就转移,否则顺序执行。 汇编语言书写指令时,汇编语言书写指令时,rel可采用目标地址的标号。可采用目标地址的标号。 例如:例如:JZ 标号标号 ;(2)比较比较条件转移指令条件转移指令比较不相等转移指令比较不相等转移指令
58、80CJNEA,#data,relCJNE Rn,#data,relCJNE Ri,#data,relCJNEA,direct,relp比较前两个操作数大小,如果值比较前两个操作数大小,如果值不相等则转移不相等则转移,并转向,并转向目的地址;否则顺序执行。目的地址;否则顺序执行。p如果第一操作数(无符号整数)小于第二操作数如果第一操作数(无符号整数)小于第二操作数(无符(无符号整数),则进位标志位号整数),则进位标志位Cy置置1,否则,否则Cy清清0。该指令的。该指令的执行不影响任何一个操作数的内容。执行不影响任何一个操作数的内容。汇编语言书写指令汇编语言书写指令时,时,rel可采用目标可采用
59、目标地址的标号。地址的标号。只有:只有:比较不相等转移指令比较不相等转移指令81p利用这些指令,可以判断两数是否利用这些指令,可以判断两数是否相等相等。p但有时还想得知两数比较之后但有时还想得知两数比较之后哪个大,哪个小哪个大,哪个小,本条,本条指令也具有这样的功能:指令也具有这样的功能:如果两数不相等,则如果两数不相等,则CPUCPU还会用还会用CYCY(进位位)来反映哪(进位位)来反映哪个数大,哪个数小。个数大,哪个数小。如果前面的数大,则如果前面的数大,则CY=0CY=0,否则,否则CY=1CY=1。因此在程序转移后再次利用因此在程序转移后再次利用CYCY就可判断出哪个数大,就可判断出哪
60、个数大,哪个数小了。哪个数小了。数据大小的比较数据大小的比较82p利用这些指令,可以判断两数是否利用这些指令,可以判断两数是否相等相等。还可以进一。还可以进一步比较两个数步比较两个数哪个大,哪个小哪个大,哪个小。(3)循环转移指令(循环转移指令(减减1不为不为0转移指令转移指令)把减把减1与条件转移两种功能合在一起。与条件转移两种功能合在一起。两条:两条:83DJNZ Rn, relDJNZ direct,relp执行过程是这样的执行过程是这样的: 它将它将Rn或或 direct中的值中的值减减1,然后看这个值是否等,然后看这个值是否等于于0,如果,如果等于等于0,就往下执行,如果,就往下执行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 区域内循环经济产业园
- 2025年度消防设施运行维护劳务分包合同3篇
- 2024年离婚后养老保险转移合同
- 2025年度水果采摘园门票与产品组合销售合同3篇
- 2024年租赁合同标的物为5辆豪华轿车
- 智慧工地系统方案
- 【核动力】2022届高三物理一轮复习章末综合检测八-第8章-磁场-
- 苏州同心医疗器械有限公司心室辅助装置迁建项目
- 全国主体功能区规划(全文)-20210921093210
- 企业市场渗透战略技术总结
- 老年病及老年综合征中医证治概要
- 三年级上册数学说课稿- 2.2 看一看(二)-北师大版
- 超星尔雅学习通《西厢记》赏析(首都师范大学)网课章节测试答案
- 切削液的配方
- 塑料门窗及型材功能结构尺寸
- 2023-2024学年湖南省怀化市小学数学五年级上册期末深度自测试卷
- GB 7101-2022食品安全国家标准饮料
- 超实用的发声训练方法
- 《第六课 从传统到现代课件》高中美术湘美版美术鉴赏
- 英语四六级讲座课件
- Unit 3 On the move Understanding ideas(Running into a better life)课件- 高一上学期英语外研版(2019)必修第二册
评论
0/150
提交评论