




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1会计学单片机原理及其接口技术单片机原理及其接口技术_MCS单片机指单片机指令系统令系统1、指令:2 、指令系统: 一种确定的CPU,它可以执行什么操作/可执行多少种操作,完全由CPU 设计师确定,用户只能了解、应用这些操作以完成自己的工作。 CPU执行何种操作的命令,由二进码组成,称为机器码。指令由操作码和操作数两部分组成。规定CPU执行操作的全部命令的集合。3 、程序: 指令按照要求有序排列。3.1 MCS-51单片机指令系统概述3.1.1 指令、指令系统的概念7407 H240A H编程举例:设计实现Y=7+100111010000000111B 0010010000001010B 指令
2、=操作码操作数;表示将数据07H送到寄存器A的操作。;表示将寄存器A的数据与数据0AH相加并将结果送回至寄存器A的操作。机器语言7407 H; 240A H;编程举例:设计实现Y=7+10 指令=操作码操作数表示将数据07H送到寄存器A的操作。表示将寄存器A的数据与数据0AH相加并将结果送回至寄存器A的操作。MOV A,#07H; ADD A,#0AH ;汇编语言指令 用助记符号写出的二进制代码(机器语言),称为CPU的汇编语言。汇编语言与二进码指令一一对应。 一般格式: 标号: 操作助记符 目的操作数,源操作数;注释u每条指令通常由操作码和操作数两部分组成u操作码表示计算机执行该指令将进行何
3、种操作u操作数表示参加操作的数的本身或操作数所在的地址u带方括号【】部分不是每条指令都必须有的 例: MAIN:MOV A,32H ;将数32H送到ACC中 注:在两个操作数的指令中,通常目的操 作数写在左边,源操作数写在右边。 操作数个数无操作数单操作数两操作数三操作数 一般格式: 标号: 操作助记符 目的操作数,源操作数;注释 指令一般有功能、时间和空间三种属性指令一般有功能、时间和空间三种属性:功能属性功能属性:是指每条指令都对应一个是指每条指令都对应一个特定的操作功能特定的操作功能;时间属性时间属性:是指一条是指一条指令执行所用的时间指令执行所用的时间,一般用,一般用机器周期机器周期来
4、表示;来表示;空间属性空间属性:是指一条指令是指一条指令在程序存储器中存储所占在程序存储器中存储所占用的字节数用的字节数。9指令长度:指令长度:1字节字节(49),2字节字节(46),3字节字节(16)。10100011INCDPTR)1DPTRDPTR( MOV A,Rn1110rrr1通用寄存器二进制编码1. 一字节指令:一字节指令:102. 二字节指令:二字节指令:第一字节:操作码第一字节:操作码第二字节:操作数第二字节:操作数MOV A,#data位二进制操作数801110100立即数113. 三字节指令:三字节指令:第一字节:操作码第一字节:操作码第二、三字节:操作数(数据、地址)第
5、二、三字节:操作数(数据、地址)MOV direct,#data立即数直接地址01010011立立即即数数直直接接地地址址12指令字节数总结指令字节数总结1、操作码占一个或者不到一个字节。、操作码占一个或者不到一个字节。2、一个操作数占一个或者两个字节。、一个操作数占一个或者两个字节。3、一个地址占一个或者两个字节。、一个地址占一个或者两个字节。4、SFR不单独占一个字节,隐藏在操作码中。不单独占一个字节,隐藏在操作码中。13143.1.4 指令的分类 MCS-51单片机指令系统具单片机指令系统具有功能强、指令短、执行有功能强、指令短、执行快快等特点,共有等特点,共有111条条指令。指令。数据
6、传送(29条)算术操作(24条)逻辑操作(4条)程序转移(17条)位操作(17条)功能属性单字节指令(49条)双字节指令(46条)三字节指令(16条)空间属性单机器周期指令(64条)双机器周期指令(45条)4个机器周期的指令(2条)(乘法、除法)时间属性 (1) Ri和和Rn:表示当前工作寄存器区中的工作寄存器。:表示当前工作寄存器区中的工作寄存器。 i取取0或或1,表示,表示R0或或R1。n取取07,表示,表示R0R7。 (2) #data:表示包含在指令中的:表示包含在指令中的8位立即数。位立即数。 (3) #data16:表示包含在指令中的:表示包含在指令中的16位立即数。位立即数。 (
7、4) rel:以补码形式表示的:以补码形式表示的8位相对偏移量,范围为位相对偏移量,范围为 128 127,主要用在相对寻址的指令中。,主要用在相对寻址的指令中。 (5) addr16和和addr11:分别表示:分别表示16位直接地址和位直接地址和11位直接地位直接地址。址。 (6) direct:表示直接寻址的地址。:表示直接寻址的地址。 (7) bit:表示可位寻址的直接位地址。:表示可位寻址的直接位地址。 (8) (X):表示:表示X单元中的内容。单元中的内容。 (9) (X):表示以:表示以X单元的内容为地址的存储器单元内容,单元的内容为地址的存储器单元内容, 即即(X)作地址,该地址
8、单元的内容用作地址,该地址单元的内容用(X)表示。表示。 (10) / :“/”表示对该位操作数取反。表示对该位操作数取反。 (11) :“”表示操作流程,将箭尾一方的内容送入箭头所表示操作流程,将箭尾一方的内容送入箭头所指另一方的单元中去。指另一方的单元中去。 共有7种,即:寄存器寻址、直接寻址、 寄存器间接寻址、立即寻址、 变址寻址、 相对寻址和位寻址,如表3.1所示。 2. 寻址方式的种类 寻找操作数或指令的地址的方式。图图2.7 MCS-51存储器结构图存储器结构图(a) 程序存储器地址分配;程序存储器地址分配;(b) 数据存储器地址分配数据存储器地址分配FFFFH1000H外部ROM
9、0000H内部ROMEA=1外部ROMEA=0工作寄存器区 位寻 址区 数据 缓冲区00H20H30H80H 外部 RAM0000HFFFFH0FFFHSFR2FH7FHFFHFFHMCS-51单片机单片机存储器存储器1FH表3.1 寻址方式及对应的存储器空间寻址方式寻址方式寻址空间寻址空间立即寻址立即寻址程序存储器程序存储器直接寻址直接寻址片内片内RAM低低128字节、字节、SFR寄存器寻址寄存器寻址工作寄存器工作寄存器R0R7,A,B,DPTR寄存器间址寄存器间址片内片内RAM:R0,R1,SP片外片外RAM:R0,R1,DPTR变址寻址变址寻址程序存储器程序存储器:A+PC,A+DPTR
10、相对寻址相对寻址程序存储器程序存储器256字节范围内字节范围内:PC+偏移量偏移量位寻址位寻址片内片内RAM的位寻址区的位寻址区(20H2FH字节地字节地址址)可位寻址的可位寻址的SFR3.2.1 寄存器寻址例3.1 MOV A,R0 ; A (R0)2. 寻址空间R0R7AB(AB)DPTR例3.2 MOV A,R0 ;设(R0)=30H,0工作寄存器组00H7FH30H30H80HFFHAE8HFFFFHMOV A,R00000HROMSFRRAM结果:(A)=30H22 采用寄存器寻址的指令如下:采用寄存器寻址的指令如下: MOV P1,A;将累加器;将累加器A的内容送到的内容送到P1口
11、口 MOV P1,R4 ;将寄存器;将寄存器R4的内容送到的内容送到P1口口 CLR A;将累加器;将累加器A清清0 CPL A;将累加器;将累加器A中的内容取反中的内容取反 RL A;将累加器;将累加器A的内容循环左移的内容循环左移3.2.2 直接寻址2. 寻址空间片内RAM( 128字节)SFR(常采用符号形式)如:MOV A,50H 例3.3 MOV A,60H ;设(60H)=2EH60H7FH2EH2EH80HFFHAFFFFHMOV A,60H0000HROMSFRRAM结果:(A)= 2EHE5H60H00H25 注意:注意:1、若直接寻址的地址是若直接寻址的地址是SFR中的某一
12、个中的某一个时,可用其时,可用其物理地址物理地址,也可用,也可用名称符号名称符号 MOV A,SP ;使用堆栈指针的名称符号;使用堆栈指针的名称符号 MOV A,81H;使用堆栈指针的物理地址;使用堆栈指针的物理地址 26 注意:注意:2、累加器有、累加器有A、ACC和和E0H三种表示形三种表示形式,式,寻址方式不一样寻址方式不一样,但功能相同,但功能相同INC A ;寄存器寻址;寄存器寻址INC ACC ;直接寻址;直接寻址INC 0E0H ;直接寻址;直接寻址27 注意:注意:3、字节地址和位地址的区别、字节地址和位地址的区别MOV A,20H;20H字节字节地址内容送给地址内容送给AMO
13、V C,20H;20H位位地址内容送给地址内容送给C 33.2.3 寄存器间接寻址2.寻址空间片内RAM片外RAM3.间址寄存器R0或R1DPTRMOVMOVX注意:间接寻址寄存器前面必须加上符号“”。例3.4 MOV A, R0 ; A (50H) 设(R0)=50H, (50H)= 6EHE6HFFFFHMOV A, R00000HROM结果:(A)=6EH50H7FH6EH6EH80HFFHASFRRAM50HR0303.2.4 立即寻址3、寻址空间:ROM 例3.5 MOV A, #07H ;7FH07H80HFFHAFFFFHMOV A,#07H0000HROMSFRRAM结果:(A
14、)=0 7H74H07H00H33采用立即数寻址的指令如下:采用立即数寻址的指令如下: MOV P1,#55H;将立即数;将立即数55H送送P1口口 MOV 20H,#55H ;将立即数;将立即数55H送送20H 单元单元 MOV A,#0F0H;将立即数;将立即数0F0H送累加器送累加器A MOV R4,#0FH;将立即数;将立即数0FH送寄存器送寄存器R4中中 MOV R0,#20H;将立即数;将立即数20H送寄存器送寄存器R0口口3.2.5 变址寻址 3. 寻址空间:ROM基址寄存器:DPTRPC偏移量寄存器:A2. 操作数地址:353.2.5 变址寻址36 MOVC A,A+DPTR5
15、5H程序存储区02HA0302H03HDPTR00H0302H图图3.5 变址寻址示意图变址寻址示意图例3.6 MOVC A, A+DPTR ;7FH0FH80HFFHAFFFFHMOVC A, A+DPTR 0000HROMSFRRAM结果:(A)=88H93H88H00H24H2400H+0FH= 240FH 240FHDPLDPH88H00H38 指指程序计数器程序计数器PC的当前内容的当前内容与与指令中的操作数指令中的操作数相加相加,其,其结果作为跳转指令的转移地址结果作为跳转指令的转移地址(也称目的地(也称目的地址)。该类寻址方式主要用于址)。该类寻址方式主要用于跳转指令跳转指令。
16、SJMP rel 将将PC当前的内容与当前的内容与rel(-128127)相加,结果再送相加,结果再送回回PC中,成为下一条将要执行指令的地址。中,成为下一条将要执行指令的地址。 3.2.6 相对寻址PC的当前值:读出该2字节或3字节的跳转指令后,PC指向的下条指令的地址。39SJMP 54H54H程序存储区54HA2001H20HPC02H2056HXX80H2056H2000H图图3.6 相对寻址示意图相对寻址示意图例3.7 JC rel ;设 rel75H,PSW.7为 “1”7FH1000 000080HFFHPSW1002HJC rel1000HROMSFRRAM结果: 程序转向10
17、77H单元40H75H1001H1077H1000H+02H= 1002H PC值字节数1002H+75H= 1077H 当前PC值新PC值00H0FFFH3.2.7 位寻址SFR的寻址位常用符号位地址表示,如: CLR ACC.0 MOV 30H,C2. 寻址空间片内RAM中位寻址区SFR中的可寻址位寻址方式寻址方式寻址空间寻址空间立即寻址立即寻址程序存储器程序存储器直接寻址直接寻址片内片内RAM低低128字节、字节、SFR寄存器寻址寄存器寻址工作寄存器工作寄存器R0R7,A,B,DPTR寄存器间址寄存器间址片内片内RAM:R0,R1,SP片外片外RAM:R0,R1,DPTR变址寻址变址寻址
18、程序存储器程序存储器:A+PC,A+DPTR相对寻址相对寻址程序存储器程序存储器256字节范围内字节范围内:PC+偏移量偏移量位寻址位寻址片内片内RAM的位寻址区的位寻址区(20H2FH字节地字节地址址)可位寻址的可位寻址的SFRMOV A, R2MOV B, R0MOV B, #25HMOV DPTR,#1234H这些数存在ROM中,寻址在程序存储器中。MOV R0, AMOVX A, R0寻址在内部RAM寻址在外部RAMMOV 20H, P0LJMP 5678H寻址在内部RAM和SFR中。寻址在程序存储ROM中MOVC A,A+PCMOVC A,A+DPTR 寻址在程序存储ROM中SJMP
19、 rel JC rel寻址在程序存储ROM中Rel取值:128127MOV C,7FHMOV C , 2F.7 MOV C , ACC.750 3.3 数据传送类指令数据传送类指令 数据传送指令是数据传送指令是MCS-51MCS-51单片机汇编语言程序设计单片机汇编语言程序设计中使用最频繁的指令。中使用最频繁的指令。 数据传送操作是指把数据传送操作是指把数据从源地址传送到目的地数据从源地址传送到目的地址,源地址内容不变。址,源地址内容不变。 数 据目的地址目的地址 源地址源地址数 据51通用格式:通用格式: MOV 目的操作数目的操作数 , 源操作数源操作数 源操作数可以是源操作数可以是:累加
20、器:累加器A、通用寄存器、通用寄存器Rn、直接地址直接地址direct、间接地址和立即数;、间接地址和立即数;目的操作数可以是目的操作数可以是:累加器:累加器A、通用寄存器、通用寄存器Rn、直接地址、直接地址direct和间接地址和间接地址 注: (1) data(立即数)不能用作目的操作数; 2) 源操作数与目的操作数不能相同(除 direct外); 3) 寄存器寻址与寄存器及其间址间不能相互传送。传送关系目的操作数源操作数AARnRndirect1direct2RiRi#data数据传送类指令(数据传送类指令(28条)条)(1)内部)内部RAM数据传送指令数据传送指令(15条条)(2)外部
21、数据传送指令()外部数据传送指令(7条)条)(3)堆栈操作指令)堆栈操作指令(2条条)(4)数据交换指令)数据交换指令(4条条)54(1)内部)内部RAM数据传送指令数据传送指令(15条条) 内部内部RAM是数据传送最为频繁的部分,这其中是数据传送最为频繁的部分,这其中有有寄存器寄存器、累加器、累加器、RAM单元单元以及以及特殊功能寄存器特殊功能寄存器之间的相互数据传送。之间的相互数据传送。立即寻址型传送指令立即寻址型传送指令MOV A,#data;AdataMOV Rn,#data; RndataMOV direct,#data;direct dataMOV Ri,#data; (Ri)da
22、ta(1)内部)内部RAM数据传送指令数据传送指令(15条条) 内部内部RAM是数据传送最为频繁的部分,这其中是数据传送最为频繁的部分,这其中有有寄存器寄存器、累加器、累加器、RAM单元单元以及以及特殊功能寄存器特殊功能寄存器之间的相互数据传送。之间的相互数据传送。MOV A , direct ; A(direct)MOV direct,A;direct AMOV Rn, direct ; Rn(direct)MOV Ri , direct ; (Ri) (direct)MOV direct2 , direct1; direct2 (direct1)直接寻址型传送指令直接寻址型传送指令56 已
23、知:已知:R1=32H、(30H)AAH、 (31H)BBH、 (32H)CCH,执行如下指令后,执行如下指令后A、50H、R6、32H和和P1中的内容是什么。中的内容是什么。FFFFH0000HROM30H7FH80HFFHASFRRAM00H01H31H32H50HP132HAAHBBHCCHR0R157 已知:已知:R1=32H、(30H)AAH、 (31H)BBH、 (32H)CCH,执行如下指令后,执行如下指令后A、50H、R6、32H和和P1中的内容是什么。中的内容是什么。MOV A,30HMOV 50H,AMOV R6,31HMOV R1,30HMOV P1 ,32HA=AAH(
24、50H)=AAHR6=BBH(32H)=AAHP1=AAH58MOV A, RiMOV Ri,AMOV direct , Ri寄存器寻址型传送指令寄存器寻址型传送指令MOV A , Rn MOV Rn,AMOV direct , Rn寄存器间址型传送指令寄存器间址型传送指令59 已知:已知: (40H)11H、 (41H)22H、 R0=40H和和R141H,执行如下指令后,执行如下指令后A、40H、41H和和42H中的内容是什么。中的内容是什么。MOV A, R0MOV R1,AMOV 42H , R1A11H、 (40H)11H、 (41H)11H和(42H)11H60 dirRi Rn#
25、dataAMOV A , Rn #data dir RiMOV dir ,A Rn, Ri #data dir MOV Rn , MOV Ri,A dir #data 内部内部RAM、SFR之间的传送之间的传送MOV指令指令 A dir #data61外部程序存储器外部程序存储器ROM数据传送指令数据传送指令MOVC(2)外部数据传送指令()外部数据传送指令(7条)条)MOV DPTR,#data16 ; DPTRdata16外部数据存储器外部数据存储器RAM数据传送指数据传送指令令MOVX62外部程序存储器外部程序存储器ROM数据传送指令数据传送指令MOVC A,A+DPTR; A (A+D
26、PTR)MOVC A ,A+PC ;PC PC +1,A(A+PC)专门用作查表,又称作查表指令。专门用作查表,又称作查表指令。63使用使用Ri进行间接寻址进行间接寻址MOVX A,Ri; A (Ri)(i=0,1)MOVX Ri,A;(;(Ri)(A)(i=0,1)寻址范围:寻址范围:256字节字节注:外部注:外部RAMRAM数据传送只能通过数据传送只能通过累加器累加器A A进行进行使用使用DPTR进行间接寻址进行间接寻址MOVX A,DPTR ; A (DPTR)MOVX DPTR,A ;(;(DPTR)A外部数据存储器外部数据存储器RAM数据传送指令数据传送指令寻址范围:寻址范围:64K
27、字节字节6465(3)堆栈操作指令)堆栈操作指令(2条条)进栈指令进栈指令PUSH direct;SP SP+1,(SP) (direct) 出栈指令出栈指令POP direct; (direct) (SP) , SP SP-166MOV SP,#70HPUSH 30HPUSH 40HPOP 30HPOP 40H75H74H73H72H71H70H栈底XY67堆栈操作指令是堆栈操作指令是直接寻址直接寻址指令!指令!PUSH和和POP后面只能是直接地址!后面只能是直接地址!PUSH ACCPUSH 00HPOP ACCPOP 00HPUSH APUSH R0POP APOP R068(4)数据交
28、换指令)数据交换指令(4条条)在在内部内部RAMRAM和和累加器累加器A A之间进行之间进行整字节交换指令整字节交换指令XCH A,Rn;ARnXCH A,direct;A (direct)XCH A,Ri;A (Ri)半字节交换指令半字节交换指令字节单元与累加器进行低字节单元与累加器进行低4 4位的半字节交换。位的半字节交换。XCHD A,Ri ;A30 (Ri)3069 外部外部RAM的的20H单元有一数单元有一数X,内部,内部RAM的的20H单元有一数单元有一数Y,将它们进行交换。将它们进行交换。MOV R1,#20HMOVX A,R1XCH A ,R1MOVX R1, A70 数据传送
29、指令几个注意的地方:数据传送指令几个注意的地方:MOVX A,DPTR;(外部;(外部RAM内容送累加器)内容送累加器)执行此指令执行此指令,P3.7引脚上输出引脚上输出/RD 有效信号有效信号(低电平低电平),DPTR包含包含16位地址信息由位地址信息由P0(低(低8位)、位)、P2口(高口(高8位)提供,位)提供,数据由数据由P0口输入到累加器。口输入到累加器。71 数据传送指令几个注意的地方:数据传送指令几个注意的地方:MOVX DPTR,A;(累加器内容送外部;(累加器内容送外部RAM)执行此指令执行此指令,P3.6引脚上输出引脚上输出 /WR有效信号有效信号(低电平低电平),DPTR
30、包含包含16位地址信息由位地址信息由P0(低(低8位)、位)、P2口(高口(高8位)提供,位)提供,数据由数据由P0口写入外部口写入外部RAM。数据传送类指令(数据传送类指令(28条)条)(1)内部)内部RAM数据传送指令数据传送指令(15条条)(2)外部数据传送指令()外部数据传送指令(7条)条)(3)堆栈操作指令)堆栈操作指令(2条条)(4)数据交换指令)数据交换指令(4条条)表表 3.2 数据传送类指令一览表数据传送类指令一览表 表表 3.2 数据传送类指令一览表数据传送类指令一览表(续续) 课堂师生互动课堂师生互动题题1答答题题2答答题题3答答题题4答答题题5答答试按下列要求传送数据试
31、按下列要求传送数据1. 将将R5中的数据传送到中的数据传送到50H。2.将将R7中的数据传送到中的数据传送到R6。3.将立即数将立即数40H传送到以传送到以R0中内中内 容为地址的存储单元中。容为地址的存储单元中。4.将片外将片外RAM50H中的数据传中的数据传 送到片内送到片内RAM40H单元中。单元中。5.将将R1中的数据传送到以中的数据传送到以R0中中 内容为地址的存储单元中。内容为地址的存储单元中。MOV 50H, R5题题1答答题题2答答 MOV A, R7MOV R6, AMOV R0, #40H 题题3答答 题题4答答MOV R0 ,#50HMOVX A, R0MOV 40H,
32、AMOV A, R1MOV R0, A题题5答答3.4 算术与逻辑运算指令3.4.2 逻辑运算与循环类指令(逻辑运算与循环类指令(25条)条) 加法、减法、加1、减1指令ADD/ADDC/SUBB/INC/DEC十进制调整指令DA乘、除法指令MUL/DIV分类u大多数指令用累加器A作为一个源操作数u另一个源操作数可放在Rn、片内RAM、或是立即数u操作结果一般保留在ACC中u大多影响程序状态字PSW例 MOV A, #data ADD A, Rn 1. 加法指令(1) 不带进位的加法指令ADD 影响:CY、AC、OV和PD7、D6位只有一个有进位时,(OV)=1ADD A, #data; AA
33、+#data ADD A, direct; AA+(direct) ADD A, Ri; AA+(Ri) ADD A, Rn; AA+Rn结果:(A)=11H,(CY)=1,(AC)=1,(OV)=1 (D7有进位,D6无进位),(P)=0。 (A) 1000 0100 + (30H) 1000 1101 进位 1 1 1 结果 0001 0001 CYAC 源操作数与A的内容相加再与CY相加,结果送入目的操作数A中。 CY是在该指令执行之前已存在的值。ADDC A, #data; AA+#data+CADDC A, direct; AA+(direct)+CADDC A, Ri; AA+(R
34、i)+CADDC A, Rn; AA+Rn+C 源操作数的内容加 1 ,结果再送回原单元。这些指令中仅 INC A 影响P标志。INC A; AA+1INC direct; direct (direct)+1INC Ri; (Ri) (Ri)+1INC Rn; RnRn+1INC DPTR; DPTRDPTR+1例如:设R0=7EH,片内数据RAM中(7EH)=0FFH,(7FH)=40H,则执行下列指令: INC R0 INC R0 INC R0执行结果:(7EH)、R0、(7FH)?(7EH)=00H, R0=7FH,(7FH)=41H 对A中2个BCD码加法的结果调整 DA A 1) 当
35、A中低4位数出现了非BCD码或低4位 产生进位(AC=1),则在低4位加6。 2) 当A中高4位数出现了非BCD码或高4位 产生进位(CY=1),则在高4位加6。 调整后,CY表示结果的百位值905 6 H1 7 H6 d H67 3 H+ (1) 带借位减法指令SUBB影响:CY、AC、OV和P注:D7、D6位只有一个有借位时,(OV)=1。如要用此组指令完成不带借位减法,只需先清CY为 0 。SUBB A, #data; AA - #data-CSUBB A, direct; AA (direct)-CSUBB A, Ri; AA - (Ri)-CSUBB A, Rn; AA - Rn-C
36、即:(A)=74H,(CY)=0,(AC)=0, (OV)=1 (位6有借位,位7无借位), (P)=0。 (A) 1100 1001 - (CY) 1 1100 1000 - (R2) 0101 0100 结果 0111 0100 (2) 减1指令 操作数内容减 1 ,结果再送回原单元。 仅 DEC A 影响P标志。其余指令都不 影响标志位的状态。DEC RndirectRiAMUL AB 例3.16 若(A)=50H,(B)=A0H,执行指令 MUL AB 之后,(A)=00H,(B)=32H,(OV)=1,(CY)=0。 当乘积大于FFH时,溢出标志位(OV)=1。标志CY总是被清0。
37、ABAB乘数被乘数积例3.17 若(A) = FBH (251),(B) = 12H (18),执行指令 DIV AB 之后,(A) = 0DH,(B) = 11H,(OV) = 0,(CY) = 0。DIV AB 除数为0,商的A和B内容不确定,且(OV)=1 。 标志CY总是被清0。 ABAB除数被除数整数部分商 余数部分表表 3.3 算术运算类指令一览表算术运算类指令一览表 表表 3.3 算术运算类指令一览表(续)算术运算类指令一览表(续) 1. 逻辑运算:与、或、异或、清0和取反5. A清0操作对P标志有影响。 2. 对A循环移位 3. 方向:左、右4. CY:带、不带3.4 算术与逻
38、辑运算指令1. 逻辑与、或、异或指令uA与立即数、内部数据、存储器间的逻辑操作 ANL(ORL,XRL) A, #data ANL(ORL,XRL) A, direct ANL(ORL,XRL) A, Ri ANL(ORL,XRL) A, Rn ANL(ORL,XRL) direct, A ANL(ORL,XRL) direct, #data思考: 逻辑与、或、异或指令分别有什么作用? 逻辑“或”指令常用来使字节中某些位置“1”,其它位保持不变。则欲置位的位用1与该位相或,保留不变的位用0 与该位相或。 逻辑“与”指令常用来使字节中某些位清“0”,其它位保持不变。则欲清0的位用“0”与该位相与
39、,保留不变的位用“1” 与该位相与。 逻辑异或指令常用来使字节中某些位进行取反操作,其它位保持不变。欲某位取反该位与1相异或;欲某位保留则该位与0 相异或。还可利用异或指令对某单元自身异或,以实现清零操作。 例例 (P1)=C5H=1100 0101B,屏蔽,屏蔽P1口高口高4位而保留低位而保留低4位。位。 执行指令:执行指令:ANL P1,#0FH 结果为:结果为:(P1)=05H=00000101B。 设(A)AAH,(P1)=BBH,通过编程把累加器A中的低4位送入P1口低4位,P1口高4位保持不变。ORG 0100HANL A,#0FH ;取出A中低4位ANL P1,#0F0H ;取出
40、P1中高4位ORL P1,A ;字节装配SJMP $ ;待机END 2. 累加器清0和取反 (2) 把A的内容取反,结果仍在A中。CPL ACLR A例3.21 若(A)=A5H,执行指令 CLR A 之后,(A)=00H。 (1) 把A的内容清 0 ,结果仍在A中。ORG 0200HMOV A,30HCPL A;取反INCA;加1MOV 31H,ASJMP $END 例:已知正数X,求X的补码,设X放在30H单元,结果放在31H单元。表表3.3 逻辑操作指令表逻辑操作指令表RL A; 左移RR A; 右移RLC A; 带进位左移RRC A; 带进位右移SWAP A; 4位环移108移位指令操
41、作示意图移位指令操作示意图 nRL AnRLC AnRR AnRRC A109CYCYRR ARL ARLC ARRC A1001011000101101AA设设01001011A1CY11001011A000101101A1CYCY “累加器A内容乘2” 例3.22 若(A)= BDH = 1011 1101B, (CY)0。 执行指令 RLC A 结果为:17AH(378)2BDH(189)。 APSW010111101CYRLC A思考:如何实现“累加器A内容乘3”? 例:已知M1和M11两个单元中存有一个16位二进制数(M1中为低8位,M11中为高8位),通过编程将其扩大到二倍。M11
42、M10ORG 0200HCLRCMOV R1,#M1MOV A,R1 ;取低8位数RLCA ;低8位2MOV R1,AINCR1MOV A,R1 ;取高8位数RLCA ;高8位2MOV R1,ASJMP $ENDCYCY113SWAP A; 4位环移交换A中高四位和第四位,不影响标志.例如:MOV A,#A3H SWAP A 结果:(A)=3AH1143.5 控制转移类指令与位操作类指令3.5.2 位操作类指令(位操作类指令(17条)条) 控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。 (1) 程序执行是顺序的,改变程序执行顺序,称作程序转移。 (2) 控制程序转移采
43、用转移指令1)无条件转移指令2)条件转移指令3)子程序调用与返回指令4)空操作指令(1) LJMP(长转指令) 指令第二、三字节地址码分别装入PC的高8位和低8位中。 可转到64KB ROM空间的任何单元。 LJMP addr16助记符格式机器码(B)相应操作指令说明机器周期LJMP addr1600000010 a d d r1 5 8 addr70PCaddr16程序跳转到地址为addr16开始的地方执行2LJMP addr16uLJMP指令执行后,程序指令执行后,程序无条件无条件地转地转向向16位目标地址位目标地址(addr16)处执行,处执行,不影不影响标志位响标志位。u可转移到可转移
44、到64 KB程序存储器地址空间程序存储器地址空间的任意地址,故得名为的任意地址,故得名为“长转移长转移/长跳长跳转转”。u该指令的缺点是该指令的缺点是字节多字节多。(2)AJMP(绝对转移指令)AJMP addr11助记符格式机器码(B)相应操作指令说明机器周期AJMP addr11a10a9a800001addr70P C P C + 2 PC100addr11程序跳转到地址为PC1511addr11开始的地方执行,2 KB内绝对转移2 注意: 该指令结果不影响程序状态字寄存器PSW。 该指令转移范围是2 KB。AJMP addr11 该指令执行后,程序转移的目的地址是由该指令执行后,程序转
45、移的目的地址是由AJMP指令所在指令所在位置的地址位置的地址PC值值加上该指令字节数加上该指令字节数2,构成当前,构成当前PC值值。取当。取当前前PC值的高值的高5位与指令中提供的位与指令中提供的11位直接地址形成转移的目的位直接地址形成转移的目的地址,即地址,即 PC15 PC14 PC13 PC12 PC11a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0转移目的地址转移目的地址(PC) 由于由于11位地址的范围是位地址的范围是000,0000,0000B111,1111,1111B,(000H7FFH)即即2 KB范围,而目的地址的高范围,而目的地址的高5位是位是PC当
46、前值,当前值,所以程序可转移的位置只能是和所以程序可转移的位置只能是和PC当前值当前值在同一在同一2 KB范围内。范围内。 例如:若AJMP指令地址(PC)=2300H。执行指令AJMP 0FFH后程序转向何方?0010 0011 0000 0000 000 1111 1111 0010 0000 1111 111100100010 0011 0000 00100010 0011 0000 0010指令所在地址2300H +2 当前PC值2302H当前PC值的高5位11位直接地址转移目的地址(PC) 20FFH 结果为:转移目的地址(PC)=20FFH,程序向前转到20FFH单元开始执行。00
47、10 1111 1111 1111 000 1111 1111 0011 0000 1111 1111 30FFH00100011 0000 0000 00010011 0000 0000 0001指令所在地址 +2 当前PC值当前PC值的高5位11位直接地址转移目的地址(PC) 若AJMP指令地址(PC)=2FFFH。执行指令AJMP 0FFH后程序转向何方? 结果为:转移目的地址(PC)=30FFH,程序向后转到30FFH单元开始执行。 若若AJMP指令地址指令地址(PC)=2FFFH。执行指令。执行指令AJMP 0FFH后,结果为:转移目的地址后,结果为:转移目的地址(PC)=30FFH
48、,程序向后转到,程序向后转到30FFH单元开始执行。单元开始执行。 由上可见:若由上可见:若addr11相同,则相同,则AJMP指令的指令的机器码相机器码相同同,但转移的目的地址却可能不同,但转移的目的地址却可能不同,这是因为转移的目这是因为转移的目的地址是由的地址是由PC当前值当前值的高的高5位与位与addr11共同决定的。共同决定的。 若若AJMP指令地址指令地址(PC)=2300H。执行指令。执行指令AJMP 0FFH后,结果为:转移目的地址后,结果为:转移目的地址(PC)=20FFH,程序向前转到,程序向前转到20FFH单元开始执行。单元开始执行。结论:(3) SJMP(短转指令) S
49、JMP rel助记符格式机器码(B)相应操作指令说明机器周期SJMP rel1 0 0 0 0 0 0 0 relPCPC+2PCPC+rel-80H(-128)7FH(127)短转移2注意: 该指令结果不影响程序状态字寄存器PSW。 该指令的转移范围是以本指令的下一条指令为中心的-128+127字节以内。 1、在实际应用中,LJMP、AJMP和SJMP后面的addr16、addr11或rel都是用标号来代替的,不一定写出它们的具体地址。注意 2、LJMP、AJMP和SJMP跳转范围分别为64K、2K、256B。注意(4) JMP(变址寻址转移指令)助记符格式机器码(B)相应操作指令说明机器周
50、期JMP A+DPTR01110011PCA+DPTR64 KB内相对转移2 注意:注意: 该指令结果不影响程序状态字寄存器该指令结果不影响程序状态字寄存器PSW。 该指令通常用于该指令通常用于散转(多分支)程序散转(多分支)程序。 例例 根据累加器根据累加器A的值,转不同处理程序的入口。的值,转不同处理程序的入口。 MOV DPTR,#TABLE ;表首地址送;表首地址送DPTR JMP A+DPTR ;根据;根据A值转移值转移 TABLE:AJMP TAB1 ;当;当(A)=0时转时转TAB1执行执行 AJMP TAB2 ;当;当(A)=2时转时转TAB2执行执行 AJMP TAB3 ;当
51、;当(A)=4时转时转TAB3执行执行程序的不足:A的值不连续。为什么? P113 例例3.30 CM: MOV R1, A RL A ;A2 A ADD A, R1 ; A2 A3A A MOV DPTR,#PMTB ;表首地址送;表首地址送DPTR JMP A+DPTR ;根据;根据A值转移值转移 PMTB:LJMP PM0 ;当;当(A)=0时转时转PM1执行执行 LJMP PM1 ;当;当(A)=1时转时转PM2执行执行 LJMP PM2 ;当;当(A)=2时转时转PM3执行执行 LJMP PM3 ;当;当(A)=3时转时转PM4执行执行A可取连续值的例子u条件转移指令是条件转移指令是
52、当某种条件满足时,程序转移执行;当某种条件满足时,程序转移执行;条件条件不满足时,程序仍按原来顺序执行。不满足时,程序仍按原来顺序执行。u由于该类指令采用由于该类指令采用相对寻址相对寻址,因此程序可在以,因此程序可在以当前当前PC值值为中心的为中心的-128+127范围内转移。范围内转移。u该类指令共有该类指令共有8条,可以分为条,可以分为累加器判零条件转移累加器判零条件转移指令指令、比较条件转移指令比较条件转移指令和和减减1条件转移指令条件转移指令三类三类。判零条件比较条件减1条件(1) 累加器A判0转移 助记符格式机器码(B)相应操作机器周期JZ rel0110000 rel若A=0, 则
53、PCPC+2+rel, 否则程序顺序执行 2JNZ rel01110000 rel若A0, 则PCPC+2+rel, 否则程序顺序执行2u判零条件转移指令以累加器A的内容是否为0作为转移的条件。uJZ rel ACC为0转移,不为0则顺序执行;uJNZ rel ACC不为0转移,为0则顺序执行。u累加器A的内容是否为0,是由这条指令以前的其它指令执行的结果决定的,执行这条指令不作任何运算,也不影响标志位。 将将片外片外RAM首地址为首地址为DATA1的一个数据块转送到的一个数据块转送到片内片内RAM首地址为首地址为DATA2的存储区中。如数据为的存储区中。如数据为0则停止传数。则停止传数。(P
54、114) 外部外部RAM向内部向内部RAM的数据转送一定要经过累加器的数据转送一定要经过累加器A,利用判零条,利用判零条件转移正好可以判别是否要继续传送或者终止。完成数据传送的参考程件转移正好可以判别是否要继续传送或者终止。完成数据传送的参考程序如下:序如下: MOV DPTR,#DATA1 ;DPTR作为外部数据块的地址指针作为外部数据块的地址指针 MOV R1,#DATA2 ;R1作为内部数据块的地址指针作为内部数据块的地址指针LOOP: MOVX A,DPTR ;取外部;取外部RAM数据送入数据送入AHERE: JZ HERE ;数据为零则终止传送;数据为零则终止传送 MOV R1,A
55、;数据传送至内部;数据传送至内部RAM 单元单元 INC DPTR ;修改指针,指向下一数据地址;修改指针,指向下一数据地址 INC R1 SJMP LOOP ;循环取数;循环取数(2) 比较不相等转移指令 助记符格式机器码(B)相应操作机器周期CJNE A,#data,rel10110100 data rel若A#data, 则PCPC+3+rel,否则顺序执行;若 A#data,则CY=1,否则CY=02CJNE Rn,#data,rel10111rrrdata rel若Rn#data,则PCPC+3+rel,否则顺序执行;若Rn#data,则CY=1,否则CY=02CJNE Ri,#da
56、ta,rel1011011idata rel若(Ri)#data,则PCPC+3+rel,否则顺序执行;若(Ri)#data,则CY=1,否则CY=02CJNE A,direct,rel10110101direct rel若A(direct),则PCPC+3+rel,否则顺序执行;若A(direct),则CY=1,否则CY=02指令结果影响程序状态字寄存器PSW的CY标志。u比较转移指令共有比较转移指令共有4条。条。u这组指令是先对两个规定的操作数进行比较,根据比较的结果来这组指令是先对两个规定的操作数进行比较,根据比较的结果来决定是否转移。决定是否转移。若两个操作数若两个操作数相等,则不转移
57、相等,则不转移,程序顺序执行;,程序顺序执行;若两个操作数若两个操作数不等,则转移不等,则转移。u比较是进行一次减法运算,但比较是进行一次减法运算,但其差值不保存其差值不保存,两个数的原值不受,两个数的原值不受影响,而标志位要受到影响。利用标志位影响,而标志位要受到影响。利用标志位CY作进一步的判断,可作进一步的判断,可实现三分支转移。实现三分支转移。被减数被减数减数减数CY0uCJNE 指令默认把参与比较的两个数看作无符号数;指令默认把参与比较的两个数看作无符号数; 当当 data1 data 执行程序prog1 当(A)= data 执行程序prog2 当(A) data执行程序prog1
58、p2: LJMP prog3 ;C =1,即(A) data 执行程序prog3 (3) 减1不为0转移指令 每执行一次,循环控制单元减1,并判其是否为 0。 1) 不为0,则转移到目标地址继续循环; 2)为0,则结束循环,程序往下执行。 3)常用于循环程序中控制循环次数。助记符格式机器码(B)相应操作机器周期DJNZ Rn,rel11011rrr relR n R n - 1 , 若 R n 0 , 则PCPC+2+rel, 否则顺序执行2DJNZ direct,rel11010101 direct rel(direct)(direct)-1,若(direct)0,则PCPC+3+rel,否
59、则顺序执行2 例 将内部RAM从DATA单元开始的10个无符号数相加,相加结果送SUM单元保存。(P116) 假设加的结果不超过8位二进制数,则相应的程序如下: MOV R0,#0AH ;设置循环次数 MOV R1,#DATA ;R1作地址指针,指向数据块首地址 CLR A ;A清零LOOP: ADD A,R1 ;加一个数 INC R1 ;修改指针,指向下一个数 DJNZ R0,LOOP ;R0减1,不为0循环 MOV SUM,A ;存10个数相加的和 例 有一段程序如下: MOV 23H,#0AH CLR ALOOP: ADD A,23H DJNZ 23H,LOOP SJMP $ 结果: (
60、A)=10+9+8+7+6+5+4+3+2+1=37H问题:程序如何调用子程序?调用完后如何返回主程序中执行调用指令的下一条指令?子程序调用指令有长调用和绝对调用。u LCALL和ACALL指令类似于转移指令LJMP和AJMP,不同之处在于它们在转移前要把执行完该指令的PC内容自动压入堆栈后,才将子程序入口地址addr16(或addr11)送PC,实现转移。返回指令共两条:返回指令共两条:一条是对应两条调用指令的一条是对应两条调用指令的子程序返回子程序返回指令指令RET,另一条是对应从另一条是对应从中断服务程序的返回中断服务程序的返回指令指令RETI。146试利用子程序技术编出令20H2AH、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖北恩施州巴东县农业农村局公益性岗位招聘1人模拟试卷及答案详解1套
- 2025广东阳江阳西县政府发展研究中心就业见习岗位1人模拟试卷及答案详解(新)
- 2025第十三届贵州人才博览会贵阳贵安事业单位引进高层次及急需紧缺人才770人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025贵州黔西南州望谟县消防救援大队招聘政府专职消防文员1人模拟试卷及答案详解(网校专用)
- 2025广西来宾宾信投资集团有限公司招聘拟聘人员考前自测高频考点模拟试题及参考答案详解1套
- 2025年春季中国石油哈尔滨石化公司高校毕业生招聘模拟试卷及答案详解(典优)
- 2025年春季黑龙江大庆油田有限责任公司高校毕业生招聘50人考前自测高频考点模拟试题有答案详解
- 2025年威海职业学院公开招聘高层次人才(40人)考前自测高频考点模拟试题及答案详解(夺冠)
- 2025年上半年浙江永康市产业投资集团有限公司公开招聘合同制员工15人笔试题库历年考点版附带答案详解
- 2025广东深圳市优才人力资源有限公司招聘聘员(派遣至深圳市龙岗区审计局)1人考前自测高频考点模拟试题有答案详解
- GJB3243A-2021电子元器件表面安装要求
- TCCEAS001-2022建设项目工程总承包计价规范
- 自家停车位申请按照充电桩四方协议书
- 生产组织供应能力说明
- 足金点钻工艺培训
- JJG 162-2019饮用冷水水表
- 山西省煤矿安全生产管理人员培训考试题库(浓缩500题)
- 空调负荷计算-空调负荷的计算(空调工程)
- 计算机视觉之图像分类课件
- 输电线路工程安全风险识别、评估、预控措施
- 大学英语三级词汇表(新版)
评论
0/150
提交评论