第3章MCS-51系列单片机的指令系统及汇编措辞法度模范设计课件.ppt

上传人(卖家):晟晟文业 文档编号:4315537 上传时间:2022-11-29 格式:PPT 页数:48 大小:369.50KB
下载 相关 举报
第3章MCS-51系列单片机的指令系统及汇编措辞法度模范设计课件.ppt_第1页
第1页 / 共48页
第3章MCS-51系列单片机的指令系统及汇编措辞法度模范设计课件.ppt_第2页
第2页 / 共48页
第3章MCS-51系列单片机的指令系统及汇编措辞法度模范设计课件.ppt_第3页
第3页 / 共48页
第3章MCS-51系列单片机的指令系统及汇编措辞法度模范设计课件.ppt_第4页
第4页 / 共48页
第3章MCS-51系列单片机的指令系统及汇编措辞法度模范设计课件.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、主要内容寻址方式指令系统传送与交换指令算术运算、逻辑运算指令控制转移指令位操作指令伪指令程序设计举例第3章 MCS-51系列单片机的指令系统及汇编语言程序设计 计算机通过执行程序完成人们指定的任务,计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为程序由一条一条指令构成,能为CPUCPU识别并执行的识别并执行的指令的集合就是该指令的集合就是该CPUCPU的的指令系统指令系统。MCS-51MCS-51单片机汇编语言单片机汇编语言指令格式指令格式:操作符操作符 目的操作数,源操作数目的操作数,源操作数 操作符指明该指令完成什么操作;操作符指明该指令完成什么操作;操作数是指明该指令的

2、操作对象。操作数是指明该指令的操作对象。指令中操作数提供的方式称为指令中操作数提供的方式称为寻址方式寻址方式。指令中的常用符号Rn:表示当前工作寄存器R0R7中的一个。Ri:代表R0和R1寄存器中的一个,用作间接寻址寄存器。dir:8 位直接字节地址(片内 RAM 和 SFR)#data:8位立即数,即8位常数。可以为2进制(B)、10进制、16进制(H)、字符()#data16:表示16位立即数,即16位常数,取值范围为:#0000H#0FFFFHaddr16:表示16位地址 addr11:表示11位地址rel:相对偏移量(为一字节补码)用于相对转移指令中bit:位地址,在位地址空间中。$:

3、表示当前指令的地址。指令中直接给出操作数的寻址方式。在51系列单片机的指令系统中,立即数用一个前面加“#”号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。立即寻址中的数,称为立即数。例如指令:MOV A,#58H;58HA3.1 寻址方式3.1.1 立即寻址 操作数的地址直接出现在指令中。操作数的地址直接出现在指令中。寻址对象:寻址对象:内部数据存贮器:使用它的地址。内部数据存贮器:使用它的地址。特殊功能寄存器:既可使用它的地址,也可以直接使用特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。寄存器名。位地址空间位地址空间 程序存储器空间程序存储器

4、空间 位地址位地址18183.1.2 3.1.2 直接寻址直接寻址操作数存放在寄存器中。操作数存放在寄存器中。寻址对象:寻址对象:A A,B B,C,DPTRC,DPTR,R0R0R7 R7。B B仅在乘除法指令中为寄存器寻址,在其他指仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。令中为直接寻址。A A可以寄存器寻址又可以直接寻址,直接寻址可以寄存器寻址又可以直接寻址,直接寻址时写作时写作ACCACC 例如:例如:MOV AMOV A,R0 R0 ;R0AR0A MUL AB MUL AB ;A A*BBABBA ADD A ADD A,ACC ACC;A+AAA+AA3.1.3 3.

5、1.3 寄存器寻址寄存器寻址 操作数存放在以寄存器内容为地址的单元中,用做间址的寄存器为Ri(i=0,1)、DPTR。对片内的间接寻址用Ri(i=0,1)如:MOV R0,#20H MOV R0,A ;A(20H)对片外的间接寻址可用Ri(i=0,1)或DPTR 如:MOVX DPTR,A;A以DPTR的内容为地址的外部RAM中 MOVX A,R1 ;A以P2 R1内容为地址的外部RAM中 PUSH和POP指令的源操作数是以SP间接寻址 注意:寄存器间接寻址不能访问SFR MOV R1,#81H MOV A,R1 ;不能访问SP,只能用 MOV A,SP3.1.4 寄存器间址 变址寻址只能访问

6、程序存储器。操作数所在位置的地址由DPTR或PC寄存器与A的内容相加后形成。其中累加器A内容是可变的。变址寻址只有三条指令。MOVC A,A+DPTR ;(A+DPTR)A MOVC A,A+PC ;(A+PC)A JMP A+DPTR ;A+DPTRPC注意:A的内容是无符号数。PC值是指令的当前PC值,即下条指令的PC值3.1.5 变址寻址3.1.6 3.1.6 相对寻址相对寻址 变址寻址只能访问程序存储器。相对寻址是将程序计数器变址寻址只能访问程序存储器。相对寻址是将程序计数器PC的当前值与指令第二字节给出的偏移量相加,从而形成转的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标

7、地址。移的目标地址。如:如:JZ 61H注意:注意:相对偏移量是一字节有符号数,用补码表示,偏移范相对偏移量是一字节有符号数,用补码表示,偏移范围是:围是:-128-128+127+127。PC PC值是指令的当前值是指令的当前PCPC值,即下条指令的值,即下条指令的PCPC值。值。源程序中偏移量常用符号地址表示。源程序中偏移量常用符号地址表示。对可位寻址的位地址寻址。包括片内RAM的位地址空间和可位寻址的SFR(地址能被8整除)如:MOV C,20H ;位寻址 MOV A,20H ;字节寻址 以上两条指令究竟是位寻址还是字节寻址,根据两操作数类型一致的原则,由另一个操作数决定。3.1.7 位

8、寻址立即立即寻址寻址直接直接寻址寻址寄存器寄存器寻址寻址寄存器寄存器间接寻址间接寻址变址变址寻址寻址相对相对寻址寻址位寻址位寻址片内片内RAMRAM低低128B128B单元单元工作寄存器工作寄存器组组R0R0R7R7特殊功特殊功能寄存能寄存器器SFRSFRA A、B B、DPTRDPTR、C C程序存储器程序存储器片外片外RAMRAM位地址空间位地址空间寻址方式与存储空间的对应关系 dirRi Rn#dataAMOV A,Rn#data dir RiMOV dir,A Rn,Ri#data dir MOV Ri,A dir#data内部RAM、SFR之间的传送MOV指令MOV Rn,A dir

9、#data3.2 指令系统3.2.1 数据传送与交换指令例例 R1=20HR1=20H,(,(20H20H)=55H=55H,MOV AMOV A,R1 R1 执行后,执行后,A=55HA=55H。例例 (40H40H)=30H=30H,MOV R7MOV R7,40H 40H 执行后,执行后,R7=30HR7=30H。例例 MOV R7MOV R7,40H 40H 执行后,执行后,R7=40HR7=40H。注意:寄存器之间无传送;寄存器间址和寄存器之间无传送;立即数不能做目标地址;Ri,A DPTR,A A,Ri A,DPTRMOVXMOVCA,A+PCA,A+DPTR2.外部存储器和A累加

10、器之间的传送MOVXA 外部数据外部数据存储器存储器程序程序存储器存储器MOVC 利用 MOVX 实现片外数据存储器数据传送 (2000H)(2100H)vMOV DPTR,#2000HvMOVX A,DPTRvMOV DPTR,#2100HvMOVX DPTR,Av;DPTR=2000Hv;DPTR=2100Hv ;A Xv;(2100H)Xx片外数据存储器不能直接寻址。下列为非法指令:MOVX A,2000H MOVX 2100H,2000H 利用Ri间址来实现将(2000H)(2100H)MOV P2,#20H;高位地址 MOV R0,#00 ;低位地址 MOVX A,R0;读片外RAM

11、 MOV P2,#21H;改变高位地址 MOVX R0,A;写片外RAM 利用 MOVC 指令实现查表功能注:只能从程序存储器读取数据到A累加器。只能使用变址间接寻址方式1)DPTR为基址寄存器MOVC A,A+DPTR;A(A+DPTR)查表范围为 64KB 程序存储器任意空间。v2)PC为基址寄存器vMOVC A,A+PC;A(A+PC)v常数表只能在查表指令后 256B 范围内。例 查表法求 Y=X2。设 X(0X15)在片内 RAM 20H单 元,要求将查表求 Y,存入片内 RAM 21H单元1)用DPTR作基址寄存器 ORG 0100HSQU:MOV DPTR,#TAB;确定表首地址

12、 MOV A,20H ;取 X MOVC A,A+DPTR;查表求 Y=X2 MOV 21H,A ;保存Y RET ;子程序结束 ;其它程序段 ORG 0200H ;常数表格首地址TAB:DB 00,01,04,09,225;平方表 指令地址 源程序 ORG 0100H;程序起始地址 0100HSQU:MOV A,20H;取X 0102H ADD A,#3;修正偏移量 0104HMOVC A,A+PC;查表求Y=X2 0105H MOV 21H,A;存结果 0107HRET ;子程序结束 0108HTAB:DB 00,01,04;平方表 010BHDB 09,225 v思考题:当0X255时,

13、如何用查表法编程求Y=X22)用PC作基址寄存器 3.交换指令实现片内RAM区的数据双向传送1)字节交换指令XCH A,Rn ;ARn XCH A,Ri;A(Ri)XCH A,dir;A(dir)2)半字节交换指令XCHD A,Ri;A03(Ri)03 SWAP A ;A47A03 dirRi RnA 4.堆栈操作指令 入栈指令:PUSH dir;SPSP+1,(SP)(dir)出栈指令:POP dir;(dir)(SP),SPSP-1 RiA74743030A74 30 dirRi Rn#dataA dirRi Rn#dataAA,Rn,Ri#data dirADDADDCSUBBANLOR

14、LXRL加加进位加进位加借位减借位减与与或或异或异或1.以A为目的操作数的算术、逻辑运算指令(24条)3.2.2 算术运算和逻辑运算指令2.以dir为目的操作数逻辑运算指令(6条)A#data dir与 ANL或 ORL异或 XRLdir,#dataA3.加1、减1指令RiAdirRnDPTRINCRiAdirRnDEC 4.十进制调整指令 DA A ;仅对存于A中的加法结果进行十进制调整 若需完成十进制减法运算,则应变减法运算为补码的加法运算即可,其减数X的补码通过(99-X)+1再DA A后得到。原则:和低4位大于9或有半进位,则低4位加6 和高4位大于9或有 进位,则高4位加6例:(DA

15、TA)-(DATA+1)=(DATA+2)Y-X=Y-X+100 -有效位为2位十进制,模为100 =Y+(99-X)+15.乘、除法指令MUL AB;ABBADIV AB;AB商在A中,余数在B中6.专对A的指令CPL ACLR A;0 A;A AMOV A,#99H DA ACLR C ADD A,DATASUBB A,DATA+1 DA AADD A,#1 MOV DATA+2,ACYRR ARL ARLC ARRC A移位指令(仅对 A)00101101A01001011ACY11001011A000101101A1CY10010110A设设1CYCY 1.调用程序和返回类指令 1)长

16、调用 LCALL addr16;addr16PC015 指令功能同80X86中的CALL,调用范围64KB全部空间,指令的机器码为三字节。2)短调用 ACALL addr11 ;addr11PC010 指令的功能同前,主要区别为:addr11PC010,而PC1115保持原值不变,故其调用范围为2KB,即子程序入口距当前PC不得超过2KB地址范围。本指令的机器码为二字节。3.2.3 控制转移类指令3)子程序返回指令(从栈顶弹出断点到PC)RET ;从调用子程序返回。RETI;从中断服务程序返回并恢复 中断优先级状态触发器。2.转移指令 1)无条件转移指令(1)短转移 AJMP addr11 ;

17、addr11PC010 转移范围:2KB 机器码为2字节(2)长转移 LJMP addr16 ;addr16PC015 转移范围:64KB 机器码为3字节。(3)间接转移 JMP A+DPTR ;A+DPTRPC 分析下列程序段,说出当A分别为0和2时,程序转置何处?该程序段的功能是什么?MOV DPTR,#TABLE JMP A+DPTR TABLE:AJMP PROC0 AJMP PROC1 AJMP PROC2 AJMP PROC3 (4)无条件相对转移 SJMP rel ;PC+relPC,即As2relPC,机器码为2字节 As为源地址(本指令的首地址),执行本指令时当前PCAs+2

18、,rel 为转移的偏移量,转移可以向前转(目的地址小于源地址),也可以向后转(目的地址大于源地址),因此偏移量rel 是 1 字节有符号数,用补码表示(128127),所以指令转移范围在离源地址As的126129字节之间。2)条件转移指令(1)累加器为零(非零)转移 JZ/JNZ rel ;A=0/(A0)则转移,否则顺序 执行程序(2)减 1 不等于零转移 DJNZ Rn/dir,rel 功能为:Rn(dir)-1Rn(dir)相减结果0转,否则顺序执行程序 (3)比较转移指令 CJNE A,dir,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE Ri

19、,#data,rel操作数1不等于操作数2则转,否则顺序执行。1例:例:Y=-1XZX Z Z X YDATA+2 DATA+1DATA MOV DATA+2,#0FFH MOV A,DATA CJNE A,DATA+1,NEXTNEXT:JC NEXT1 MOV DATA+2,#1NEXT1:RET dirRi Rn#dataA1.位传送指令 MOV C,bit ;(bit)CY MOV bit,C ;CYbit2.位状态控制指令 CLR C ;0CY CLR bit ;0bit SETB C ;1CY SETB bit ;1bit CPL C ;CYCY CPL bit ;bitbit3.

20、2.4 位操作指令3.3.位逻辑运算指令位逻辑运算指令 ANL CANL C,bit bit ;CYCY(bitbit)CYCY ANL C ANL C,/bit /bit ;CYCY(bitbit)CYCY ORL C ORL C,bit bit ;CYCY(bitbit)CYCY ORL C ORL C,/bit /bit ;CYCY(bitbit)CYCY 4.位转移 位转移根据位的值决定转移,均为相对转移指令。JC rel ;CY=1,则转移,否则顺序执行程序JNC rel ;CY=0,则转移,否则顺序执行程序JB bit,rel ;(bit)=1,则转移,否则顺序执行程序JNB bi

21、t,rel ;(bit)=0,则转移,否则顺序执行程序JBC bit,rel;(bit)=1,则转移,且该位清零,否则 顺序执行程序1.定义:汇编控制指令,没有指令代码,不能被CPU执行,只用于汇编过程,为汇编程序提供汇编信息。2.常用伪指令(1)ORGORG是设置起始地址伪指令,其格式是:ORG16位地址或标号(2)ENDEND是结束汇编伪指令,其格式是:END(3)DBDB是定义字节伪指令,其格式是:标号:DB 字节型数表(4)DWDW是定义字伪指令,其格式是:标号:DW 字型数表3.3 伪指令(5 5)DSDSDSDS是定义存储空间伪指令,其格式是:是定义存储空间伪指令,其格式是:标号:

22、标号:DS DS 表达式表达式(6 6)EQUEQUEQUEQU是赋值伪指令,其格式是:是赋值伪指令,其格式是:字符名称字符名称EQUEQU数据或汇编符号数据或汇编符号(7 7)DATADATADATADATA是数据地址赋值伪指令,其格式是:是数据地址赋值伪指令,其格式是:字符名称字符名称DATADATA表达式表达式(8 8)BITBITBITBIT是位地址赋值伪指令,其格式是:是位地址赋值伪指令,其格式是:字符名称字符名称BITBIT位地址位地址 详见表详见表3.3 MCS-513.3 MCS-51中的伪指令中的伪指令进制间的转换1.十进制二进制(整数)任何十进制数有:dn-110n-1 d

23、n-210n-2 d1101 d0100 (dn-110 dn-2)10 d1)10 d0规律:di10 di-1 (i=1,2,n-1)按二进制运算规则运算则得二进制数3.4 程序设计举例例:将位十进制数D3D2D1D0转换成二进制数,设位 十进制数D3D2D1D0按分离BCD码形式存放,要求结 果的高位存放在R3中,结果的低位存放在R2中。方法:D3D2D1D0=(010+D3)10+D2)10D1)10+D0结果:16位二进制数0D0D3 30D0D2 20D0D1 10D0D0 0DATADATA流程:设置指针指向设置指针指向DATADATA计数器初始(计数器初始(R7=3R7=3)D

24、iDi初始初始结果单元结果单元结果单元内容结果单元内容10+D10+Di-1 i-1 结果单元结果单元修改指针修改指针计数器计数器-1-1计数器计数器计数器计数器=0=0?返返 回回Y YN NR R3 3R R2 2R2R20AH0AHR3R30AH0AH0 0A A0 00 00 0R R3 3R R2 2MOV A,R2MOV B,#0AHMUL ABMOV R2,AMOV A,BXCHA,R3MOV B,#0AHMUL ABADDA,R3MOV R3,ARETMUL10:结果单元乘10子程序由于4位10进制(9999)小于16位2进制(65535),所以转换结果不会大于16位MOV R

25、0,#DATAMOV R7,#03HMOV A,R0MOV R2,AMOV R3,#0ACALL MUL10INC R0MOV A,R0 ADD A,R2MOV R2,AMOV A,R3ADDC A,#0MOV R3,ADJNZ R7,BCDB1RETBCDB:BCDB1:0D0D3 30D0D2 20D0D1 10D0D0 0DATADATA2.十进制二进制(小数)10进制乘2取整(取溢出)例:0.625=2-1+2-3=0.10100000Ba.小数点位数由乘2次数定,结果单元字节数 也由此定b.第一次的整数权最高=2-1c.乘2是10进制的乘2,自身相加再DA A调整D=b-12-1+b

26、-22-2b-m2-m 例:设入口时10进制数在A中,要求结果放在R2中(8位二进制小数)结果单元清结果单元清0 0次数计数器初始次数计数器初始十进制小数单元乘十进制小数单元乘2 2整数移入结果单元整数移入结果单元计数器计数器-1-1计数器计数器计数器计数器=0=0?返返 回回Y YN NBCDBP:MOV R2,#0 MOV R6,#8BCDBP1:ADD A,ACC DA A XCH A,R2 RLC A XCH A,R2 DJNZ R6,BCDBP1 RET;结果单元清0;次数初始;102;将整数移入结果单元溢出在进位位中3.二进制十进制(整数)按权展开以8位为例:b7b6b5b4b3b

27、2b1b0=b727+b626+b020 =(02+b7)2+b6)2+)2+b0将二进制数逐步左移得:b7,b6,b5,b4,b3,b2,b1,b0结果单元字节数:二进制1字节(255)十进制2字节 二进制2字节(65535)十进制3字节注:这里的乘2为10进制乘2按十进制运算规则运算则得十进制数结果单元清零结果单元清零次数计数器初始次数计数器初始清清CyCy二进制数左移一位到二进制数左移一位到CyCy结果单元结果单元2+Cy 2+Cy 计数器计数器=0=0?返返 回回Y YN N计数器计数器-1-1例:被转换数在R3中,结果在R4R5中IBTD:CLR A MOV R4,A MOV R5,

28、A MOV R7,#8IBTL2:CLR C MOV A,R3 RLC A MOV R3,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,IBTL2 RET4.二进制十进制(小数)二进制乘10取整(取溢出)0.75D 0.75D 0.11000000B0.11000000B 1010B1010B111.10000000B111.10000000B 1010B1010B101.00000000B101.00000000B例:8位二进制小数4位十进制小数结果位数可自定例:设8位二进制小数在A中,

29、结果放在以DATA为首地址的4个单元中,存放格式如下,试编程实现.0D0D-1-10D0D-2-20D0D-3-30D0D-4-4DATADATABd-110-1 d-210-2 d-m10-m指针指针R1R1指向结果最高字节指向结果最高字节DATADATA位计数器初始位计数器初始二进制小数乘二进制小数乘1010取溢出存入结果单元取溢出存入结果单元修改结果指针修改结果指针已经已经4 4位?位?返返 回回Y YN NBBCDP:MOV R1,#DATA MOV R7,#4BBCDP1:MOV B,#0AH MUL AB MOV R1,B INC R1 DJNZ R7,BBCDP1 RET(1)51系列单片机指令系统的特点是不同的存储空间寻址方式不同,适用的指令不同,必须进行区分。(2)指令是程序设计的基础,应重点掌握传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令,掌握指令的功能,操作的对象和结果,对标志位的影响,应要求熟记。小 结

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第3章MCS-51系列单片机的指令系统及汇编措辞法度模范设计课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|