第4章 MCS51指令系统及汇编语言程序设计基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

汇编指令系统电子实验中心赵建课件密码:studE—mail:zhaojian@cuit.edu.cn成于大气信达天下ChengduUniversityofInformationTechnologyMCS—51指令系统InstructionSet7种寻址方式,111条指令字节数运算速度单字节指令:49条双字节指令:46条三字节指令:16条单周期指令:64条双周期指令:45条四周期指令:2条成于大气信达天下ChengduUniversityofInformationTechnology功能数据传送类:29条算术运算类:24条逻辑运算类:24条控制转移类:17条位操作类:17条MCS—51指令系统InstructionSet成于大气信达天下ChengduUniversityofInformationTechnology常用符号说明Rn:工作寄存器中的寄存器R0…R7中之一Ri:工作寄存器中的寄存器R0或R1#data:8位立即数#data16:16位立即数direct:片内RAM或SFR的地址(8位)@:间接寻址寄存器Bit:片内RAM或SFR的位地址addr11:11位目的地址addr16:16位目的地址成于大气信达天下ChengduUniversityofInformationTechnologyRel:补码形式的8位地址偏移量/:位操作指令中,该位求反后参与操作,不影响该位X:片内RAM的直接地址或寄存器(X):相应地址单元中的内容→:箭头左边的内容送入箭头右边的单元内常用符号说明成于大气信达天下ChengduUniversityofInformationTechnology立即寻址ImmediateAddressing操作数就包含在指令代码中,在操作码之后,称为立即数,用“#”表示。MCS-51如:MOVP1,#80HMOVR7,#0F5HMOVDPTR,#1245H8086/8088MOVAL,80HMOVAL,0F5HMOVBX,1245H操作数存在程序存储器中寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology直接寻址DirectAddressing直接使用数所在单元的地址找到了操作数,所以称这种方法为直接寻址。操作数在SFR、内部RAM、位地址空间。如:MOVA,00HMOVC,60HMOVA,0F0H8086/8088CPUMOVAL,[2000H]寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology寄存器寻址RegisterAddressing对选定的工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR中的数进行操作。例:MOVA,R0;将R0工作寄存器中的数据送到累加器A中去。提一个问题:我们知道,工作寄存器就是内存单元的一部分,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOVA,00H和MOVA,R0不就没什么区别了吗?MOVAL,BL(8086CPU的寄存器寻址方式)寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个机器周期,而第二条则只需要1个机器周期,第一条指令变成最终的目标码要两个字节(E5H00H),而第二条则只要一个字节(E8H)就可以了。寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology寄存器间接寻址RegisterIndirectAddressing把地址放在另外一个寄存器中,根据这个寄存器中的数值决定该到哪个单元中取数据。R0,R1----8位地址,片内低128字节或片外DPTR----16位,片外64KBMCS-51如:MOVA,@R0MOVXA,@R0MOVXA,@DPTR8086/8088CPUMOVAL,[BX]MOVAX,[SI]操作数在片内RAM中操作数在片外RAM中操作数在片外RAM中寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两者内容相加,结果作为操作数的地址。常用于查表操作。MCS-51MOVCA,@A+DPTR;(A+DPTR)→AMOVCA,@A+PC;PC+1→PC,(A+PC)→A变址寻址(基址+变址)Base-Register-plus-Index-Register-IndirectAddressing8086/8088CPUMOVAL,[BX+SI]MOVAX,[BP+DI]操作数在程序存储器中寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnologyE0A程序存储区2040H9320E0H472041H………DPH20DPL00ALU如:MOVCA,@A+DPTR设DPTR=2000H,A=E0H20E0H47指令代码寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnologyE0A程序存储区ALU如:MOVCA,@A+PC设A=E0H2121H452040H832121H452041H………2120H47当前PC指令代码寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology相对寻址将PC中的当前内容与指令第二字节给出的数相加,结果作为跳转指令的转移地址(转移目的地址)。PC中的当前内容称为基地址(本指令后的字节地址)指令第二字节给出的数据称为偏移量,1字节带符号数.常用于跳转指令。如:JC23H若C=0,不跳转;C=1,跳转.RelativeAddressing改变PC寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology程序存储区ALU如:JC231025H1000H401025H451001H23……1024H471002H3023H1002H指令代码当前PC寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。如:SETB3DH;将27H.5位置1CLRC;Cy位清08086/8088CPU无此寻址方式位寻址BitAddressing操作数在片内RAM位地址区或SFR某些位中寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology寻址方式涉及的存储器空间寻址方式寻址空间(操作数存放空间)立即寻址程序存储器直接寻址片内RAM低128字节、SFR寄存器寻址工作寄存器R0~R7,A,B,DPTR寄存器间接寻址片内RAM:@R0,@R1,SP片外RAM:@R0,@R1,@DPTR变址寻址程序存储器:@A+PC,@A+DPTR相对寻址程序存储器256字节范围内:PC+偏移量位寻址片内RAM的位寻址区(20H~2FH字节地址)某些可位寻址的SFR寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology请分析下面的程序结果MOVR0,#90H(R0是工作寄存器)MOV90H,#55H(直接寻址访问内部RAM的90H这个地址,将55H这个数送到该空间)MOVA,@R0(间接寻址访问内部RAM的90H这个地址,将该地址中的数送到A中)请问:程序执行完后,A中的值为多少?答:A中的值不确定。寻址方式介绍成于大气信达天下ChengduUniversityofInformationTechnology数据传送类指令(29条)DataTransferInstructionMCS-51助记符:8086/8088助记符:MOV、MOVX、MOVCMOVXCH、XCHD、SWAPXCHGPUSH、POPPUSH、POP源操作数寻址方式(5种):立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址。目的操作数寻址方式(3种):直接寻址、寄存器寻址、寄存器间接寻址除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。汇编指令介绍成于大气信达天下ChengduUniversityofInformationTechnology以累加器为目的操作数的指令(4条)MOVA,Rn;Rn→AMOVA,direct;(direct)→AMOVA,@Ri;(Ri)→AMOVA,#data;data→A将源操作数指定内容送到A中。以寄存器Rn为目的操作数的指令(3条)MOVRn,AMOVRn,directMOVRn,#data这组指令功能是把源操作数指定的内容送入当前工作寄存器,源操作数不变。汇编指令介绍成于大气信达天下ChengduUniversityofInformationTechnology以直接地址为目的操作数的指令(5条)MOVdirect,AMOVdirect,RnMOVdirect1,direct2MOVdirect,@RiMOVdirect,#data这组指令功能是把源操作数指定的内容送入由直接地址指出的片内存储单元。例:MOV20H,AMOV20H,R1MOV20H,30HMOV20H,@R1MOV0A0H,#34HMOVP2,#34H汇编指令介绍成于大气信达天下ChengduUniversityofInformationTechnology以间接地址为目的操作数的指令(3条)MOV@Ri,A;A→(Ri)MOV@Ri,direct;(direct)→(Ri)MOV@Ri,#data;data→(Ri)功能:把源操作数指定的内容送入以R0或R1为地址指针的片内存储单元中。例:MOV@R0,AMOV@R1,20HMOV@R0,#34H汇编指令介绍成于大气信达天下ChengduUniversityofInformationTechnology十六位数的传递指令(1条)MOVDPTR,#data168051是一种8位机,这是唯一的一条16位立即数传递指令。功能:将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。例:MOVDPTR,#1234H执行完了之后DPH中的值为12H,DPL中的值为34H。如果我们分别向DPH,DPL送数,则结果也一样。如下面两条指令:MOVDPH,#35HMOVDPL,#12H。则就相当于执行了MOVDPTR,#3512H。汇编指令介绍成于大气信达天下ChengduUniversityofInformationTechnology累加器A与片外RAM之间的数据传递类指令(4条)MOVXA,@RiMOVX@Ri,AMOVXA,@DPTRMOVX@DPTR,A说明:1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。汇编指令介绍成于大气信达天下ChengduUniversityofInformationTechnology2.要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。(演示举例)3.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写

1 / 86
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功