第3章_单片机指系统.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第3章_单片机指系统.ppt》由会员分享,可在线阅读,更多相关《第3章_单片机指系统.ppt(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MCS-51 单片机原理及应用单片机原理及应用第3章 MCS-51单片机指令系统 MCS-51单片机指令系统指令是指挥计算机工作的命令,一种计算机所能执行的指令集合称之为该种计算机的指令系统。程序是将指令有效地组合成能够完成特定任务的指令序列。指令格式l指令格式指令的表达方式称为指令格式标号:标号:操作码操作码 目的操作数目的操作数 ,源操作数,源操作数 ;注释;注释n标号:指令的符号地址。标号是用户设定的符号,表示该语句所在的地址。标号必须由以字母开头的l8个ASCll字符组成,这些字符不能使用在该汇编语言中已经定义过了的符号。n操作码:操作码是由英文缩写组成的字符串,它规定了指令的操作功能
2、,是指令格式中唯一不能空缺的部分。n操作数:操作数用于给指令的操作提供数据或地址。操作数可以是空白也可能只有一项或二项,还可以有三项。各操作数之间必须用逗号分隔,操作数与操作码之间须用空格分隔。在两个操作数的指令中,把左边的操作数称为目的操作数,而右边操作数称之为源操作数。n注释:注释是对语句或程序段功能的说明。注释要用分号“;”开头,注释的长度不限,但每行开头仍须使用分号“;”,注释也可空缺。MOVA,directRLAMOVR1,ARLARLAADDA,R1MOVdirect,A;取数设为D0;D02;(R1)2D0;2D02;4D02;8D0+2D0;存数10D0MMUL1:数据的表达形
3、式汇编语言中的数据一般采用以下几种表达方式:二进制数形式,末尾用字母B标识,如0101001B。十进制数形式,末尾用字母D标识或不用任何标识,如:96D,78D。十六进制数形式,末尾用字母H标识,在表示时,如果以字母开头,则须在其前面添加“0”,如:0F5H。ASCll码形式,用单引号括起来标识,如GOD,288。指令中常用符号nRn(n=07)当前工作寄存器组R0R7;ni(i=0,l)当前工作寄存器组的R0或RI;nACC代表累加器A的直接地址EOH;n间接寻方式中间址寄存器标志符号;ndata8位立即数;ndatal616位立即数;ndirect8位片内RAM单元(包括SFR的地址或符号
4、)的直接地址;naddr1111位目的地址;naddr1616位目的地址,只限于在LCALL和LJMP指令中使用;nRel8位带符号补码数;nBit片内RAM或SFR中的直接寻址位;nC代表PSW中的进位标志位,称为累加位;n加在位地址前面,表示对该位的状态取反;n(X)表示寄存器X或单元X中的数据;n(X)表示将寄存器X或X存储单元的数作为地址的这个地址单元中的数据。指令分类l指令分类n按指令长度分:单字节指令、双字节指令、三字节指令。n按指令执行时间分:1机器周期指令、2机器周期指令、4机器周期指令。n按指令的功能分:数据传送指令(28条)、算术运算类指令(24条)、逻辑运算与移位类指令(
5、25条)、控制转移类指令(17条)、位操作类指令(17条)。寻址方式寻址方式就是根据指令中给出的地址,寻找操作数的方法和途径寻址方式立即寻址方式直接寻址方式寄存器寻址方式寄存器间接寻址方式基址加变寻址方式位寻址方式相对寻址方式MCS-51系列单片机的寻址方式1立即寻址方式立即寻址方式所谓立即寻址就是操作数在指令中直接给出。立即寻址方式的操作数称立即数,立即数只能是源操作数,不能作为目的操作数。立即数有8位立即数和16位立即数。使用时在立即数前加使用时在立即数前加“#”标志标志。例:MOVA,#20HMOVDPTR,#20D8H2直接寻址方式直接寻址方式直接寻址就是操作数直接以单元地址的形式给出
6、。直接地址以存贮单元形式出现。例如指令:MOVA,20H3寄存器寻址方式寄存器寻址方式 寄存器寻址就是操作数在寄存器中。寄存器包括8个工作寄存器RO一R7,累加器A,寄存器B,数据指针DPTR和布尔处理器的位累加器C。例如指令:MOVA,R24寄存器间接寻址方式寄存器间接寻址方式 MOV A,RiMOVXA,DPTR例如:(R1)80H、(80H)=33H,则执行指令MOVA,Ri后,累加器A的内容为33H而不是80H。寄存器间接寻址是以寄存器中的内容为地址取得操作数的方法。寄存器间接寻址中时,寄存器中存放的是操作数的地址。寄存器间接寻址使用的寄存器为Ri和DPTR,使用时寄存器前面加“标志。
7、即以下形式:5基址加变址寻址方式基址加变址寻址方式 基址加变址寻址就是以DPTR或PC为基址寄存器,以A为变址寄存器,以两者内容相加形成16位地址作为操作数地址。例如指令:MOVCA,A+DPTR6位寻址方式位寻址方式 位寻址方式就是以位为操作数。MCS-51单片机有相当强的位处理功能,可以对位进行直接操作。例如指令:MOVC,4AH位寻址范围1)内部RAM的位寻址区2)可供位寻址的11个专用寄存器7相对寻址方式相对寻址方式 相对寻址是在相对转移指令中,根据地址相对当前PC的偏移量得到操作数的方式。例如:JZrel偏移量rel是一带符号8位二进数的补码数,范围为-128+127。实际书写程序时
8、先用地址标号代替,在汇编为机器指令时再计算出来如:JCLOOP MOV 2FH,#40H MOV A,R0 MOV DPTR,#2020H MOV 45H,P0 MOV A,R1 MOVC A,A+PC JC LOOP 立即寻址,寄存器间接寻址,16位立即寻址,直接寻址。寄存器寻址。基址加变址寻址,相对寻址。指出下列每一条指令的寻址方式判断下列指令是否正确,若不正确请指出错误:MOVA,DPTR MOVDPTR,#03H MOV#80H,R7 MOVB,C不正确。A是8位寄存器,DPTR为16位寄存器,不匹配。正确。不正确。#80H为立即数,不能作为目的地址。不正确。B为8位字节寄存器,C为1
9、位位累加器,不匹配。MCS-51单片机指令系统对于任何一种计算机,只有理解其指令系统才能清楚该计算机的功能。学习和使用单片机的一个重要环节就是理解和熟练掌握它的指令系统。数据传输类指令l单片机片内数据传输功能内部RAM数据传送指令l指令格式:MOV,l功能:把源操作数所表示的数据传送到目的地址指定的存贮单元之中,而不改变源操作数。即该类指令是“复制”,不是“搬家”。通用指令通用指令1)以累加器以累加器A为目的地址的指令为目的地址的指令MOVA,Rn;A(Rn)MOVA,direct;A(direct)MOVA,Ri;A(Ri)MOVA,#data;Adata这组指令的功能是把源操作数指定的内容
10、传送到累加器指令的功能是把源操作数指定的内容传送到累加器A。源操作数可以采用寄存器寻址方式、直接寻址、寄存器寻址和立即寻址4种方式。传送之后,源操作数所指定的内容不变。例如:(A)=5CH,(R0)=10H,(R5)=47H,(10H)=D5H,(70H)=F2H,执行以下每条指令后,累加器A中的内容分别为:MOVA,R5;(A)47HMOVA,70H;(A)FZHMOVA,RO;(A)D5HMOVA,78H;(A)78H2)以以Rn为目的地址的指令为目的地址的指令MOVRn,A;Rn(A)MOVRn,direct;Rn(direct)MOVRn,#data;Rndata这组指令的功能是把源操
11、作数指定的内容传送到寄存器指令的功能是把源操作数指定的内容传送到寄存器Rn。源操作数可以采用寄存器寻址、直接寻址和立即寻址3种方式。传送之后,源操作数所指定的内容不变。例如:若(A)=78H,(R5)=47H,(70H)=F2H,执行以下每条指令后,R5中的内容分别为:MOVR5,A;(R5)78HMOVR5,70H;(R5)FZHMOVR5,A3H:(R5)A3HMOVdirect,A;direct(A)MOVdirect,Rn;direct(Rn)MOVdirect,direct;direct(direct)MOVdirect,Ri;direct(Ri)MOVdirect,#data;di
12、rectdata这组指令的功能是把源操作数指定的内容传送到由直接地址指令的功能是把源操作数指定的内容传送到由直接地址确定的片内存储单元中确定的片内存储单元中。源操作数可以采用寄存器寻址方式、直接寻址、立即寻址寄存器间接寻址等方式。传送之后,源操作数所指定的内容不变。例:MOV50H,R3;50H(R3),若(R3)=18H,则执行指令后(50H)=18H。MOVTMOD,B;TMOD(B),若(B)=60H,则执行指令后(TMOD)=60H。3)以直接地址为目的地址的指令以直接地址为目的地址的指令MOVRi,A;(Ri)(A)MOVRi,direct;(Ri)(direct)MOVRi,#da
13、ta;(Ri)data4)以寄存器间接地址为目的的地址的指令以寄存器间接地址为目的的地址的指令这组指令的功能是把源操作数指定的内容传送到由指令的功能是把源操作数指定的内容传送到由RO和和R1确定的内容为地址的存储元中确定的内容为地址的存储元中。源操作数可以采用寄存器寻址方式、直接寻址和立即寻址方式。这里的传送是复制过程,传送之后,源操作数所指定的内容不变。例如:若A=70H,R1=30H,(40H)=50H,写出执行的结果。MOVR1,A;(30H)70HMOVR1,40H;(30H)=50HMOVDPTR,#data16;DPTRdata16;DPLdata70;DPHdata1585)16
14、位数据传送指令位数据传送指令这是唯一的一条16位立即数的传送指令,其功能是把16位常数送入DPTR中,高8位DPH,低8位送DPL。例如,MOVDPTR,1234H;(DPH)12H,(DPL)34H。习习题题:设RAM40H单元的内容为80H,80H单元内容为47H,P1口的输入状态为0FFH,试判断下列程序执行结果。MOVR0,#40HMOVA,R0MOVR1,AMOVB,R1MOVR1,P1MOVP2,P1解执行结果为:(A)?,(B)?,(R0)?,(R1)?,(P1)?,(P2)?,(80H)?。;例设RAM40H单元的内容为80H,80H单元内容为47H,P1口的输入状态为0FFH
15、,试判断下列程序执行结果。MOVR0,#40HMOVA,R0MOVR1,AMOVB,R1MOVR1,P1MOVP2,P1解执行结果为:(A)80H,(B)47H,(R0)40H,(R1)80H,(P1)0FFH,(P2)0FFH,(80H)0FFH。;R040H;A(40H)80H;R180H;B(80H)47H;(80H)0FFH;P20FFH6访问外部RAM的指令对片外数据存贮器的访问必须通过累加器对片外数据存贮器的访问必须通过累加器A进行进行 MOVXA,DPTR;A(DPTR)MOVXA,Ri;A(Ri)MOVXDPTR,A;(DPTR)(A)MOVXRi,A;(Ri)(A)以上4条指
16、令中源操作数的寻址方式为寄存器间接寻址。参与间接寻址的寄存器只有Ri和DPTR两种(3个)。DPTR为16位寄数器,寻址范围为000H0FFFFH共64KB空间。而Ri是8位寄数器,只能寻址000FFH低256个单元。例如,若(R0)=12H,(0012H)=56H,则执行指令“MOVX A,R0”以后,就把片外数据存储器0012H单元中的数据56H送入累加器A中。若(DPTR)=3020H,(A)=48H,则执行指令“MOVX DPTR,A”以后,就将48H送入了片外数据存储器地址为3020H的存储单元。解MOVDPTR,#2000HMOVXA,DPTRMOV20H,AMOVDPTR,#20
17、00HMOVXA,DPTRMOVR0,#0FAHMOVXR0,A例3-6将片外数据存贮器2000H单元的内容传送到片内的20H单元中;将片外数据存贮器2000H单元的内容传送到片外0FAH单元。7 程序存贮器向累加器程序存贮器向累加器A A传送指令传送指令 MOVCA,A+PC;A(A)+(PC)MOVCA,A+DPTR;A(A)+(DPTR)说明:程序存贮器只能读出,不能写入,ROM片内、片外是统一编址,该指令既可访问片内,又可访问片外程序存贮器。该类指令主要用于查表,又称查表指令。应用时,一般以PC或DPTR确定表格的首址,查表时,根据A中不同的内容查找到表格中的相应项,故此时称PC或DP
18、TR为基址寄存器,A为变址寄存器,寻址方式为基址加变址寻址。使用DPTR作基址寄存器比较灵活,且不易出错。建议尽可能使用MOVCA,DPTR指令。1)字节交换指令字节交换指令XCHXCHA,Rn;(A)(Rn)XCHA,direct;(A)(direct)XCHA,Ri;(A)(Ri)8 数据交换指令数据交换指令例:设(A)=08H,(R7)=0DCH,执行指令XCHA,R7结果为:(A)=0DCH,(R7)=08H功能:将累加器A中内容与源操作数互换。例:(A)=80H,(R0)=30H,(30H)=0FH,执行指令XCHDA,R结果为:(A)=8FH,(30H)=00H2)半字节交换半字节
19、交换XCHDXCHDA,Ri;(A)低4位(Ri)低4位功能:累加器A中内容与源操作数低4位交换,高4位不变。数据写入堆栈称入栈入栈,数据从堆栈中读出称出栈出栈。栈操作的原则是后进先出后进先出堆栈操作9堆栈操作指令 PUSHdirect;SP(SP)+1,(SP)(direct)功能:将堆栈指针加1后,片内RAM单元内容送进栈顶单元,原RAM单元内容不变。说明:PUSH指令常用于保护CPU现场。栈操作是字节指令,每次只能压入或弹出1个字节的内容。如PUSHDPTR是错误的,但可以用以下两条指令完成DPTR的入栈。PUSHDPHPUSHDPL1)入栈指令入栈指令PUSH9堆栈操作指令POPdir
20、ect;direct(SP),SP(SP)-1功能:将(SP)内容传送给片内RAM单元,SP内容减1。说明:栈操作要注意后进西先出的原则。POP指令常用于恢复CPU现场2)出栈指令出栈指令POP例试用栈操作指令完成P0和P1内容的互换。解PUSHP0PUSHP1POPP0POPP1算术运算类指令l在NCS-51指令系统中,算术指令都是针对8位无符号数的。l算术运算包括加、减、乘、除四则混合运算和属于加减类型的增1、减1以及十进制调整指令。l算术运算操作会影响程序状态字寄存器PSW中的进位和借位标志C、辅助进位(借位)标志AC、溢出标志位OV和奇偶标志位P等。1不带进位加法指令ADDA,Rn;A
21、(A)+(Rn)ADDA,direct;A(A)+(direct)ADDA,#data;A(A)+dataADDA,Ri;A(A)+(Ri)不带进位加法指令不带进位加法指令ADD 这组指令把源操作数指定的内容加到累加器A,并将相加的结果保存在A中。这组指令影响PSW中标志位如下:进位标志C:和的最高位(位7)有进位,C=1;否则C=0。辅助进位AC:和的位3有进位,AC=1;否则AC=0。溢出标志位OV:和的位7位6只有一个有进位时,OV=1;奇偶标志位:当A中1的个数为奇数时,P=1;为偶数时,P=0。2.带进位加法指令带进位加法指令ADCCADDCA,Rn;A(A)+(Rn)+(C)ADD
22、CA,direct;A(A)+(direct)+(C)ADDCA,#data;A(A)+data+(C)ADDCA,Ri;A(A)+(Ri)+(C)功能:该操作与ADD类似,只是PSW中的进位位C参与运算。带进位加法指令通常用于多字节或多个数加法运算。解 MOV A,30H ADD A,40H ;低字节相加 MOV 50H,A MOV A,31H ADDC A,41H ;高字节相加 MOV 51H,A ADDC A,#00H ;取高相加产生的进位 MOV 52H,A说明:多字节数求和,从低字节开始,最低字节相加用ADD指令,高字节相加用ADDC指令。N字节数相加,结果可能为N+1字节数。为单独
23、取得进位的值,例 两字节无符号数相加,被加数放在内部RAM30H,31H单元(低位放在前),加数放在内部RAM40H、41H单元。计算两数的和,放在50H52H单元中。3.增量指令增量指令INCINC A ;A (A)+1INC Rn ;Rn (Rn)+1INC direct ;direct (direct)+1INC Ri ;(R)i(Ri)+1INC DPTR ;DPTR (DPTR)+1功能:对A,Rn,内部RAM单元及数据指针DPTR进行加1操作,除INCA影响P标志外,不影响其他标志位。说明:若原为0FFH,执行该指令后,将变为00H,但不影响进位位C。4.十进制调整指令十进制调整指
24、令DA A 功能:由加法指令完成的BCD码相加时所获得的结果进行调整。说明:在指令系统中,没有专门的十进制(BCD码)的加法运算指令,只能使用ADD,ADDC命令,但有时会产生错误。例如:(a)5+38(b)7+6=1301010111+)0011+)011010001101其中(a)的运算结果是正确的,(b)的运算结果是错误的。为了消除错误,要对运算结果进行DAA调整,调整为正确的压缩BCD码形式(相加结果低相加结果低4位大于位大于9产生进位产生进位AC,则加则加6;高高4位大于位大于9产生进位产生进位CY则加则加60)。例 在20H、21H中分别存放压缩BCD码55和72,试将两数相加,并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 系统
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内