单片机原理及应用课件教学PPT作者韩峻峰3(最新全套课件齐)_第1页
单片机原理及应用课件教学PPT作者韩峻峰3(最新全套课件齐)_第2页
单片机原理及应用课件教学PPT作者韩峻峰3(最新全套课件齐)_第3页
单片机原理及应用课件教学PPT作者韩峻峰3(最新全套课件齐)_第4页
单片机原理及应用课件教学PPT作者韩峻峰3(最新全套课件齐)_第5页
已阅读5页,还剩167页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 汇编语言12021-10-16淘宝店铺:淘宝店铺:淘课件淘课件-教学配套课件教学配套课件教材其余课件及动画素材请在淘宝网搜索教材其余课件及动画素材请在淘宝网搜索或者直接输入下面地址:或者直接输入下面地址:http:/2021-10-16第3章 汇编语言2第3章 汇编语言第3章 汇编语言32021-10-16本章要点:n51系列单片机指令系统的寻址方式系列单片机指令系统的寻址方式n51系列单片机指令系统的使用要点系列单片机指令系统的使用要点n51系列单片机汇编语言程序设计的方法及系列单片机汇编语言程序设计的方法及应用实例应用实例 第3章 汇编语言42021-10-16n计算机是高度自动化

2、的机器,它能自动进行计算机是高度自动化的机器,它能自动进行运算和处理事务。整个自动操作过程是由运算和处理事务。整个自动操作过程是由CPU中的控制器控制的。控制器自动执行存中的控制器控制的。控制器自动执行存放在存储器中的指令,而每一条指令规定计放在存储器中的指令,而每一条指令规定计算机完成某种操作。算机完成某种操作。nCPU所能执行的所有指令的集合就称为所能执行的所有指令的集合就称为指令指令系统。系统。第3章 汇编语言52021-10-16n计算机的计算机的CPU只能认识和识别二进制代码,这种只能认识和识别二进制代码,这种代码称为机器码,通常用十六进制书写。代码称为机器码,通常用十六进制书写。n

3、机器码虽然能被计算机识别,但不便于记忆和阅机器码虽然能被计算机识别,但不便于记忆和阅读,所以制造厂家对指令系统中的每一条指令都读,所以制造厂家对指令系统中的每一条指令都给出了符号作指令助记符。这些助记符都一定的给出了符号作指令助记符。这些助记符都一定的含义含义(一般为英文缩写一般为英文缩写),便于记忆、理解和阅读。,便于记忆、理解和阅读。n这种用助记符这种用助记符(操作码操作码)、操作数、操作数(或其地址或其地址)、标号、标号编写的程序称为汇编编写的程序称为汇编(符号符号)语言程序。语言程序。第3章 汇编语言62021-10-16n汇编语言程序必须由翻译成机器能识别的机器码汇编语言程序必须由翻

4、译成机器能识别的机器码(目目标代码标代码)才能在计算机上运行。翻译的方法有两种:才能在计算机上运行。翻译的方法有两种:人工汇编和自动汇编。人工汇编和自动汇编。n人工汇编就是由人工将指令翻译成机器代码,而自动人工汇编就是由人工将指令翻译成机器代码,而自动汇编是由计算机用汇编程序进行翻译。汇编是由计算机用汇编程序进行翻译。n为了剖析现成产品的程序,有时还需要把机器码翻译为了剖析现成产品的程序,有时还需要把机器码翻译成汇编语言,这个过程称为反汇编。成汇编语言,这个过程称为反汇编。汇编程序汇编程序反汇编反汇编汇编语言汇编语言源程序源程序机器语言机器语言第3章 汇编语言72021-10-16nMCS-5

5、1的指令系统共有的指令系统共有111条指令,分为条指令,分为5种类种类型、有型、有7种寻址方式,共种寻址方式,共255种操作代码、使用了种操作代码、使用了42种助词符。种助词符。n从指令占用的存储空间看,单字节指令有从指令占用的存储空间看,单字节指令有49条,条,双字节指令有双字节指令有45条,三字节指令有条,三字节指令有17条;条;n从指令执行的时间看,单周期指令占从指令执行的时间看,单周期指令占64条,双周条,双周期指令占期指令占45条,四周期指令条,四周期指令2条(乘法和除法指条(乘法和除法指令)。令)。nMCS-51单片机的指令系统占用的存储空间少、单片机的指令系统占用的存储空间少、执

6、行速度快,有较强的实时处理能力,特别适合执行速度快,有较强的实时处理能力,特别适合于控制系统。于控制系统。第3章 汇编语言82021-10-163.1 MCS-51系列单片机的指令系列单片机的指令格式及标识格式及标识nMCS-51单片机汇编语言的指令由操作码和单片机汇编语言的指令由操作码和操作数两部分组成,操作码表明指令要执操作数两部分组成,操作码表明指令要执行的操作,而操作数则说明参与操作的数行的操作,而操作数则说明参与操作的数据或数据存放的位置。据或数据存放的位置。标号:标号:操作码操作码 操作数操作数 ;注释;注释第3章 汇编语言92021-10-16标号:标号:n是该指令语句的符号地址

7、,汇编时将该符是该指令语句的符号地址,汇编时将该符号地址还原为该指令所在的实际地址。号地址还原为该指令所在的实际地址。n使用标号主要是便于编程和查询标号,可使用标号主要是便于编程和查询标号,可根据需要设置。根据需要设置。n标号一般由标号一般由16个字符组成,第一个字符必个字符组成,第一个字符必须是字母,其余可以是数字、字母或下划须是字母,其余可以是数字、字母或下划线等。线等。n标号与操作码之间用冒号标号与操作码之间用冒号“:”分隔。分隔。 第3章 汇编语言102021-10-16操作码:操作码:n用于指明指令的功能。在汇编语言中用助用于指明指令的功能。在汇编语言中用助词符表示。词符表示。 第3

8、章 汇编语言112021-10-16操作数:操作数:n根据指令的不同,操作数可以为根据指令的不同,操作数可以为1个、个、2个、个、3个或没个或没有。操作数之间用逗号有。操作数之间用逗号“,”分隔。分隔。n“操作数操作数1”通常是执行操作的目的单元,称目的操通常是执行操作的目的单元,称目的操作数,如寄存器、标号等;作数,如寄存器、标号等;n“操作数操作数2”通常是执行操作的数据来源,称源操作通常是执行操作的数据来源,称源操作数,可以是寄存器、常量、标号等;数,可以是寄存器、常量、标号等;n“操作数操作数3”通常是执行操作的目的地址或相对偏移通常是执行操作的目的地址或相对偏移量,在汇编程序中常用标

9、号来表示。量,在汇编程序中常用标号来表示。n如果操作数为数值,可以采用:如果操作数为数值,可以采用:二进制,以B(Binary)结尾;十进制,以D(Decimal)结尾或省略;十六进制,以H(Hexadecimal)结尾,若第一个数字大于9,前要加0。第3章 汇编语言122021-10-16注释:注释:n是对该语句或程序段的简要说明,通常对程是对该语句或程序段的简要说明,通常对程序的作用、主要内容、进入和退出子程序的序的作用、主要内容、进入和退出子程序的条件等关键性内容进行注释,以提高程序的条件等关键性内容进行注释,以提高程序的可读性。可读性。n注释和源程序一起存储、打印,但汇编时不注释和源程

10、序一起存储、打印,但汇编时不会被翻译,因而在机器代码的目的程序中并会被翻译,因而在机器代码的目的程序中并不出现,不会影响程序的执行。不出现,不会影响程序的执行。n注释必须以分号注释必须以分号“;”开始,当注释较长占开始,当注释较长占用多行时,每一行都必须以用多行时,每一行都必须以“;”开始。开始。 第3章 汇编语言132021-10-16指令中使用的符号naddr11-11位目标地址。用于位目标地址。用于ACALL和和AJMP指令,转向下一条指令中的第一个字节所指令,转向下一条指令中的第一个字节所在的同一个在的同一个2K字节程序存储器地址空间内的任字节程序存储器地址空间内的任何地方。何地方。n

11、addr16-16位目标地址。用于位目标地址。用于LCALL和和LJMP指令,可以指向指令,可以指向64K字节程序存储器地址字节程序存储器地址空间的任何地方。空间的任何地方。nbit-可直接位寻址的位地址可直接位寻址的位地址n#-立即数前缀立即数前缀ndirect-直接寻址时数据单元地址直接寻址时数据单元地址第3章 汇编语言142021-10-16nrel-相对偏移量相对偏移量(8位有符号数,位有符号数,-128B+127B) 。nRi-工作寄存器,工作寄存器,i=0,1nRn-工作寄存器,工作寄存器,n=07n-寄存器间接寻址前缀寄存器间接寻址前缀如:如:Ri , DPTRn$-当前指令的地

12、址当前指令的地址n(X)-X单元内容单元内容n(X)-以以X单元的内容为地址的单元中的内单元的内容为地址的单元中的内容容第3章 汇编语言152021-10-163.2 MCS-51系列单片机的寻址方式n在有操作数的指令中,参与操作的数据可能就在指令在有操作数的指令中,参与操作的数据可能就在指令中,也可能在寄存器、存储器、中,也可能在寄存器、存储器、I/O接口中。接口中。n为正确的执行操作,对这些寄存器、存储器、和为正确的执行操作,对这些寄存器、存储器、和I/O接接口要进行编号(也称作地址号)。口要进行编号(也称作地址号)。n而在指令中对这些设备内的数据要进行操作就要指出而在指令中对这些设备内的

13、数据要进行操作就要指出地址。地址。n指令中所规定的寻找操作数地址的方式称为寻址方式。指令中所规定的寻找操作数地址的方式称为寻址方式。n每一种计算机都具有多种寻址方式。寻址方式的多少每一种计算机都具有多种寻址方式。寻址方式的多少即寻址功能是反映指令系统优劣的主要因素之一。即寻址功能是反映指令系统优劣的主要因素之一。nMCS-51指令系统的寻址方式有指令系统的寻址方式有7种。种。第3章 汇编语言162021-10-16操作数寻址方式的相关空间寻址方式寻址方式寻址空间寻址空间寄存器寻址寄存器寻址工作寄存器工作寄存器R0R7A,B,C,DPTR直接寻址直接寻址内部内部RAM的低的低128B特殊功能寄存

14、器特殊功能寄存器内部内部RAM中字节地址为中字节地址为20H2FH的的128个位地址空间个位地址空间特殊功能寄存器中可位寻址的位地址空特殊功能寄存器中可位寻址的位地址空间间第3章 汇编语言172021-10-16操作数寻址方式的相关空间立即寻址立即寻址程序存储器程序存储器寄存器间寄存器间接寻址接寻址内部内部RAM外部外部RAM变址寻址变址寻址程序存储器程序存储器相对寻址相对寻址程序存储器程序存储器位寻址位寻址内部内部RAM中字节地址为中字节地址为20H2FH的的128个位地址空间个位地址空间特殊功能寄存器中可位寻址的位地址空特殊功能寄存器中可位寻址的位地址空间间第3章 汇编语言182021-1

15、0-163.2.1 寄存器寻址寄存器寻址n寄存器寻址就是以通用寄存器中的内容作为操寄存器寻址就是以通用寄存器中的内容作为操作数。在指令中直接以寄存器的名字表示操作作数。在指令中直接以寄存器的名字表示操作数的地址。数的地址。n例如:例如:n MOV A,R0n指令的功能是将寄存器指令的功能是将寄存器R0的内容送入寄存器的内容送入寄存器A。第3章 汇编语言192021-10-163.2.2. 直接寻址直接寻址n指令中直接给出的是操作数的地址。指令中直接给出的是操作数的地址。n例:例:MOV A, 70H;(;(70H)A 指令功能是内部指令功能是内部RAM 70H单元中的内容输入累加器单元中的内容

16、输入累加器A。第3章 汇编语言202021-10-163.2.3 3.2.3 立即寻址立即寻址n立即寻址方式中,操作数直接写在指令中,立即寻址方式中,操作数直接写在指令中,汇编后操作数以指令的形式存放在程序存储汇编后操作数以指令的形式存放在程序存储器中。器中。n如:如:ADD A, #70Hn功能:将数据功能:将数据70H与与A中内容相加中内容相加n请注意,在请注意,在MCS-51汇编语言指令表中,立即汇编语言指令表中,立即数通常用数通常用#data表示,立即数前面必须有符号表示,立即数前面必须有符号“#”。第3章 汇编语言212021-10-16 3.2.4 寄存器间接寻址寄存器间接寻址n由

17、指令指出某一个寄存器的内容作为操作数的由指令指出某一个寄存器的内容作为操作数的地址,这种寻址方式称为寄存器间接寻址。地址,这种寻址方式称为寄存器间接寻址。n注意:在寄存器间接寻址方式中,存放在寄存注意:在寄存器间接寻址方式中,存放在寄存器中的内容不是操作数,而是操作数所在的存器中的内容不是操作数,而是操作数所在的存储器单元地址。储器单元地址。n寄存器间接寻址只能使用寄存器寄存器间接寻址只能使用寄存器R0和和R1作为指作为指针地址,来寻址内部针地址,来寻址内部RAM中的数据;可使用寄中的数据;可使用寄存器存器R0、R1和和DPTR作为指针地址,来访问外作为指针地址,来访问外部部RAM。n寄存器间

18、接寻址用符号寄存器间接寻址用符号“”表示。例如:表示。例如:第3章 汇编语言222021-10-16nMOV R0, A ; A (R0)n假设(假设( R0 )=30H,指令功能是把累加器,指令功能是把累加器A的内的内容写入内部容写入内部RAM的的30H单元中。单元中。nMOVX A,R0;(R0) An指令功能是指令功能是R0所指出的外部所指出的外部RAM单元中的内容送单元中的内容送累加器累加器A。若。若R0内容为内容为60H,而外部,而外部RAM 60H单单元中的内容是元中的内容是3BH,则指令,则指令MOV A,R0的功的功能是将能是将3BH这个数送到累加器这个数送到累加器A。nMOV

19、X A,DPTR第3章 汇编语言232021-10-163.2.5 变址寻址变址寻址n这种寻址方式是以这种寻址方式是以16位的程序计数器位的程序计数器PC或或数据指针数据指针DPTR作为基址寄存器,以累加器作为基址寄存器,以累加器A作为变址寄存器,两种寄存器中的内容相作为变址寄存器,两种寄存器中的内容相加作为操作数的地址。加作为操作数的地址。n这种寻址方式用于读取表格中的数据。这种寻址方式用于读取表格中的数据。nMOVC A, A+PC ;将下条指令第一;将下条指令第一个字节的地址加上个字节的地址加上A中的偏移量作为操作数中的偏移量作为操作数的地址的地址nMOVC A, A+DPTR;将;将D

20、PTR的的内容与内容与A中的偏移量相加作为操作数的地址中的偏移量相加作为操作数的地址第3章 汇编语言242021-10-163.2.6 相对寻址相对寻址n用于程序控制用于程序控制,利用指令修正利用指令修正PC指针的方式指针的方式实现转移。实现转移。n这类方式是以当前这类方式是以当前PC的内容作为基地址,的内容作为基地址,加上指令中给定的偏移量加上指令中给定的偏移量rel所得的结果作为所得的结果作为转移地址。转移地址。n偏移量是带符号数,在偏移量是带符号数,在+127B-128B范围内,范围内,用补码表示。用补码表示。n例如:例如:第3章 汇编语言252021-10-16nJC rel;C=1跳

21、转到跳转到PC+rel所指定的单元继所指定的单元继续执行续执行n第一字节为操作码,第二字节就是相对程序第一字节为操作码,第二字节就是相对程序计数器计数器PC当前地址(当前地址(PC的当前地址是指向的当前地址是指向下一条指令的第一字节的)的偏移量下一条指令的第一字节的)的偏移量rel。n若转移指令操作码存放在若转移指令操作码存放在1000H单元,该指单元,该指令执行时令执行时PC的内容已经为的内容已经为1002H。设偏移。设偏移量量rel为为05H,则转移地址为,则转移地址为1007H。当。当C=1时,去时,去1007H执行单元中的指令。执行单元中的指令。第3章 汇编语言262021-10-16

22、3.2.7 位寻址位寻址n从本质上说,位寻址不是一种新的寻址方从本质上说,位寻址不是一种新的寻址方式,而是前述寻址方式的一种特殊形式。式,而是前述寻址方式的一种特殊形式。位寻址的对象是可位寻址空间中的一个位,位寻址的对象是可位寻址空间中的一个位,而不是一个字节。而不是一个字节。 第3章 汇编语言272021-10-16在在MCS-51系统中,位地址的表示可以采用以系统中,位地址的表示可以采用以下几种方式:下几种方式:(1) 直接使用位寻址区直接使用位寻址区00HFFH范围内的范围内的某一位的位地址表示。某一位的位地址表示。(2) 采用第几单元第几位的表示方法,如采用第几单元第几位的表示方法,如

23、25H.5表示表示25H单元的单元的D5位。位。(3) 对于特殊功能寄存器,可直接用寄存对于特殊功能寄存器,可直接用寄存器名加位数表示,如器名加位数表示,如TCON.3,P1.0等。等。第3章 汇编语言282021-10-16n指令对存储空间进行的操作是由指令的操作码和指令对存储空间进行的操作是由指令的操作码和寻址方式确定的寻址方式确定的n对于程序存储器只能采用立即寻址和基址加变址对于程序存储器只能采用立即寻址和基址加变址寄存器间接寻址方式寄存器间接寻址方式n特殊功能寄存器只能采用直接寻址方式,不能采特殊功能寄存器只能采用直接寻址方式,不能采用寄存器间接寻址用寄存器间接寻址n对对8052/80

24、32等单片机内部的高等单片机内部的高128字节字节(80H0FFH)只能采用寄存器间接寻址,不能)只能采用寄存器间接寻址,不能使用直接寻址方式使用直接寻址方式n外部扩展的数据寄存器只能用寄存器间接寻址外部扩展的数据寄存器只能用寄存器间接寻址n而内部而内部RAM的低的低128字节(字节(007FH)既可用直接)既可用直接寻址,也可用寄存器间接寻址,操作指令最丰富。寻址,也可用寄存器间接寻址,操作指令最丰富。第3章 汇编语言292021-10-16nMOVR0,#30H;nMOVA,R0;nMOVR1,A;nMOVB,R1;nMOVR1,P1;nMOVP2,P1;nMOV10H,#20H ;例例1

25、:设片内设片内RAM的的30H单元的内容为单元的内容为40H,40H单元的内容单元的内容为为10H,10H单元的内容为单元的内容为00H,端口,端口P1中的内容为中的内容为0CAH。试分析下列程序,并说明:各条指令是什么寻。试分析下列程序,并说明:各条指令是什么寻址方式?程序执行后各单元、寄存器及端口的内容。址方式?程序执行后各单元、寄存器及端口的内容。n程序执行后,程序执行后,(R0)=30H,(A)=40H,(R1)=40H, (B)=10H,(P2)=0CAH,(P1)=0CAH,(40H)=0CAH,(10H)=20H。寄存器寻址,立即寻址寄存器寻址,立即寻址寄存器寻址,寄存器间接寻址

26、寄存器寻址,寄存器间接寻址寄存器寻址,寄存器寻址寄存器寻址,寄存器寻址寄存器寻址,寄存器间接寻址寄存器寻址,寄存器间接寻址寄存器间接寻址,直接寻址寄存器间接寻址,直接寻址直接寻址,直接寻址直接寻址,直接寻址直接寻址,立即寻址直接寻址,立即寻址第3章 汇编语言302021-10-163.3 MCS-51系列单片机的指令系统MCS-51指令系统用指令系统用42种助记符表示了种助记符表示了33种指令功能。种指令功能。共有共有111条指令,条指令,256种机器码。种机器码。按字节分:按字节分:n单字节指令单字节指令49条条n双字节指令双字节指令45条条n三字节指令三字节指令17条条按执行时间:按执行时

27、间:n单周期指令单周期指令64条条n双周期指令双周期指令45条条n四周期指令四周期指令2条条按指令功能:按指令功能:数据传送指令数据传送指令29条条算术运算指令算术运算指令24条条逻辑运算指令逻辑运算指令24条条控制转移指令控制转移指令17条条布尔处理指令布尔处理指令17条条第3章 汇编语言312021-10-163.3.1 数据传送指令(29条)n数据传送指令一般的操作是把源操作数传送到所指定数据传送指令一般的操作是把源操作数传送到所指定的目的地址,指令执行后,源操作数不变,目的操作的目的地址,指令执行后,源操作数不变,目的操作数为源操作数所代替。数为源操作数所代替。n数据传送是一种最基本最

28、主要的操作,它是编制程序数据传送是一种最基本最主要的操作,它是编制程序时使用最频繁的一类指令,数据传送是否快速对整个时使用最频繁的一类指令,数据传送是否快速对整个程序的执行效率起很大的作用。程序的执行效率起很大的作用。n在在MCS-51指令系统中,数据传送指令非常灵活,它指令系统中,数据传送指令非常灵活,它可以把数据方便的传送到数据存储器和可以把数据方便的传送到数据存储器和I/O口。口。n数据传送类指令用到的助记符有:数据传送类指令用到的助记符有:MOV、MOVX、MOVC、XCH、XCHD、PUSH、POP。第3章 汇编语言322021-10-16工作组寄存器工作组寄存器R0R7直接地址直接

29、地址direct累加器累加器ACC立即数立即数#data间接寻址间接寻址Ri,DPTR直接地址直接地址Direct (bit)数据传送路径数据传送路径位累加器位累加器Cy第3章 汇编语言332021-10-16传送指令归纳起来只有传送指令归纳起来只有5种:种:n片内片内RAM传送:传送:MOVn片外片外RAM传送:传送:MOVXn访问访问ROM的传送(查表):的传送(查表):MOVCn累加器交换:累加器交换:XCH、XCHD、SWAPn堆栈操作:堆栈操作:PUSH、POP第3章 汇编语言342021-10-161内部数据传送指令(1) 以累加器以累加器A为目的操作数的指令为目的操作数的指令MO

30、V A, RnMOV A, directMOV A, RiMOV A, #data这组指令的功能是将这组指令的功能是将Rn、direct、Ri单元单元中的内容或中的内容或#data送入目的单元累加器送入目的单元累加器A中。中。 第3章 汇编语言352021-10-16(2) 以以Rn为目的操作数的指令为目的操作数的指令MOV Rn, AMOV Rn, directMOV Rn, #data这组指令的功能是将这组指令的功能是将A、direct单元的内容或单元的内容或#data送入目的单元工作寄存器送入目的单元工作寄存器Rn中。中。第3章 汇编语言362021-10-16(3) 以直接地址为目的操

31、作数的指令以直接地址为目的操作数的指令MOV direct, AMOV direct, RnMOV direct, directMOV direct, RiMOV direct, #data这组指令的功能是将这组指令的功能是将A、Rn、direct、Ri单元中的内容或单元中的内容或#data送入目的单元送入目的单元direct中。中。第3章 汇编语言372021-10-16(4) 以寄存器间接寻址的单元为目的操作以寄存器间接寻址的单元为目的操作数的指令数的指令MOV Ri, AMOV Ri, directMOV Ri, #data这组指令的功能是将这组指令的功能是将A、direct单元的内容或

32、单元的内容或#data送入目的单元送入目的单元Ri中。中。第3章 汇编语言382021-10-16(5) 16位数据传送指令位数据传送指令MOV DPTR, #data16这条指令是将这条指令是将16位的立即数送入位的立即数送入DPTR,高,高8位数据送入位数据送入DPH,低,低8位数据送入位数据送入DPL。第3章 汇编语言392021-10-16(6) 栈操作指令栈操作指令PUSH directPOP direct在在MCS-51单片机内部单片机内部RAM中可以设定一个中可以设定一个后进先出(后进先出(LIFO)的堆栈区,在特殊功能寄)的堆栈区,在特殊功能寄存器中有一个堆栈指针存器中有一个堆

33、栈指针SP用于指示栈顶的位用于指示栈顶的位置。置。第3章 汇编语言402021-10-16进栈指令进栈指令的执行过程为:首先将堆栈指针的执行过程为:首先将堆栈指针SP的内容加的内容加1,然后将直接地址所指出的内容送,然后将直接地址所指出的内容送入入SP所指向的内部所指向的内部RAM单元。单元。出栈指令出栈指令的执行过程为:首先将的执行过程为:首先将SP所指的内所指的内部部RAM单元的内容送入由直接地址所指示的单元的内容送入由直接地址所指示的单元,然后将堆栈指针单元,然后将堆栈指针SP的内容减的内容减1。进栈指令用于保护进栈指令用于保护CPU现场,而出栈指令用现场,而出栈指令用于恢复于恢复CPU

34、现场,在编写程序时要注意出入现场,在编写程序时要注意出入栈数据的平衡。栈数据的平衡。第3章 汇编语言412021-10-16(7) 字节交换指令字节交换指令XCH A, RnXCH A, Ri这组指令实现的将累加器这组指令实现的将累加器A和源操作数的内和源操作数的内容互换。容互换。(8) 半字节交换指令半字节交换指令XCHD A, Ri;将;将A与与Ri所指单元的所指单元的低低4位互换,高位互换,高4位保持不变位保持不变SWAP;将;将A的高的高4位与低位与低4位互换位互换第3章 汇编语言422021-10-162累加器A与外部数据存储器间传送指令MOVX A, DPTRMOVX A, RiM

35、OVX DPTR, AMOVX Ri, A这组指令的功能是累加器这组指令的功能是累加器A与外部扩展的数与外部扩展的数据存储器或据存储器或IO端口之间的数据传送。端口之间的数据传送。由于外部由于外部RAM与与IO是统一编址的,共占是统一编址的,共占64KB空间,所以指令本身并不能分辨是对空间,所以指令本身并不能分辨是对RAM还是还是IO操作,而是由硬件的地址分配决操作,而是由硬件的地址分配决定的。定的。 第3章 汇编语言432021-10-163查表指令查表指令用于查找存放在程序存储器中的常查表指令用于查找存放在程序存储器中的常数表格。查表指令有两条。数表格。查表指令有两条。(1)MOVC A,

36、 A+PCA的内容作为无符号偏移量与的内容作为无符号偏移量与PC的内容(下的内容(下一条指令的起始地址)相加,得到一个一条指令的起始地址)相加,得到一个16位位的地址,将该地址指示的程序存储器单元的的地址,将该地址指示的程序存储器单元的内容送入累加器内容送入累加器A。指令不改变指令不改变PC的值,只要根据的值,只要根据A中的内容就中的内容就可以取出表格中的常数,但表格只能放在该可以取出表格中的常数,但表格只能放在该查表指令后的查表指令后的256个单元中,表格的大小受个单元中,表格的大小受到限制,而且表格只能被一段程序使用。到限制,而且表格只能被一段程序使用。第3章 汇编语言442021-10-

37、163查表指令(2)MOVC A, A+DPTRA的内容作为无符号偏移量与的内容作为无符号偏移量与DPTR的内容相的内容相加,得到一个加,得到一个16位的地址,将该地址指示的位的地址,将该地址指示的程序存储器单元的内容送入累加器程序存储器单元的内容送入累加器A。指令的执行结果只与指令的执行结果只与DPTR和累加器和累加器A的内容的内容有关,而与该指令存放的地址以及常数表格有关,而与该指令存放的地址以及常数表格存放的地址无关,因此表格的大小和位置可存放的地址无关,因此表格的大小和位置可以在以在64KB程序存储器中任意安排,并且一个程序存储器中任意安排,并且一个表格可以被多个程序块使用。表格可以被

38、多个程序块使用。第3章 汇编语言452021-10-163.3.2 算术运算指令(24条)n算术运算指令主要完成加、减、乘、除四则运算,以及算术运算指令主要完成加、减、乘、除四则运算,以及加加1、减、减1、BCD码的运算和调整等。除加码的运算和调整等。除加1、减、减1运算运算外,这类指令大多数要影响到程序状态字寄存器外,这类指令大多数要影响到程序状态字寄存器PSW。n虽然算术逻辑单元虽然算术逻辑单元ALU仅能对仅能对8位无符号整数进行运算,位无符号整数进行运算,但利用进位位但利用进位位C,可进行多字节无符号整数的运算。,可进行多字节无符号整数的运算。n利用溢出标志,还可以方便地对带符号数进行补

39、码运算。利用溢出标志,还可以方便地对带符号数进行补码运算。n算术操作类指令可分为加法、带进位加、带借位减、增算术操作类指令可分为加法、带进位加、带借位减、增量、减量及其它运算指令共量、减量及其它运算指令共6组,每组组,每组4条。除最后一组条。除最后一组外,外,4条指令的源操作数分别采用寄存器寻址、直接寻条指令的源操作数分别采用寄存器寻址、直接寻址、寄存器间接寻址以及立即寻址,而目的操作数都是址、寄存器间接寻址以及立即寻址,而目的操作数都是累加器累加器A。第3章 汇编语言462021-10-16(1) 不带进位加法指令不带进位加法指令(4条条)nADD A,Rn ;(A)+(Rn) (A)nAD

40、D A,direct ;(A)+(direct) (A)nADD A,Ri ;(A)+(Ri) (A)nADD A,#data ;(A)+data(A)n以上指令把立即数、直接地址、间接地址以及工作以上指令把立即数、直接地址、间接地址以及工作寄存器内容与累加器寄存器内容与累加器A中内容相加,结果送入中内容相加,结果送入A中。中。n无论是哪一条加法指令,参加运算的都是两个无论是哪一条加法指令,参加运算的都是两个8位二位二进制数。进制数。n对于指令的使用都来说,这些对于指令的使用都来说,这些8位二进制数既可以看位二进制数既可以看作是无符号数作是无符号数(0255),也可以看作是带符号数,即,也可以

41、看作是带符号数,即补码数补码数(-128+127),这完全由使用者事先设计。,这完全由使用者事先设计。n但计算机在作加法运算时,总是按以下规定进行:但计算机在作加法运算时,总是按以下规定进行:1. 加法指令第3章 汇编语言472021-10-16n在求和时,都是把操作数直接相加,而无需作任何在求和时,都是把操作数直接相加,而无需作任何变换。变换。n在相加过程中,当在相加过程中,当D6向向D7有进位时,而有进位时,而D7到到CY无进位,或无进位,或D6到到D7无进位,但无进位,但D7到到CY有进位,有进位,均使溢出标志均使溢出标志OV=1。 如果使用者处理的是有符号数,数据的溢出由如果使用者处理

42、的是有符号数,数据的溢出由OV表示;若处理的是无符号数,则运算结果的溢出用表示;若处理的是无符号数,则运算结果的溢出用CY表示。表示。n加法指令还影响辅助进位标志加法指令还影响辅助进位标志AC和奇偶标志和奇偶标志P。 在相加过程中,当在相加过程中,当D3位产生对位产生对D4位的进位时,位的进位时,AC=1;若相加后;若相加后A中中1的个数为偶数,则的个数为偶数,则P=0。第3章 汇编语言482021-10-16例例 :(A)0C3H,(R0)0AAH执行指令执行指令 ADD A,R0,则操作如下:,则操作如下: 1100 0011 + 1010 1010 1 0110 1101n运算后,运算后

43、,CY 1,OV1,AC0,P1,A6DH。n若把若把C3H和和AAH看作无符导数相加,则不考虑溢出,看作无符导数相加,则不考虑溢出,结果为结果为16DH,若把,若把C3H和和AAH看作有符号数,则得到看作有符号数,则得到2个负数相加得正数的错误结论,此时,个负数相加得正数的错误结论,此时,OV1,表示,表示出错。出错。nOV溢出标志取决于带符号数运算时的第溢出标志取决于带符号数运算时的第6、7位中有一位中有一位产生进位而另一位不产生进位,则使位产生进位而另一位不产生进位,则使OV1,否则,否则OV0。OV1表示两正数相加,和变成负数,或两负表示两正数相加,和变成负数,或两负数相加,和变成正数

44、的错误结果。数相加,和变成正数的错误结果。n溢出标志溢出标志OV在在CPU内部是靠硬件异或门获得的。内部是靠硬件异或门获得的。第3章 汇编语言492021-10-16(2) 带进位加法指令带进位加法指令(4条条)nADDC A,Rn ;(A)+(Rn)+(C) (A)nADDC A,direct ;(A)+(direct) +(C) (A) nADDC A,Ri ;(A)+(Ri)+(C) (A)nADDC A,#data ;(A)+ #data +(C) (A)n以上指令除了需考虑进位位外,和前面的一般加以上指令除了需考虑进位位外,和前面的一般加法指令完全相同。法指令完全相同。第3章 汇编语

45、言502021-10-16例例3:(A)AEH,(R0)81H,(Cy)1,执行指令,执行指令ADDC A,R0,则操作如下,则操作如下n 1010 1110n 1000 0001n + 1 1 0011 0000n运算后,运算后,CY1,OV1,AC1第3章 汇编语言512021-10-16(3) 增量指令增量指令INC(5条条)nINC A ;(A)+l(A)nINC Rn ;(Rn)+1(Rn)nINC direct ;(direct)+1(direct)nINC Ri ;(Ri)+1(Ri)nINC DPTR ;(DPTR) +1(DPTR) nINC指令把所指的寄存器内容加指令把所指

46、的寄存器内容加1,结果仍送回原,结果仍送回原寄存器,若原来寄存器的内容为寄存器,若原来寄存器的内容为FFH,则加,则加1后将后将为为00H,运算结果不影响任何标志位。,运算结果不影响任何标志位。n若直接地址是若直接地址是I/O口,则进行口,则进行“读读改改写写”操作。操作。其功能是先读入端口锁存器的内容,然后在其功能是先读入端口锁存器的内容,然后在CPU中加中加l,继而输出到端口。,继而输出到端口。第3章 汇编语言522021-10-16n(4) 十进制调整指令十进制调整指令(1条条)n DA An这条指令是在进行这条指令是在进行BCD码运算时,跟在码运算时,跟在ADD和和ADDC指令之后,将

47、相加后存放在累加器指令之后,将相加后存放在累加器A中的结果进行修正。中的结果进行修正。n修正的条件和方法为:修正的条件和方法为:n若若(A03)9或或(AC)1,则,则(A03)+06H (A03); n若若(A47)9或或(CY)1,则,则(A47) +60H (A47)。n若以上两条同时发生,或高若以上两条同时发生,或高4位虽等于位虽等于9,但低,但低4位修正位修正后有进位,则应加后有进位,则应加66H修正。修正。n以上讨论的修正情况是由以上讨论的修正情况是由ALU硬件中的十进制修正电硬件中的十进制修正电路自动进行的,用户不必考虑何时该加路自动进行的,用户不必考虑何时该加6,使用时只需,使

48、用时只需在在ADD和和ADDC后面紧跟一条后面紧跟一条DA A指令即可。指令即可。n注意:本指令不能用于注意:本指令不能用于BCD码减法的调整码减法的调整!第3章 汇编语言532021-10-16(1) 带借位减法指令带借位减法指令(4条条)nSUBB A,Rn ;(A)-(Rn)-(C) (A)nSUBB A,direct ;(A)-(direct) -(C) (A) nSUBB A,Ri ;(A)-(Ri)-(C) (A)nSUBB A,#data ;(A)- #data -(C) (A)n这组指令是从累加器这组指令是从累加器A中减去源操作数和中减去源操作数和Cy标志,标志,结果在累加器中

49、。同样地,要减的结果在累加器中。同样地,要减的Cy标志也是该标志也是该指令执行前的值,因此在第一次做减法时要先将指令执行前的值,因此在第一次做减法时要先将Cy清零。清零。n减法指令对标志位的影响与加法指令类似。减法指令对标志位的影响与加法指令类似。2.减法指令第3章 汇编语言542021-10-16例:例:AC9H,R354H,CY1执行指令执行指令SUBB A,R3,则操作如下:,则操作如下:n 1100 1001n - 1n 1100 1000n - 0101 0100n 0111 0100n运算后,运算后,CY0,AC0,OV1,P0,A74H。n若在进行单字节或多字节减法运算前,不知借

50、位标志位若在进行单字节或多字节减法运算前,不知借位标志位CY的值,则应在进行运算前对的值,则应在进行运算前对CY清清0。第3章 汇编语言552021-10-16(2) 减量指令减量指令(4条条)nDEC A ;(A)-l(A)nDEC Rn ;(Rn)-1(Rn)nDEC direct ;(direct)-1(direct)nDEC Ri ;(Ri)-1(Ri)nDEC指令把所指的寄存器内容减指令把所指的寄存器内容减1、结果仍送回、结果仍送回原寄存器,若原来寄存器的内容为原寄存器,若原来寄存器的内容为00H,则减,则减1后后将为将为FFH,运算结果不影响任何标志位。,运算结果不影响任何标志位。

51、n该组指令使用了直接寻址、寄存器寻址和寄存器该组指令使用了直接寻址、寄存器寻址和寄存器间接寻址。间接寻址。n同加同加1指令一样若直接地址是指令一样若直接地址是I/O口,则进行口,则进行“读读改改写写”操作。操作。第3章 汇编语言562021-10-16 MUL AB ; n这条指令的功能是把累加器这条指令的功能是把累加器A和寄存器和寄存器B中的中的8位无位无符号整数相乘,所得符号整数相乘,所得16位乘积的低位乘积的低8位存放在位存放在A中,中,高高8位存放在位存放在B中。中。n若乘积大于若乘积大于FFH,则溢出标志,则溢出标志OV置置l,否则清,否则清0,乘法运算总是使进位标志乘法运算总是使进

52、位标志CY0。nA=4DH,B=5DH,执行指令,执行指令MUL A B,则结果如,则结果如下所示:下所示:n (A)1CH , (B)56H ,OV1, CY007815)()()()(ABBA4. 乘法指令(1条)第3章 汇编语言572021-10-16DIV AB ; n这条指令的功能是把累加器这条指令的功能是把累加器A中的中的8位无符号整数除位无符号整数除以寄存器以寄存器B中中8位无符号整数所得商送入位无符号整数所得商送入A中,余数中,余数送人送人B中。中。n除法运算总是使除法运算总是使CY和和OV清清0。n若除数若除数(B中内容中内容)为为00H,则执行结果为不确定值,则执行结果为不

53、确定值,此时,此时,OV1,表示除法溢出。,表示除法溢出。n例例5:(A)87H,(B)0CH,执行指令,执行指令DIV A B,则结果如下所示:则结果如下所示:n (A)0BH , (B)03H, OV0, CY0余数商BABA)()(5. 除法指令(1条)第3章 汇编语言582021-10-16影响标志位的指令:指指 令令有影响的标志位有影响的标志位CyOVACPADDADDCSUBBMUL0DIV0DA第3章 汇编语言592021-10-163.3.3 逻辑运算指令(24条)n逻辑操作类指令共有逻辑操作类指令共有25条,有与、或、异或、条,有与、或、异或、求反、左右移位、清求反、左右移位

54、、清0等逻辑操作。等逻辑操作。n对应的寻址方式有直接寻址、寄存器寻址和对应的寻址方式有直接寻址、寄存器寻址和寄存器间接寻址,该类指令的执行一般不影寄存器间接寻址,该类指令的执行一般不影响响PSW。第3章 汇编语言602021-10-16(1) 逻辑与指令逻辑与指令(6条条)nANL A,Rn ;(A)(Rn) (A)nANL A, direct ;(A)#data (A)nANL A,Ri ;(A)(Ri) (A)nANL A,#data ;(A)#data (A)nANL direct,A ;(direct)(A) (direct)nANL direct,#data ;(direct)#da

55、ta (direct)n若直接地址正好是若直接地址正好是I/O口,则是口,则是“读读改改写写”操作。操作。n逻辑与指令常用于将字节中的某些位清零。逻辑与指令常用于将字节中的某些位清零。1.两个操作数的逻辑运算指令第3章 汇编语言612021-10-16(2) 逻辑或指令逻辑或指令(6条条)nORL A,Rn ;(A) (Rn) (A)nORL A, direct ;(A) (direct) (A)nORL A,Ri ;(A) (Ri) (A)nORL A,#data ;(A) #data (A)nORL direct,A ;(direct) (A) (direct)nORL direct,#d

56、ata ;(direct) #data (direct)n若直接地址正好是若直接地址正好是I/O口,则是口,则是“读读改改写写”操作。操作。n逻辑与指令常用于将字节中的某些位置逻辑与指令常用于将字节中的某些位置1。第3章 汇编语言622021-10-16(3) 逻辑异或指令逻辑异或指令(6条条)nXRL A,Rn ;(A) (Rn) (A)nXRL A,direct ;(A) (direct) (A)nXRL A,Ri ;(A) (Ri) (A)nXRL A,#data ;(A) #data (A)nXRL direct,A ;(direct) (A) (direct)nXRL direct,

57、#data ;(direct) #data (direct)n若直接地址正好是若直接地址正好是I/O口,则是口,则是“读读改改写写”操作。操作。n逻辑与指令常用于将字节中的某些位取反。逻辑与指令常用于将字节中的某些位取反。第3章 汇编语言632021-10-16(1) 累加器累加器A清零指令清零指令(1条条)nCLR A ;将累加器;将累加器A中的内容清中的内容清0(2) 累加器累加器A取反指令取反指令(1条条)nCPL A ;将累加器;将累加器A中的内容按位取反中的内容按位取反2.累加器A的逻辑操作指令第3章 汇编语言642021-10-16(3) 移位指令移位指令(4条条)nRL A nR

58、R A nRLC A nRRC A n前两条指令的功能分别是将累加器前两条指令的功能分别是将累加器A的内容循环左的内容循环左移或右移一位,后两条指令的功能分别是将累加器移或右移一位,后两条指令的功能分别是将累加器A的内容连同进位位的内容连同进位位CY一起循环左移或右移一位。一起循环左移或右移一位。A7A0A7A0A7A0CyA7A0Cy第3章 汇编语言652021-10-16例例1:利用左移指令对累加器:利用左移指令对累加器A中内容进行乘中内容进行乘8操作。操作。设设(A)01H,编程如下:,编程如下:n RL A ;02H(A)n RL A ;04H(A)n RL A ;08H(A)例例2:

59、利用右移指令对累加器:利用右移指令对累加器A中内容进行除中内容进行除8操作。操作。设设(A)08H,编程如下:,编程如下:n RR A ;04H(A)n RR A ;02H(A)n RR A ;01H(A)第3章 汇编语言662021-10-16例例3:设:设P1中内容为中内容为AAH,A中内容为中内容为15H,执行下列程,执行下列程序:序:n ANL P1,#0F0H ;(P1)A0Hn ORL P1,#0FH ;(P1)AFHn XRL P1,A ;(P1)BAHn从上例可见,逻辑操作是按位进行的,所以,从上例可见,逻辑操作是按位进行的,所以,“ANL”常用来屏蔽字节中的某些位,要保留的位

60、用常用来屏蔽字节中的某些位,要保留的位用“l”去去“与与”,要清除的位用,要清除的位用“0”去去“与与”。n“ORL”常用来对字节中的某些位置常用来对字节中的某些位置“l”,要保留的位,要保留的位用用“0”去去“或或”,要置,要置1的位用的位用“1”去去“或或”。n“XRL”常用来对字节中的某些位求反,要保留的位用常用来对字节中的某些位求反,要保留的位用“0”去去“异或异或”,要求反的位用,要求反的位用“1”去去“异或异或”。第3章 汇编语言672021-10-16n MOV DPTR,#2000H ;2000H(DPTR)n ANL A,#0FH ;(A) #0FH(A)n MOVX DPT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论