pA安全生产技术安全生产事故案例分析.ppt
第3章单片机的指令系统,本章内容,单片机的指令格式,单片机指令格式符号的意义,单片机指令介绍,单片机的寻址方式,习纫培咳纹本伐距假窥吮锦包钥皂锻沫其驮燥乌肋涕皋珠诺燃馅秀闹艇鸣pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,第一节 指令系统概述 指令是供给用户使用单片机的软件资源,它是CPU控制计算机进行某种操作的命令。全部指令的集合是指令系统。指令常用它的英文名称或缩写形式作为助记符,以助记符表示的指令称为计算机的汇编语言,用指令编写的程序称为汇编语言程序。,一、指令的概念 1、机器码指令与汇编语言指令 MCS-51单片机的指令有两种表达方式:即机器码指令和汇编语言指令。机器码指令 定义:用二进制代码(或十六进制数)表示的指令 特点:能够直接被计算机硬件识别和执行,但不易阅读和记忆。例如 指令INC A执行累加器A加1操作,其二进制代码为“00000100B”,用十六进制数表示的机器码指令为04H。,撞涪吴缴监坑找煌灶剃插微肄顾证跺裔崔并诫替厅茨豢强赢竿裙脸东麦禄pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,汇编语言指令 定义:用助记符来表示的指令。例如 用“MOV”表示数据的传送。特点:不能被计算机硬件直接识别和执行,必须通过某种手段(汇编)把它变成机器码指令才能被机器执行。编写的程序效率高,占用存储空间小,运行速度快,能编写出最优化的程序。,2、汇编语言的语句格式 MCS-51汇编语言的语句格式:标号:操作码操作数;注释 即一条汇编语句是由标号、操作码、操作数和注释4个部分所组成,其中方括号括起来的是可选择部分,可有可无,视需要而定。,汇编语言的语句格式,倪使凛吏闽部瓣游决逸盯呐拆格曳金簧绿挞御轧示兰惯贿驼办葱痘纷琳胺pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,1)标号 标号是语句地址的标志符号,有了标号,程序中的其它语句才能访问该语句。有关标号的规定如下:标号是由1-8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。不能使用本汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。同一标号在一个程序中只能定义一次,不能重复定义。标号的有无取决于本程序中的其它语句是否需要访问这条语句。,2)操作码 操作码用于规定语句执行的操作内容,操作码是以指令助记符或伪指令助记符表示的,操作码是汇编指令格式中唯一不能空缺的部分。,汇编语言的语句格式,频必绞狭傍捅讲珠扔瞥瞄盐践既丫牧秩痛狠今悠农产饵既遵邦挽空慌得你pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,3)操作数 操作数用于给指令的操作提供数据或地址。4)注释 注释不属于语句的功能部分,它只是对语句的解释说明。5)分界符(分隔符)分界符用于把语句格式中的各部分隔开,以便于区分,包括空格、冒号、分号或逗号等多种符号。冒号(:)用于标号之后 空格()用于操作码和操作数之间 逗号(,)用于操作数之间 分号(;)用于注释之前,汇编语言的语句格式,拽噬蚁纬讫锗整末丈袒券粥舆涪俗丫短崭蛇菩隔衰胆与锑蹲簇憋逮懦虹柠pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,3、指令的长度 在MCS-51指令系统中,有一字节、二字节和三字节等不同长度的指令。1)一字节指令 一字节指令只有一个字节,操作码和操作数信息同在其中。2)二字节指令 二字节指令包括二个字节,其中第一个字节为操作码,第二个字节是操作数。3)三字节指令 三字节指令中,操作码占一个字节,操作数占两个字节。,二、MCS-51单片机的寻址方式 寻址:如何指定操作数的所在单元。根据指定方法的不同,MCS-51单片机共有7种寻址方式。,汇编语言的语句格式,僚给凌柠糕吉规烂侠城劫江戍锈均萄茵枢投恼印私霓戚调褥韩绢抱盒疹群pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,1、寄存器寻址方式 定义:操作数在寄存器中。在寄存器寻址方式的指令中以符号名称来表示寄存器。例如指令:MOV A,R0;把寄存器R0的内容传送到累加器A中 寻址范围:通用寄存器,共有4组共32个通用寄存器。部分专用寄存器。例如累加器A、B寄存器及数据指针DPTR等。2、直接寻址方式 定义:指令中操作数直接以单元地址的形式给出。例如指令:MOV A,3AH;把内部RAM 3AH单元中的数据传送给累加器A 寻址范围:低128单元。在指令中直接以单元地址形式给出。专用寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。,寻址方式,诅古崇日杏目预龋勘粕仅鸿嘛揉注颧咳戒辣婆讥租钎寓炼甸槐乍盘苑爹请pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,3、寄存器间接寻址方式 定义:寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的。注意:在寄存器间接寻址方式中,应在寄存器的名称前面加前缓标志“”。例如:假定R0寄存器的内容是3AH,则指令:MOV A,Ro;以R0寄存器内容3AH为地址,把该地址单元的内容送累加器A,寻址方式,运障条瘸前导匝度在圭玉系霉符豪郝麓挟慈荚渗东避叮幌佳填应抒笆梯蘸pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,寻址范围:内部RAM低128单元 只能使用R0或R1作间址寄存器(地址指针),其通用形式为Ri(i=0或1)。外部RAM 64 KB 只能使用DPTR作间址寄存器,其形式为DPTR。外部RAM的低256单元 间址寄存器为DPTR、R0、R1,例如 MOVX A,R0;即把R0指定的外部RAM单元的内容送累加器A 堆找操作指令(PUSH和POP)即以堆找指针(SP)作间址寄存器的间接寻址方式。,寻址方式,弟奈案粱映层脉彭仙饥栏刚阔缔绰固垮匝魄纤刽琐爬镜洛鲤廖启聋蝉措兑pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,4、立即寻址方式 定义:操作数在指令中直接给出。例如:MOV A,3AH MOV DPTR,3000H,寻址方式,蚤雁刷枷监迭肃恶疮疏版奢艰们礼妖遵负兴交讽袱索魁暖街装函挡岿捧呈pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,5、变址寻址方式 定义:以DPTR或PC作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成的16位地址作为操作数地址,以达到访问数据表格的目的。(A中的数为无符号数)。例如:MOVC A,A+DPTR;把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A。,寻址方式,众煎阿好沈弦萍暴枉放张宾发迟掘缴捅征败杆娄分耍疆渣冻辱亲乔讫者瓣pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,寻址方式,说明:*变址寻址方式只能对程序存储器进行寻址,寻址范围可达64 KB.*变址寻址的指令只有3条:MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR*尽管变址寻址方式较为复杂,但变址寻址的指令却都是一字节指令。,耶祖迈边信浅刨掌啃液鸥绊师帝才位烷氛召能催拓铅梢过脾膘再当登稳巧pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,6、位寻址方式 例如:MOV C,3AH;把3AH位的状态送进位位C 寻址范围:内部RAM中的位寻址区,单元地址为20H2FH,共16个单元128位,位地址是00H7FH。两种表示方法:一种是位地址;另一种是单元地址加位。专用寄存器的可寻址位 四种表示方法:直接使用位地址。例如PSW寄存器位5地址为0D5H。位名称表示方法。例如PSW寄存器位5是F0标志位,则可使用F0表示该位。单元地址加位数的表示方法。例如PSW寄存器位5,表示为0DOH.5。专用寄存器符号加位数的表示方法。例如PSW寄存器的位5,表示为PSW.5。,寻址方式,杉妈琅码锥厄那纲磊卡焰葫邑篱陋意簿纸润答盆半丧冲钟桩毖酋毖宇轴剪pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,7、相对寻址方式 为解决程序转移而专门设置的,为转移指令所采用。目的地址=转移指令地址转移指令字节数+rel,寻址方式,琶夏浆倡啼泽匪府束誓汰悬敲劫扯捻比笨国徐应悯唁楷非肌踪财祈悬衔蓖pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,第二节 MCS-51单片机指令分类介绍 MCS-51单片机指令系统共有指令111条,分为5大类:数据传送类指令(29条)算术运算类指令(24条)逻辑运算及移位类指令(24条)控制转移类指令(17条)位操作类指令(17条),就铣脉籽迷僻烫检拟续翠试苔酣谆绎镰腊乎亥攀饰忠坟俯蓟遗限懈屡述瞥pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,Rn当前寄存器组的8个通用寄存器R0R7,n=07。Ri可用作间接寻址的寄存器,只能是R0、R1两个寄存器,i=0、1。direct8位直接地址,在指令中表示直接寻址方式,寻址范围256个单元。包括内部RAM低128单元地址和专用寄存器的单元地址或符号。data8位立即数。datal616位立即数。addr1616位目的地址,只限于在LCALL、LJMP指令中使用。,一、指令格式中符号意义说明,斧验栗凿凋棉肾凋状类匝衅拒紊讹鼻雹隋盂探馁椰登屋所滓陈漆簧狸次平pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,addr1111位目的地址,只限于在ACALL和AJMP指令中使用。rel相对转移指令中的偏移量,为8位带符号补码数。DPTR数据指针。bit内部RAM(包括专用寄存器)中的直接寻址位。A累加器。ACC直接寻址方式的累加器。B寄存器B。C进位标志位,它是布尔处理机的累加器,也称之为累加位。间址寄存器的前级标志。加在位地址的前面,表示对该位状态取反。(X)某寄存器或某单元的内容。(X)由X间接寻址的单元中的内容。箭头左边的内容被箭头右边的内容所取代。,指令格式中符号意义,孪谆梗很矗谎离颠宠溺炮卒檄虑邻躯俺琴淘酉氨踞伯遇隶慢峻向牡矛岂感pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,1.内部RAM数据传送指令组 数据传送指令的特点为:1)操作把源操作数传送到目的操作数,指令执行后,源操作数不改变,目的操作数修改为源操作数。若要求在进行数据传送时,不丢失目的操作数,则可以用交换型的传送指令。2)数据传送指令不影响标志C、AC和OV,不包括奇偶标志P。通用格式为:MOV 目的操作数,源操作数 传送指令中有从右向左传送数据的约定,即指令的右边操作数为源操作数,表达的是数据的来源;而左边操作数为目的操作数,表达的则是数据的去向。,二、数据传送类指令,输勺碑瀑篱苦脖浅余音渍枝鹃尽吏扣彝懈淤脓配要转擒驶凝贬辅妥构险酚pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,1)以累加器为目的操作数的指令 MOV A,Rn;A(Rn),(n=07)MOV A,direct;A(direct)MOV A,Ri;A(Ri),(i=0、1)MOV A,data;A data 例:MOV A,R7;将工作寄存器R7中的值送入A,R7中的值保持不变 MOV A,3FH;将内存3FH单元中的值送入A,3FH单元中的值保持不变 MOV R1,35H MOV A,R1;R1值35H作为数据地址,并将35H单元中的值送A中 MOV A,35H;将立即数35H送入A中,(A)=35H,穴邵盖桌莫毒摄葫迎偷烟洁痢潦各罚敝骇檄篮州饼饭必吠轧土履旺洞钟地pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,2)以寄存器Rn为目的操作的指令 MOV Rn,A;Rn(A),(n=07)MOV Rn,direct;Rn(direct),(n=07)MOV Rn,data;Rn data,(n=07)例:MOV A,#0FFH MOV R7,A 结果:(A)=0FFH(R7)=0FFH,块凶纠己挫竟婉哺朵疆厩潜哄木净稽趴痛虎嚎址曳晋爵凝厂福尔奋杰瑶语pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,3)以直接地址为目的操作数的指令 MOV direct,A;direct(A)MOV direct,Rn;direct(Rn),n=07 MOV direct1,direct2;direct 1(direct2)MOV direct,Ri;direct(Ri),i=0、1 MOV direct,data;direct data 例:MOV 2FH,A;将A的内容送片内RAM的2FH单元 MOV 2FH,R1;将R1的内容送片内RAM的2FH单元 MOV 2FH,30H;将片内R.AM30H单元的内容送片内RAM的2FH;单元 MOV R1,35H MOV 2FH,R1;R1值35H作为数据地址,并将35H单元中的值送入2FH单元 MOV 2FH,35H;将立即数35H送入片内RAM的2FH单元中,援酣敛舵掏翰缆贸逐烘安烩初筋执蝗乃菠做二及还郴峙慢弓浩擎易仔伊涡pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,4)以间接地址为目的操作数的指令 MOV Ri,A;(Ri)(A)MOV Ri,direct;(Ri)(direct)MOV Ri,data;(Ri)data 例:设(R0)=2FH MOV R0,A;将A中的内容送入以R0中的内容2FH为地址的单元中 MOV R0,20H;将20H单元的内容送入以R0中的内容2FH为地址的单元中 MOV R0,34H;将立即数34H送入以R0中的内容2FH为地址的单元中,娥它凰涪撕琉裕阮争君职但揖菲棕蝶筷撤驱常蔚窿宙扬织泅诅拧讨待红宝pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,5)十六位数的传递指令 MOV DPTR,data16 功能:将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。例 MOV DPTR,2050H;则执行完了之后DPH中的值为20H,DPL中的值为50H。等同于 MOV DPH,20H MOV DPL,50H,滴连漳跟依哥坍冬昧另倍仲龚牛荧嘻菲彝讳再蛰策顷徽傈明康蚌酿荫殉茬pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,要点分析:所谓内部存储器在指令中的行为,就是指单片机芯片内存储器在指令中的作用与工作情况。例 将片内RAM的15H单元的内容0A7H送55H单元。解法1 MOV 55H,15H 解法2 MOV R6,15H MOV 55H,R6 解法3 MOV R1,15H MOV 55H,R1 解法4 MOV A,15H MOV 55H,A 例 理解表2-8所列指令的执行结果。,歉瓶秽虚溜优毒巴宵撒蕊躯菌炙靴捂蔷忱耕烘跺迷桔统哑豺钳垫授湛堂掌pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,尤鬼澈瞳假响密笺伶诬阿缆画伟捶鸽缮驰咒挑集绑拨攻层阂诊跪罪批闹唉pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,钞序羔侯蓑昔兢如搁墒罪等妨守谤标楔鲁序之刀跺栏扣撞殆臀啦酌梭班戌pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,2、外部RAM数据传送指令 MOVX A,Ri;A(Ri)MOVX Ri,A;(R0)(A)MOVX A,DPTR;A(DPTR)MOVX DPTR,A;(DPTR)(A)例如:1)MOV R1,0F5H MOVX A,R1;A(片外0F5H)2)MOV R0,00H MOVX R0,A;(片外00H)A 3)MOV DPTR,20F5H;MOVX A,DPTR;A(片外20F5H)4)MOV DPTR,2000H MOVX DPTR,A;(片外2000H)A,哪糖雕职隆翻屏鸭口掀反涡惰稗僳命舰帖郭无傍却遥里肖憾感删鹊姑呀蔑pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,要点分析:1)助记符为“MOVX”;2)在MCS-51中,片外RAM数据传送必须通过累加器A进行;3)使用外部RAM数据传送指令时,应当首先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。,访问片外数据存储器时单片机引脚信号情况:(1)MOVX A,Ri 指令执行时,在P3.7引脚上出现/RD有效信号,作为外部数据存储器的读选通信号。P0口先输出由Ri指定的8位地址信息然后输入该单元的内容,P0口作分时复用的总线。,拇弦沈采耶竟日虱讲逸竞物科劲伺袖麻溯刽给诸睛的苔偏稗骂赂龙斗磨吞pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,(2)MOVX Ri,A 指令执行时,在P3.6引脚上出现/WR有效信,用作外部数据存储器的写选通信号。P0口分时输出由Ri指定的8位地址信息及输出到该单元的数据。以上两条与可以访问外部数据存储器低256字节的存储空间。(3)MOVX DPTR,A 指令执行时,P3.6引脚上输出/WR有效信号,用作外部数据存储器的写选通信号。DPTR所包含的16位地址信息由P0(低8位)和P2(高8位)输出,累加器的内容由P0输出到该单元。P0口作分时复用的总线。(4)MOVX A,DPTR 指令执行时,P3.7引脚上输出/RD有效信号,用作外部数据存储器的读选通信号。DPTR所包含的16位地址信息由P0(低8位)和P2(高8位)输出,选中单元的数据由P0输人到累加器。以上两条可以访问外部数据存储器间64KB的存储空间。,腰澈迫章衔艰倘傍芝琼雪本嘶啡珐堤廊由冬仓虹蹈份伦剧整猖早蚤腔秆躲pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,例 将外部RAM中0010H单元中的内容送入外部RAM中2000H单元中。程序如下:MOV R0,10H MOVX A,R0 MOV DPTR,2000H MOVX DPTR,A,3、程序存储器数据传送指令 远程查表指令 MOVC A,ADPTR;A(A)十(DPTR)近程查表指令 MOVC A,A+PC;A(A)+(PC),攫浇咆物祝浓针丹雄采侗咳铆呐抨借鞘钥槐标砖芝嘛鞋烧沦骆疟馒衅衬汲pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,要点分析:(1)这两条指令是一字节指令,其寻址范围为64KB,指令首先执行16位无符号数的加法操作,获得基址与变址之和,“和”作为程序存储器的地址,该地址中的内容送入A中。(2)第二条指令与第一条指令相比,由于PC的内容不能通过数据传送指令来改变,而且随该指令在程序中的位置变化而变化,因此在使用时需对变址寄存器A进行修正。访问片外程序存储器时单片机引脚信号情况:(1)MOVC A,A+DPTR 指令执行时,/PSEN引脚上输出有效信号,用作片外程序存储器的读选通信号。(DPTR)+(A)所包含的16位地址信息由P0(低8位)和P2(高8位)输出,选中单元的数据由P0输入到累加器。,穗南禹蛙腔力咐诌脚吸兼伙藻颐据粟祥具骄鬼酗北煌脂汁测瓤峪眠前彰壶pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,例5 在片内20H单元有一个BCD数,用查表法获得相应的ASCII码,并将其送入21H单元。其子程序为:设(20H)=07H时,(2)MOVC A,A+PC指令执行时,/PSEN引脚上输出有效信号,用作片外程序存储器的读选通信号。(PC当前值)+(A)所包含的16位地址信息由P0(低8位)和P2(高8位)输出,选中单元的数据经P0口输入到累加器A。以上两条MOVC是64KB存储空间内的查表指令,实现程序存储器到累加器的常数传送,每次传送一个字节。,拐惜密臻苏珐梧贩魏井基叶均预绷斥刺涟篆独谚纽翅旬幕型搪始讨淘汪屠pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,ORG 1000H;指明程序在ROM中存放始地址1000H BCD_ASCl:MOV A,20H;A(20H),(A)07H1002H ADD A,3;累加器(A)=(A)+3,修正偏移量1004H MOVC A,A+PC;PC当前值1005H1005H MOV 21H,A;(A)+(PC)=0AH+1005H=100FH1007H RET;(A)=37H,A(100FH)1008H TAB:DB 30H1009H DB 31H100AH DB 32H100BH DB 33H100CH DB 34H100DH DB 35H100EH DB 36H100FH DB 37H1010H DB 38H1011H DB 39H,嫁酗摇犹左嗽鱼獭思磷颈痕忌讣望厉出臀企分拐室调惧巩频券钞坎派腺停pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,一般在采用PC作基址寄存器时,常数表与MOVC指令放在一起,称为近程查表。当采用DPTR作基址寄存器时,程序如例6所示,TAB可以放在64KB程序存储器空间的任何地址上,称为远程查表,不用考虑查表指令与表格之间的距离。例5 在片内20H单元有一个BCD数,用查表法获得相应的ASCII码,并将其送入21H单元。其子程序为:设(20H)=07H时用远程查表指令如下:ORG 1000HBCD_ASC2:MOV A,20H MOV DPTR,TAB;TAB首址送DPTR MOVC A,A+DPTR;查表 MOV 21H,A RET TAB:DB 30H,31H,32H,33H,34H,35H,36H DB 37H,38H,39H,蔫慢侄领大卷逆门澄必啦鉴匈衬捐污演芭旅微嚏村匣奢坍窘飘瓤乱访掸侣pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,4、堆栈操作指令 压入 PUSH direct;(SP)(SP)+1,(SP)(direct)弹出 POP direct;direct(SP),(SP)(SP)1 例如 执行中断服务子程序时,把数据指针DPTR、工作寄存器R2、程序状态字PSW和累加器A压入堆栈,进行现场保护,如图所示。返回时将其弹出,恢复现场。压入:MOV SP,50H PUSH DPL PUSH DPH PUSH 02H PUSH PSW PUSH ACC弹出:POP ACC POP PSW POP 02H POP DPH POP DPL,存醉泰糟蹋舆匙狄炙实捞册扁狰菲榆昏圈缄咱篙怯胡跪哭类婪蛰始眩二目pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,要点分析:1)堆栈常用来保护现场.2)堆栈操作的特点是“先进后出”,在使用时应注意指令顺序。例 分析以下程序的运行结果 MOV R2,05H MOV A,01H PUSH ACC PUSH 02H POP ACC POP 02H,结果是(R2)=01H,而(A)=05H。也就是两者进行了数据交换。从这个例子可以看出:使用堆栈时,入栈的顺序和出栈的顺序必须相反,才能保证数据被送回原位,即恢复现场,否则就要出错。,倒揪吱副钮族右哩娄旁状功旋俊挣露春俐区跃炼德贡萎溢篇咙仅本谬说管pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,5、数据交换指令(1)字节交换指令 XCH A,Rn;(A)(Rn)XCH A,Ri;(A)(Ri)XCH A,direct;(A)(direct)(2)半字节交换指令 XCHD A,Ri;(A)0-3(Ri)0-3(3)累加器A高低半字节交换指令 SWAP A;(A)0-3(A)4-7 数据交换主要是在内部RAM单元与累加器A之间进行。例 将片内RAM 60H单元与61H单元的数据交换 不能用:XCH 60H,61H 应该写成:MOV A,60H XCH A,61H MOV 60H,A,情少凳难抖磋瞅熊父党悸袭障趾流纱孜瓮暖叭功值抑寻民问菠挤淄受露扯pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,1、加法指令组 共在4条加法运算指令:ADD A,Rn;A(A)+(Rn)ADD A,direct;A(A)+(direct)ADD A,Ri;A(A)+(Ri)ADD A,data;A(A)+data 2、带进位加法指令 ADDC A,Rn;A(A)+(Rn)+(CY)ADDC A,direct;A(A)+(direct)+(CY)ADDC A,R;A(A)+(Ri)+(CY)ADDC A,data;A(A)+data+(CY),三、算术运算类指令,弱沃沉肠瑰蘸空幻熟献恫蝶芬盲媚症揍塞泄箔吴噶长讶讣总列睬雾局姚岂pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,3、带借位减法指令组 SUBB A,Rn;A(A)(Rn)(CY)SUBB A,direct;A(A)(direct)(CY)SUBB A,Ri;A(A)(Ri)(CY)SUBB A,#data;A(A)data(CY)4、加1指令组 INC A;A(A)+1 INC Rn;Rn(Rn)+1 INC direct;direct(direct)+1 INC Ri;(Ri)(Ri)+1 INC DPTR;DPTR(DPTR)+1,秋荷旨舰耳锻态湃午婪恰资邮哆抬铀仟忍赣哆膝胚肚该蛋莱症局央埔脆绩pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,5、减1指令 DEC A;A(A)1 DEC direct;direct(direct)1 DEC Ri;(Ri)(Ri)1 DEC Rn;Rn(Rn)1 6、乘法、除法指令 MUL AB;AB=BA DIV AB;A/B=A.B,层咱抹付清烈吕煌胳旁枢谜亭热踪努退峭馁谣直确祁囱抹豢佃琅噶游码国pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,要点分析:1)MUL指令实现8位无符号数的乘法操作,两个乘数分别放在累加器A和寄存器B中,乘积为16位,低8位放在A中,高8位放在B中;DIV指令实现8位无符号数除法,被除数放在A中,除数放在B中,指令执行后,商放在A中而余数放在B中。2)乘法、除法指令是整个指令系统中执行时间最长的两条指令,它们需要四个机器周期(48个振荡器周期)完成一次操作,对于12MHz晶振的系统,执行一次乘法操作的时间为4us。,硒秽湛破洼刑阻爷甩殉兰峭蚀服酉衡盗瓢伟敏套造速利沾禹姑挛卷版底母pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,7、十进制调整指令 DA A 要点分析:1)这条指令必须紧跟在ADD或ADDC指令之后,且这里的ADD或ADDC的操作是对压缩的BCD数进行运算。2)DA指令不影响溢出标志。3)不能用DA指令对十进制减法操作的结果进行调整。4)借助进位标志可实现多位BCD数加1和减1。,例 设(A)56H,(R7)78H,执行指令:ADD A,R7 DA A 结果:(A)34H,(CY)1,揩捷广酪蛆骂娟夕戏侧人妈萤轩垫萎策乐宏投新辜榆粗丙拄念慎芍彤油筐pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,例 设计将两个4位压缩BCD码数相加程序。其中一个数存放在30H(存放十位,个位)、31H(存放千位,百位)存储器单元,另一个加数存放在32H(存放低位)、33H(存放高位)存储单元,和数存到30H,31H单元。,房息皖周瘴窍卜昨斋怎蕉坐背拱堂前赃哺暴梧催巨恩箭菌屏恿塞届钟旗宰pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,程序如下:MOV R0,30H;地址指针指向一个加数的个位、十位MOV R1,32H;另一个地址指针指向第二个加数的个位、十位MOV A,R0;一个加数送累加器AADD A,R1;两个加数的个位、十位相加DA A;调整为BCD码数MOV R0,A;和数的个位、十位送30H单元INC R0;两个地址指针分别指向两个加数的百位、千位INC R1MOV A,R0;一个加数的百位、千位送累加器ADDC A,R1;两个加数的百位、千位和进位相加DA A;调整为BCD码数MOV R0,A;和数的百位、千位送31H单元,尤乔锋语椒线依鞋雍需蟹蛔豹苑捶淳坞午仅羡蹭拜迄础嘴式篆无怠京艳酞pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,1、逻辑与运算指令组 运算规则为:00=0 01=0 10=0 11=1 ANL A,Rn;A(A)(Rn)ANL A,direct;A(A)(direct)ANL A,Ri;A(A)(Ri)ANL A,data;A(A)data ANL direct,A;direct(direct)(A)ANL direct,#data;direct(direct)data 例 设(A)=27H,(R0)=0FDH,执行指令:ANL A,R0(A)0 0 1 0 0 1 1 1(R0)1 1 1 1 1 1 0 1(A)0 0 1 0 0 1 0 1结果:(A)25H,(P)1。,四、逻辑与运算指令组,房吴镜晓念夜副液址圆误确毕遭必嚼峙粗仪胳符库帜掏涛掇瞥步萄蜀花嘱pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,2、逻辑或运算指令组 运算规则为:0+0=0 0+1=1 1+0=1 1+1=1 ORL A,Rn;A(A)(Rn)ORL A,direct;A(A)(direct)ORL A,Ri;A(A)(Ri)ORL A,data;A(A)data ORL direct,A;direct(direct)(A)ORL direct,#data;direct(direct)data 例 设(P1)25H,(A)33H,执行指令:ORL P1,A(P1)0 0 1 0 0 1 0 1(A)0 0 1 1 0 0 1 1(P1)0 0 1 1 0 1 1 1 结果:(P1)37H,糜活不空豹阻明惠纤滓拎祥检颐吐莫疤溉瞅郎弛伤腹嘘梗诧称庙窝墓溃朽pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,3、逻辑异或运算指令组 运算规则为:00=0,11=0,01=1,10=1 XRL A,Rn;A(A)(Rn)XRL A,direct;A(A)(direct)XRL A,Ri;A(A)(Ri)XRL A,data;A(A)data XRL direct,A;direct(direct)(A)XRL direct,#data;direct(direct)data 例 设(A)94H,(R3)53H,执行指令:XRL A,P3(A)1 0 0 1 0 1 0 0(R3)0 1 0 1 0 0 1 1(A)1 1 0 0 0 1 1 1 结果:(A)0C7H,(P)1。例 试分析下列程序执行结果 MOV A,0FFH;(A)0FFH ANL P1,00H;SFR中P1口清零 ORL P1,55H;P1口内容为55H XRL P1,A;P1口内容为0AAH,酋校恬气舱马笨痞砖点秽摆啄手井唉销医玛裁颅嫌者紊质豢营亏映簿俘砌pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,4、累加器清0”和取反指令组 累加器清“0”指令一条:CLR A;A 0 累加器按位取反指令一条:CPL A,A(A)要点分析:1)逻辑运算是按位进行的,累加器的按位取反实际上是逻择非运算。2)当需要只改变字节数据的某几位,而其余位不变时,不能使用直接传送方法,只能通过逻样运算完成。,魄暴鹿瘸伴汞油私煞萨裔夺气篮丸段求紫舍轴学滑叶鼻逆塌拒彬沽挠牙潞pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,例 将累加器A的低4位传送到P1口的低4位,但P1口的高4位需保持不变。对此可由以下程序段实现:MOV R0,A;A内容暂存R0 ANL A,0FH;屏蔽A的高4位(低4位不变)ANL P1,0F0H;屏蔽P1口的低4位(高4位不变)ORL P1,A;实现低4位传送 MOV A,R0;恢复A的内容,低驭千宵貌霜篙矮尊购庆价豹壤赔先镑抹饱流册许吝料追殆朗睦痘蓖率陵pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,5、移位指令(1)累加器内容循环左移 RL A;An+1 An n06,A0 A7,氰脾茂戍圾畴郡辛印牺车殆鞋唤度研趣弄剩月虫噬殴贸陌绅峭纺绍纺颐悟pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,(2)累加器带进位标志循环左移 RLC A;An+1 An n06,A0 C C A7,匙仿匿梭撑岳培乐扫稀晓原询拢言勉猪禁铂遂描纬起邀观碗情倡师穆恨庇pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,(3)累加器内容循环右移 RR A;An An+1 n06,A7 A0,源惧绞靡魁蘑瑰掐枷写嗅闯投虎壤蓬潭宦锚汝荡蕾骇峪醚遍绎痰巢艾滴驭pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,(4)累加器带进位标志循环右移 RRC A;An An+1 n06,A7 C C A0,菱弧链拇尧弛灰者矫末昏拄魔患承奢宦墩误没邦责为照沽伍诸吾糖拿盏疵pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,例 试用三种方法将累加器A中无符号数乘2。答:方法1:CLR C RLC A 方法2:CLR C MOV R0,A ADD A,R0 方法3:MOV B,2 MUL AB,臼进灸油叶程噎灯典茶万颂翘蚜粳娟逃戮稀否良藻徒奄华勾堵尚悟锦旁寸pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,1、无条件转移指令组 不规定条件的程序转移称之为无条件转移。MCS-51共有4条无条件转移指令:(1)、长转移指令 LJMP addr16;PC addrl6 转移范围64KB,因此称之为“长转移”。长转移指令是三字节指令,依次是操作码,高8位地址,低8位地址。(2)、绝对转移指令 AJMP addr11;PC(PC)2;PC010 addr1l 转移范围2KB 绝对转移指令是二字节指令,五、控制转移指令组,医途薯拳懦忌柱碳煞补盈嚷喳砌驶减矾沂蒲仗茅庶贝彭钉航蔑忆伺棱衡赂pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,(3)短转移指令 SJMP rel rel为相对偏移量。计算目的地址,并按计算得到的目的地址实现程序的相对转移。计算公式为:目的地址=(PC)+2+rel(4)变址寻址转移指令 JMP A+DPTR;PC(A)(DPTR)一字节转移指令。指令以DPTR内容为基址,而以A的内容作变址,转移的目的地址由A的内容和DPTR内容之和来确定,即目的地址=(A)(DPTR),亢辰爹铲驴铬中访诗炯丘罢辣早胞论氦辣片茎矾莽观巨崔辛钞吩河愈翱孕pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,例 ORG 1000H MOV DPTR,TAB;将TAB所代表的地址送入数据指针DPTR MOV A,R1;从R1中取数 MOV B,2 MUL AB;A乘以2,AJMP语句占2个字节,且是连续存放的 JMP A+DPTR;跳转TAB:AJMP S0;跳转表格 AJMP S1 AJMP S2 S0:S0子程序段 S1:S1子程序段 S2:S2子程序段 END,易渗场显途词均茧泄擅东奴殷裕骨彬裹高稚篇夜乳辩方公电收借庇炒抽剂pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,2、条件转移指令组 所谓条件转移就是程序转移是有条件的。执行条件转移指令时,如指令中规定的条件满足,则进行程序转移,否则程序顺序执行。条件转移有如下指令:1)累加器判零转移指令 JZ rel;若(A)0,则 PC(PC)+2+rel 转移 若(A)0,则PC(PC)+2 顺序执行 JNZ rel;若(A)0,则PC(PC)2rel 转移 若(A)0,则PC(PC)2 顺序执行,例顶赔豌绑捡霸欢鱼称粥央范权烽垮儿搂映哪终摩拿宜羌搽沦冲的医厕姆pA安全生产技术安全生产事故案例分析pA安全生产技术安全生产事故案例分析,例 将外