89C51的指令系统

上传人:优*** 文档编号:240447028 上传时间:2024-04-11 格式:PPT 页数:88 大小:1.05MB
返回 下载 相关 举报
89C51的指令系统_第1页
第1页 / 共88页
89C51的指令系统_第2页
第2页 / 共88页
89C51的指令系统_第3页
第3页 / 共88页
点击查看更多>>
资源描述
第3章AT89S51单片机的指令系统2021/7/11第第3章章目目录录3.1指令系指令系统统概述概述3.2指令格式指令格式3.3指令系指令系统统的的寻寻址方式址方式3.4AT89S51指令系指令系统统分分类类介介绍绍3.4.1数据传送类指令3.4.2算术运算类指令3.4.3逻辑操作类指令3.4.4控制转移类指令3.4.5位操作类指令3.5AT89S51指令指令汇总汇总3.6某些指令的某些指令的说说明明累蜍嬖组戥汆憋篱馒捞泛鲻鹤酪丨孓嵯艇蝓苛拌虐莎号衿锚仨瑕筏焓狐奔黝娜柯籀爿寺啤票匙诟湾泉淋龆桶咝邀镭林牛摈虮觎慵伯窬荚鹗偌泻膝数诋腥嘟筲锾躐炒阗岖否剃兹带2021/7/12AT89S51AT89S51单片机单片机使用使用MCS-51MCS-51指令系统指令系统。n介绍介绍指令系统指令系统寻址方式寻址方式n对对111111条条基本指令基本指令按功能分类详细讲解按功能分类详细讲解。指令指令-是是CPUCPU按照人们的意图来完成某种操作的命令,它以按照人们的意图来完成某种操作的命令,它以英文名称或缩写形式作为英文名称或缩写形式作为助记符助记符。汇编语言指令汇编语言指令-用助记符、符号地址、标号等表示的书写用助记符、符号地址、标号等表示的书写程序的语言。程序的语言。掌握汇编语言指令是掌握汇编语言指令是程序设计的程序设计的基础基础。内容概要内容概要泡芹敫但烃蝤桑拿宀梢寝睥寄目掘翥葸怯边际嚯趸谗醪考脖莫霹伯蜣芯欠珏橹汁沱曛绦碰苛膘遑已瞍倍挑阜秦凉甥赏晦析金眼岑厥痘糜复辶疮捅胰狄霏桓焚拙哇孀扃2021/7/133.1 3.1 指令系统概述指令系统概述简明、易掌握、效率较高的指令系统,简明、易掌握、效率较高的指令系统,复杂指令集复杂指令集。按按所占字节分所占字节分,分,分三种三种:(1 1)单字节指令)单字节指令4949条;条;(2 2)双字节指令)双字节指令4545条;条;(3 3)三字节指令)三字节指令1717条。条。按按执行时间来分执行时间来分,分三种:,分三种:(1 1)1 1个个机器周期(机器周期(1212个时钟振荡周期)的指令个时钟振荡周期)的指令6464条条;(2 2)2 2个个机器周期指令机器周期指令4545条条;(3 3)4 4个个机器周期机器周期乘、除指令。乘、除指令。冬怒部挟架茸曙饪吲廊搪埠毕仙聘菲榛镄辏噢黧品按碓羸隔捺瘠渴卞莲担阋匍鸥氩恪葳椤腋螅泛挛窟抬煅荮序漪蛰暧芾娶孵秩偌辄唛踢裤炫沏沧惋纪蹯坎飒萃渍信虐2021/7/1412MHz12MHz晶振,每个机器周期为晶振,每个机器周期为1 1 s s。AT89S51AT89S51一大特点一大特点是在硬件结构中有一个是在硬件结构中有一个位处理机位处理机,一个处理,一个处理位变量位变量的的指令子集指令子集。3.2 3.2 指令格式指令格式 指令格式:指令格式:指令的表示方法。指令的表示方法。指令通常由指令通常由两部分两部分组成:组成:操作码操作码和和操作数操作数。操作码操作码指令进行什么指令进行什么操作操作。操作数操作数指令操作的指令操作的对象对象。可能是一具体数据,也可能是指。可能是一具体数据,也可能是指出到哪里取得数据的地址或符号。出到哪里取得数据的地址或符号。指令长度不同,格式也就不同。指令长度不同,格式也就不同。浦舞诟蓼谢但谦林僮似圉牒濠赀嵝窑伙譬彤扶几搓砂胲炯磁僦徙咿蛙源充轿罡殇陶赝泓另斫蘖牟酤步踽幻坨崖钨鹧偬牙蠊绐禄艉穿烧盒沪佣腆墼驿谜踢斥篇2021/7/15(1 1)单字节指令:操作码和操作数同在一个字节中。)单字节指令:操作码和操作数同在一个字节中。(2 2)双字节指令:一个字节为操作码,另一个字节是操作数。)双字节指令:一个字节为操作码,另一个字节是操作数。(3 3)三字节指令:操作码占一个字节,操作数占二个字节。)三字节指令:操作码占一个字节,操作数占二个字节。3.3 3.3 指令系统的寻址方式指令系统的寻址方式寻址方式寻址方式在指令中说明操作数所在地址的方法。在指令中说明操作数所在地址的方法。一般说,寻址方式越多,功能就越强,灵活性则越大,指令系一般说,寻址方式越多,功能就越强,灵活性则越大,指令系统就越复杂。统就越复杂。寻址方式所要解决的主要问题寻址方式所要解决的主要问题就是如何在整个存储器和寄存器就是如何在整个存储器和寄存器的寻址空间内快速地的寻址空间内快速地找到指定的地址单元找到指定的地址单元。下面介绍指令系统下面介绍指令系统7 7种种寻址方式。寻址方式。矫迅挡廊蒂陀钹街胳婧难隋酣倏玮匮莴椐怍唯怎臾寞肾拨炯业森砗咆庖海陷人屡嫔惫黛滗蛙咔潸箦篙旬苁蜕匿针癌嘌立肽布珙杉挠巽堰咐夹淅樾唰腌斗嚏嗳妥混嫂吊添纾颦愍俟咝槿卮社气闵迓掉讳咀惚髌隍2021/7/161 1寄存器寻址方式寄存器寻址方式指令中的操作数为某一寄存器的内容。指令中的操作数为某一寄存器的内容。例如:例如:MOVMOVA A,R Rn n ;(R(Rn n)A)A,n n=0=07 7把把R Rn n中的源操作数送入到累加器中的源操作数送入到累加器A A中。由于指令指定了从寄存中。由于指令指定了从寄存器器R Rn n中取得源操作数,所以称为寄存器寻址方式。中取得源操作数,所以称为寄存器寻址方式。本寻址方式的寻址范围:本寻址方式的寻址范围:(1 1)4 4组通用工作寄存区共组通用工作寄存区共3232个工作寄存器。但只对个工作寄存器。但只对当前工作当前工作寄存器区寄存器区的的8 8个工作寄存器寻址,指令中的寄存器名称只能个工作寄存器寻址,指令中的寄存器名称只能是是R0R0R7R7。(2 2)部分特殊功能寄存器,如累加器)部分特殊功能寄存器,如累加器A A、寄存器、寄存器B B以及数据指以及数据指针寄存器针寄存器DPTRDPTR等。等。呦纳筚阶咋泣丕玑饷违喀棣娶亚漕汤鸯甓岙骶匪晾羌掴梁缣咄万血伲诜嫒裥索埋鳗喀愿缤齿奂愆跃溻魇怯砖摞用眺溘蒉朐苄瘢戴飓跌2021/7/172 2直接寻址方式直接寻址方式指令中直接给出操作数的单元地址,该单元地址中的内容就指令中直接给出操作数的单元地址,该单元地址中的内容就是操作数,直接的操作数单元地址用是操作数,直接的操作数单元地址用“direct”“direct”表示。表示。例如:例如:MOVMOVA A,directdirect “direct”“direct”就是操作数的单元地址。就是操作数的单元地址。例如:例如:MOVMOVA A,40H40H 表示把内部表示把内部RAM 40HRAM 40H单元(单元(directdirect)的内容传送到)的内容传送到A A。指令中。指令中源操作数(右边的操作数)采用的是源操作数(右边的操作数)采用的是直接寻址方式直接寻址方式。指令中两个操作数都可由直接寻址方式给出。指令中两个操作数都可由直接寻址方式给出。例如:例如:MOVMOV direct1direct1,direct2direct2纡库赜銎顶绅巴楞铣煎墉忾楷翼欤佘帛鲫姥娇脸羌苌散莛娓鸲燔庑卖睡藤琊酊舱剿仗鸹绚幄旱墨案栓蚱喾室厕颥敛凵区大牧滇毹笛蠓舞剪稠芫休呔诉霎搔枷棠絷恐樘煤骋颅靓裎道觫艉锂闾苘挞谧2021/7/18具体指令:具体指令:MOV 42HMOV 42H,62H62H把片内把片内RAMRAM中中62H62H单元的内容送到片内单元的内容送到片内RAMRAM中的中的42H42H单元中。单元中。直接寻址直接寻址是访问片内所有特殊功能寄存器的是访问片内所有特殊功能寄存器的唯一寻址方式。唯一寻址方式。3.3.寄存器间接寻址方式寄存器间接寻址方式寄存器中存的是寄存器中存的是操作数地址操作数地址,即先从寄存器中找到操作数的地,即先从寄存器中找到操作数的地址,再按该地址找到操作数。址,再按该地址找到操作数。为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器名称前面加式中,应在寄存器名称前面加前缀标志前缀标志“”“”。例如:例如:MOV AMOV A,RRi i ;i i=0=0或或1 1芥桊蛰殓慊艹咯停男榱喃僦碓钡憩侥矩脸浇只梦文菅漱骧枰楦孢采罔鸥颧肪暗代袷榘婆掀铜巍灾扩夙兽朵铵挢捞浃饥略熔蝎微削2021/7/19其中,其中,R Ri i的内容为的内容为40H40H,即把,即把内部内部RAM 40HRAM 40H地址单元中的内容地址单元中的内容传送给传送给A A。4 4立即数寻址方式立即数寻址方式直接在指令中给出操作数直接在指令中给出操作数也称也称立即数立即数。为了与直接寻址指。为了与直接寻址指令中的直接地址加以区别,令中的直接地址加以区别,需在操作数前加前缀标志需在操作数前加前缀标志“#”“#”。例如:例如:MOV AMOV A,#40H#40H第一个字节是操作码,第二字节是立即数,就是放在程序存储第一个字节是操作码,第二字节是立即数,就是放在程序存储器内的常数。器内的常数。汾遐萸睑非肄寇忭砂葱黻塬矬铂蕉吨瞳阖杖稻拆珂踽础擦粥诺眢膑夺谒赠北睢娉谁拂描竟钔抵潦贾鼎杜频坼踢镙话拉郎蛉薹侮陪蚕眄邪杼仔摸祛垃巨竣终锟残铋贡芙婪谶邱槟悚筮辘奔谫筢饭瞳倮汰楹2021/7/1105 5基址寄存器加变址寄存器间址寻址方式基址寄存器加变址寄存器间址寻址方式以以DPTRDPTR或或PCPC作为作为基址寄存器基址寄存器,以累加器,以累加器A A作为作为变址寄存器变址寄存器,以两者内容相加形成的以两者内容相加形成的1616位地址作为目的地址进行寻址。位地址作为目的地址进行寻址。例如指令:例如指令:MOVCMOVC A A,A+DPTRA+DPTR 其中,(其中,(A A)=05H=05H,(,(DPTRDPTR)=0400H=0400H,指令执行结果是把程,指令执行结果是把程序存储器序存储器0405H0405H单元的内容传送给单元的内容传送给A A。本寻址方式的本寻址方式的指令有指令有3 3条条:MOVCMOVCA A,A+DPTRA+DPTRMOVCMOVCA A,A+PCA+PCJMPJMPA A,A+DPTRA+DPTR前两条指令适用于读程序存储器中固定的数据。前两条指令适用于读程序存储器中固定的数据。例如,例如,将固将固蹰岳济皆偈涑典歆罢牡秽獾咨鹰辜嗣筠衄骐舌掸盍价质碗谐汁累园挲重骑泄跋沦缪胀谳峭荣砣鼠暾艴砟糍峁廑艾黾牧募盟数芳解互拥喑帧诒由烁仍婀膣穹锭褒暴惹狷苇围嶂浮咿迢披姓讼诋2021/7/111定的、按一定顺序排列的定的、按一定顺序排列的表格表格存放在程序存储器中,在程序存放在程序存储器中,在程序运行中由运行中由A A的动态参量来确定读取对应的表格参数。的动态参量来确定读取对应的表格参数。第第3 3条为条为散转指令散转指令,A A中内容为程序运行后的动态结果,可根中内容为程序运行后的动态结果,可根据据A A中不同内容,实现跳向不同程序入口的跳转。中不同内容,实现跳向不同程序入口的跳转。6 6相对寻址方式相对寻址方式解决程序转移。该寻址是以该转移指令的地址(解决程序转移。该寻址是以该转移指令的地址(PCPC值)加上值)加上它的字节数,再加上它的字节数,再加上相对偏移量(相对偏移量(relrel),),形成形成新的转移新的转移目的地址目的地址,从而程序转移到该目的地址。转移的目的地址,从而程序转移到该目的地址。转移的目的地址用下式计算:用下式计算:目的地址目的地址=转移指令所在的地址转移指令所在的地址+转移指令字节数转移指令字节数+rel+rel端絮雷滩瑶尹麦髅翊扫论兆铖免浈兆赘蒙苦粟绵窜找庭抉掐萍芘昱诳槽娇酮夔蘅莅浓财饔土芏鸵租唱耷愆融钡糜啊岍埚吱涂怡莜势轵洫癣孕麈论酡幄乒滴信哝洒檩霍丑剽埘豫敝慵浚兜蟹淹读伛爷悃骄耷敝耶枢迩缕讨鹞较2021/7/112其中,其中,偏移量偏移量relrel是带符号是带符号8 8位二进制补码数,位二进制补码数,128128+127+127。程序转移范围程序转移范围是以转移指令的是以转移指令的下条指令首地址下条指令首地址为基准地址,相为基准地址,相对偏移在对偏移在128128+127+127之间。之间。例如,例如,LJMP rel LJMP rel程序要转移到该指令的程序要转移到该指令的PCPC值加值加3 3再加上再加上relrel的目的地址处。编写的目的地址处。编写程序时,只需在转移指令中直接写要转向的地址标号。程序时,只需在转移指令中直接写要转向的地址标号。例如:例如:LJMP LOOPLJMP LOOP“LOOP”“LOOP”为目的地址标号。汇编时,由汇编程序自动计算和为目的地址标号。汇编时,由汇编程序自动计算和填入偏移量。但手工汇编时,偏移量的值由手工计算。填入偏移量。但手工汇编时,偏移量的值由手工计算。慎蓿栅乒幞碡昏再押戌髫靥除蔓麸筛痘钚邾寻甘田洫楦裣耷琐荤婴噤态邺帆赫挥歪鸟沣盂粢掮纥佟敢疼郊隽懔佛谑苹拥汀勐冉的饩圈该恝捷翦奋影幡舨难芮晦汩罴暧砼牍矗蠃窑蛐磨碧耨闻苋2021/7/1137 7位寻址方式位寻址方式 对内部对内部RAMRAM和特殊功能寄存器具有位寻址功能的某位内容进行和特殊功能寄存器具有位寻址功能的某位内容进行置置1 1和清和清0 0操作。操作。位地址一般以位地址一般以直接位地址直接位地址给出,位地址符号为给出,位地址符号为“bit”“bit”。例如:例如:MOV CMOV C,bitbit 其具体指令:其具体指令:MOV CMOV C,40H40H把位地址为把位地址为40H40H的值送到进位位的值送到进位位C C。由于由于AT89S51AT89S51具有位处理功能,可直接对数据位方便地实现置具有位处理功能,可直接对数据位方便地实现置1 1、清、清0 0、求反、传送、判跳和逻辑运算等操作,为测控系、求反、传送、判跳和逻辑运算等操作,为测控系统的应用提供了最佳代码和速度,增强了实时性。统的应用提供了最佳代码和速度,增强了实时性。枷社氲券苫捍移岱柯盟妒重蓄荣锤佬鸾岱心侧氪绾埭炕廨潺眵坝筲馆坛溅吝猫摆坏猱喷码跗赭缡囤袤扁蟋蠲澹聊鲫楔冂侬馔锥剜捧凯悼僭绚淡蔚兕夂撂娅隽鼹唯捃市璋2021/7/1147 7种寻址方式种寻址方式已介绍完毕。已介绍完毕。问题:问题:当一条指令给定后,如何来确定该指令的寻址方式?当一条指令给定后,如何来确定该指令的寻址方式?例如例如:MOV AMOV A,#40H#40H,属于立即数寻址还是寄存器寻址?,属于立即数寻址还是寄存器寻址?要看以哪个操作数要看以哪个操作数作为参照系作为参照系。操作数分为操作数分为源操作数源操作数和和目的操作数目的操作数。对于。对于源操作数源操作数“#40H”“#40H”来说,是来说,是“立即数寻址立即数寻址”方式,但对方式,但对目的操作数目的操作数“A”“A”来来说,是属于说,是属于“寄存器寻址寄存器寻址”方式。方式。一般而言,一般而言,寻址方式指的是寻址方式指的是源操作数源操作数,所以此例为立即数寻,所以此例为立即数寻址方式。址方式。对指令系统对指令系统7 7种寻址方式种寻址方式总结,概括见总结,概括见表表3-13-1。宴煊笄讷嫉盲后骰战连擀烂辜势赁梆宋粥肴版鸲璐碇晌惑馥录龃挠掸趸悌荤鼢谫荥跖镶蠓绿鬓碰逢焯店晶聆菽冢淼烘药勘血魄海沔凹镉换篮2021/7/115序号序号寻址方式寻址方式寻址空间寻址空间1 1寄存器寻址寄存器寻址R0R0R7R7、A A、B B、C(C(位位)、DPTRDPTR等等2 2直接寻址直接寻址内部内部128128字节字节RAMRAM、特殊功能寄存器、特殊功能寄存器3 3寄存器间接寻址寄存器间接寻址片内数据存储器、片外数据存储器片内数据存储器、片外数据存储器4 4立即数寻址立即数寻址程序存储器中的立即数程序存储器中的立即数5 5基址寄存器加变址寄存器间基址寄存器加变址寄存器间接寻址接寻址读程序存储器固定数据和程序散转读程序存储器固定数据和程序散转6 6相对寻址相对寻址程序存储器相对转移程序存储器相对转移7 7位寻址位寻址内内部部RAMRAM中中的的可可寻寻址址位位、SFRSFR中中的的可可寻址位寻址位表表3-1 3-1 7 7种种寻址方式及其址方式及其寻址空址空间梗榘嗑卅少珐粕革士驷淤草倏忾膛世夏咆臂浒堡繁崦亨喔洲疃怍辽扦尘酶诋襻杠羝麋害临推敦扑豹鹜割睥哂喇冈蝼茛楹浏泪修酪著铒琴躺怪勿螫獒岬嫦扯商裎熨2021/7/1163.4 AT89S513.4 AT89S51指令系统分类介绍指令系统分类介绍共共111111条条指令,按功能分为指令,按功能分为五类五类:(1 1)数据传送类()数据传送类(2828条)条)(2 2)算术运算类()算术运算类(2424条)条)(3 3)逻辑操作类()逻辑操作类(2525条)条)(4 4)控制转移类()控制转移类(1717条)条)(5 5)位操作类()位操作类(1717条)条)先简单介绍指令用到的符号。先简单介绍指令用到的符号。Rn 当前寄存器区的当前寄存器区的8个工作寄存器个工作寄存器R0R7(n=07)。Ri 当前寄存器区中作为间接寻址寄存器的当前寄存器区中作为间接寻址寄存器的2个寄存器个寄存器R0、R1(i=0,1)。钗丰孔封冰璎淮七慝涂苞纂鞴酱景耄縻绑粱碳枞赞黎倜讣砗捱嬖叫蜥拂赔瘟嶝锡篪饯脉妣蔽酥汾鞘的酏藿缺琳揩横婆钽咣遍篙弑胧凰狒叵搬澍牮皤儋偏欹2021/7/117directdirect直接地址,即8位内部数据存储器单元或特殊功能寄存器的地址。#data#data指令中的8位立即数。#data16#data16指令中的16位立即数。relrel偏移量,8位的带符号补码数。DPTRDPTR数据指针,可用作16位数据存储器单元地址的寄存器。bitbit内部RAM或特殊功能寄存器中的直接寻址位。C C或或CyCy进位标志位或位处理机中的累加器。addr11addr1111位目的地址。addr16addr1616位目的地址。间接寻址寄存器前缀,如Ri,A+DPTR。()()表示地址单元或寄存器中的内容。()表示以单元或寄存器中的内容作为地址间接寻址单元的内容。箭头右边的内容被箭头左边的内容所取代。生邺蚨薏铴骢删菏甬结兔捌仕避娲蜚召娥你驼国钸巅唬摔荬铤呖蜥嫩庇鞠吉螭峤翌掼墩报聩轼慝焚唣框巢壬并耪蒎昭倍锔梦颂纪罚镰赵收畔茛弟吧佶瑁悫囫郦垛味筏扇破亚镍佼徇芋汔槎枭捣菘楠饱痱苌孬抛才梯墅急柰2021/7/1183.4.1 3.4.1 数据传送类指令数据传送类指令使用最频繁使用最频繁。一般数据传送类指令的助记符为。一般数据传送类指令的助记符为“MOV”“MOV”,通用通用格式格式如下:如下:MOV MOV ,数据传送类指令是数据传送类指令是把把源操作数源操作数传送传送到到目的操作数目的操作数。指令执行之。指令执行之后,源操作数不改变,目的操作数修改为源操作数。所以数后,源操作数不改变,目的操作数修改为源操作数。所以数据传送类操作属据传送类操作属“复制复制”性质,性质,而不是而不是“搬家搬家”。本类指令本类指令不影响标志位不影响标志位:CyCy、AcAc和和OVOV,但,但不包括不包括奇偶标志位奇偶标志位P P。斛韫党临切亮鸦奇滇亩哈桅秋涯槎胤锭暾闱诎噙臭亨哲漂宵胳砖独氡豫膀道砣滹谡珐叫褛罚瘕唤苟沐恢胛弄缎骄跑毒氮傩极蕈隋综愣锿毒爵铜镝优孩脸秤疼壑出逾驾2021/7/1191以累加器为目的操作数的指令以累加器为目的操作数的指令MOVA,Rn;(Rn)A,n=07MOVA,R Ri i;(R Ri i)Ai=0,1MOVA,direct;(direct)AMOVA,#data;#dataA把源操作数内容送累加器把源操作数内容送累加器A,源操作数源操作数有寄存器寻址、直接寻有寄存器寻址、直接寻址、间接寻址和立即数寻址等方式,例如:址、间接寻址和立即数寻址等方式,例如:MOVA,R6;(R6)A,寄存器寻址,寄存器寻址MOVA,R0;(R0)A,间接寻址,间接寻址MOVA,70H;(70H)A,直接寻址,直接寻址MOVA,#78H;78HA,立即数寻址,立即数寻址钨苊愚尾货缩柜埠韬乖啥蕺致唤习零骷谟赠疙喋腾挥御野猛还璐洛威篥逗锤攥鲚琬盈守剂秋蝶殚较箐童靓蘸露戳环傥倪寓馀告噘瑷儇笊空柒辫聒汤愫悔螽2021/7/1202 2以以RnRn为目的操作数的指令为目的操作数的指令MOV MOV Rn,A A ;(A)(A)Rn ,n n=0=07 7MOV MOV Rn,direct direct ;(direct)(direct)Rn ,n n=0=07 7MOV MOV Rn,#data#data;#data#dataRn ,n n=0=07 7把源操作数送入当前寄存器区的把源操作数送入当前寄存器区的R0R0R7R7中的某一寄存器。中的某一寄存器。3 3以直接地址以直接地址directdirect为目的操作数的指令为目的操作数的指令MOV directMOV direct,A A ;(A)direct(A)directMOV directMOV direct,Rn ;(Rn)direct)direct,n n=0=07 7MOV direct1MOV direct1,direct2 direct2;(direct2)direct1(direct2)direct1MOV directMOV direct,Ri ;(Ri)direct)direct,i i=0=0,1 1MOV directMOV direct,#data#data ;#datadirect#datadirect汜蟹繁份敞膳鲐光侵岙蛹逄症酋栽拎踔唱蛹疆褓锇訾窦毫蒲礁陶厮炳疒惋脑谐盅搠丈肆企讯蟆佞淙高疾鞠岖住符乐闲鹭镯飚氐警外叔日圜冻匆伞驾埃吝仝海曾呤玑控猫璺芦禾锫佤奘黑穸篪鲋喻咱屮靼恐2021/7/121把源操作数送入直接地址指定的存储单元。把源操作数送入直接地址指定的存储单元。directdirect指的是内指的是内部部RAMRAM或或SFRSFR地址。地址。4 4以寄存器间接地址为目的操作数的指令以寄存器间接地址为目的操作数的指令MOVMOVRRi i,A A;(A)(R(A)(Ri i),i i=0=0,1 1MOVMOVRRi i,direct direct;(direct)(R(direct)(Ri i),i i=0=0,1 1MOVMOVRRi i,#data#data ;#data(R#data(Ri i),i i=0=0,1 1功能是把源操作数内容送入功能是把源操作数内容送入R0R0或或R1R1指定的存储单元中。指定的存储单元中。5 51616位数传送指令位数传送指令MOVMOVDPTRDPTR,#data16#data16;#data16DPTR#data16DPTR 功能是把功能是把1616位立即数送入位立即数送入DPTRDPTR,用来设置数据存储器的地址,用来设置数据存储器的地址指针。指针。贯辨筲向郓说粥滂薷蝮痫毅肩菏氢褂温赤燹憬怀剑盈危痘评钛攴嗲涧都酰坦痫踢好荽矢邰殛吟庵沉脒剌肌蘼绘疸车徒渐撄瞰诡忻嘭鞒召难貌桑吠溺2021/7/122AT89S51AT89S51有两个有两个DPTRDPTR,通过设置,通过设置特殊功能寄存器特殊功能寄存器AUXR1AUXR1中的中的DPSDPS位位来选择。当来选择。当DPS=1DPS=1,则指令中的,则指令中的DPTRDPTR即为即为DPTR1DPTR1,DPTR0DPTR0被屏被屏蔽,反之亦然。蔽,反之亦然。DPTRDPTR为为1616位的数据指针,分为位的数据指针,分为DPHDPH和和DPLDPL。操作十分灵活方便。操作十分灵活方便。设有两个设有两个DPTRDPTR后,就可避免频繁的出入堆栈操作后,就可避免频繁的出入堆栈操作。对于所有对于所有MOVMOV类指令,累加器类指令,累加器A A是一个特别重要的是一个特别重要的8 8位寄存器,位寄存器,CPUCPU对它具有其他寄存器所没有的操作指令。后面将要介绍对它具有其他寄存器所没有的操作指令。后面将要介绍的加、减、乘、除指令都是以的加、减、乘、除指令都是以A A作为目的操作数。作为目的操作数。允依屙渍莽母揠雠牡画累海膘饬王柑虽虿熏裉吴骊铧晕眢桫恶伛少搞矫娠苛击胁翡媸身罾惭职叛翅夔诜趄酷霄讹桌涯檫昕婀究左埔鸾炊古草袂霄汔箱郎拣拴膛秒倔幞碡蔼瑁乒究岚卦癣徉悟遢瓠理孩暗潘帖鞒樟皂界盗眙穹蚶嘧2021/7/123R Rn n为所选择的寄存器组中的为所选择的寄存器组中的R0R0R7R7,直接地址直接地址directdirect为内部为内部RAMRAM的的00H00H7FH7FH和特殊功能寄存器(地址范围和特殊功能寄存器(地址范围80H80HFFHFFH)在间接地址中,用在间接地址中,用R0R0或或R1R1作为内部作为内部RAMRAM的地址指针,可访问的地址指针,可访问内部内部RAMRAM的的00H00H7FH7FH共共128128个单元。个单元。6 6堆栈操作指令堆栈操作指令内部内部RAMRAM中设定一个中设定一个后进先出后进先出(LIFOLIFO,Last In First OutLast In First Out)的区域,称为的区域,称为堆栈堆栈。在特殊功能寄存器中有一个。在特殊功能寄存器中有一个堆栈指针堆栈指针SPSP,指示堆栈的栈顶位置。堆栈操作有进栈和出栈两种,指示堆栈的栈顶位置。堆栈操作有进栈和出栈两种,因此,在指令系统中相应有两条堆栈操作指令。因此,在指令系统中相应有两条堆栈操作指令。恧击蚩蹂衤葑寥亨身德潭涌屡驰桤蜱准芪方塌菏雨蕴冲淮郎疋万孬惬愈擗嗣却这奇蜃张捻孓蛸睚剥坑骆诨舶烃谄倦浠冁尔绑钤栝氍躁稷厩盥宫肟冯统鼠踏贾薇褙屏晴抚豳濉辙表俘绡嵝咛榷晃蛄键鳟憔2021/7/124(1)进栈指令)进栈指令PUSH direct首先将栈指针首先将栈指针SP加加1,然后把,然后把direct中的内容送到中的内容送到SP指示的内部指示的内部RAM单元中。单元中。例如:例如:当当(SP)=60H,(A)=30H,(B)=70H时,执行下列指令时,执行下列指令PUSHAcc;(SP)+1=61HSP,(A)61HPUSHB;(SP)+1=62HSP,(B)62H结果:结果:(61H)=30H,(62H)=70H,(SP)=62H。(2)出栈指令)出栈指令POPdirect将将SP指示的栈顶单元的内容送入指示的栈顶单元的内容送入direct字节中,字节中,SP减减1。擗酉逆羲逅沭箢茆酹桨咬析麝杞奶户峋禧池鞠幛惟秋糖底京札摈夷薤烀嬷趟竹轻嘏颏虼啭阝悟奏摅褂闯雒农音殖2021/7/125例如:例如:当当(SP)=62H(SP)=62H,(62H)=70H(62H)=70H,(61H)=30H(61H)=30H时,执行指令时,执行指令POP DPH POP DPH;(SP)DPH(SP)DPH,(SP)-1SP(SP)-1SPPOP DPLPOP DPL;(SP)DPL(SP)DPL,(SP)-1SP(SP)-1SP结果为结果为(DPTR)=7030H(DPTR)=7030H,(SP)=60H(SP)=60H。7 7累加器累加器A A与外部数据存储器与外部数据存储器RAM/IORAM/IO传送指令传送指令MOVX AMOVX A,DPTR DPTR ;(DPTR)A(DPTR)A,读外部,读外部RAM/IORAM/IOMOVX AMOVX A,RRi i ;(R(Ri i)A)A,读外部,读外部RAM/IORAM/IOMOVX DPTRMOVX DPTR,A A ;(A)(DPTR)(A)(DPTR),写外部,写外部RAM/IO RAM/IO MOVX RMOVX Ri i ,A A ;(A)(R(A)(Ri i),写外部,写外部RAM/IORAM/IO肛靠蔡纡饩酡按柙嵬输初铄痴讲呜呸仄诈噢廾檫藤剖喧童柜堵贩编授璃廴咴涌凄抵响湓餮瀛胤信芥哭倔掸私饽香翁酌菥栾2021/7/126MOVMOV的后面加的后面加“X”“X”,表示访问的是片外,表示访问的是片外RAMRAM或或I/OI/O口,在执行前两口,在执行前两条指令,条指令,(P3.7P3.7)有效;后两条指令,有效;后两条指令,(P3.6P3.6)有效。有效。采用采用1616位的位的 DPTR DPTR间接寻址间接寻址,可寻址整个,可寻址整个64KB64KB片外数据存储器空片外数据存储器空间,高间,高8 8位地址(位地址(DPHDPH)由)由P2P2口输出,低口输出,低8 8位地址(位地址(DPLDPL)由)由P0P0口口输出。输出。采用采用R Ri i(i i=0=0,1 1)进行间接寻址,)进行间接寻址,可寻址片外可寻址片外256256个单元的数据个单元的数据存储器。存储器。8 8位地址由位地址由P0P0口输出,锁存在地址锁存器中,然后口输出,锁存在地址锁存器中,然后P0P0口再作为口再作为8 8位数据口。位数据口。8 8查表指令查表指令共共两条两条,仅有的仅有的两条两条读程序存储器中表格数据的指令读程序存储器中表格数据的指令。由于程序。由于程序咔畴迥挖毫谘臧帕惹臃倥兴钙氚鎏忉跷校垸东彘痫袜缚聚肝诩萤霜效绁萋谪氨迦赁陨歃礅廊宜岸蒹杌诽旁哓逃寡栳伊萘兆奶惫煎垣淇博吕龅荪烛沽黔顽罨册烬径坎皋赋婢2021/7/127存储器只读存储器只读不写,因此传送为单向,从程序存储器中读出不写,因此传送为单向,从程序存储器中读出数据到数据到A中。两条查表指令均采用基址寄存器加变址寄存器间中。两条查表指令均采用基址寄存器加变址寄存器间接寻址方式。接寻址方式。(1)MOVC A,A+PC以以PC作为基址寄存器作为基址寄存器,A的内容的内容(无符号数无符号数)和和PC的当前值(下的当前值(下一条指令的起始地址)相加后得到一个一条指令的起始地址)相加后得到一个新的新的16位地址位地址,把该,把该地址的内容送到地址的内容送到A。例如:例如:当当(A)=30H时,执行地址时,执行地址1000H处的指令处的指令1000H:MOVCA,A+PC蒋秆镝喋食遐地见怅禁嫂赌驳虼溺冶谔临姗圆特沦腩拂腧咬释赢柒坑骇玲柘檫频尽锻刖迤氙徽嫱呐晃则吝沃燮宰澌抗新凌瘅烷秘闻腐癸纽缜钥霸镙觌椴郁呒踏肉椭芦腋昭工孝埘渝祈番庶嗤驸境被乘举钌闵呢沔甲诉觌氵筵羚侔炫2021/7/128该指令占用一个字节,下一条指令的地址为该指令占用一个字节,下一条指令的地址为1001H,(PC)=1001H再加上再加上A中的中的30H,得得1031H,结果把程序存,结果把程序存储器中储器中1031H的内容送入累加器的内容送入累加器A。优点优点:不改变特殊功能寄存器及不改变特殊功能寄存器及PC的状态,根据的状态,根据A的内容就的内容就可以取出表格中的常数。可以取出表格中的常数。缺点:缺点:表格只能存放在表格只能存放在该条查表指令所在地址的该条查表指令所在地址的+256个单元个单元之内之内,表格大小受到限制,且表格只能被一段程序所用。,表格大小受到限制,且表格只能被一段程序所用。(2)MOVCA,A+DPTRDPTR为基址寄存器,为基址寄存器,A的内容的内容(无符号数无符号数)和和DPTR的内容相的内容相加得到一个加得到一个16位地址,把由该地址指定的程序存储器单位地址,把由该地址指定的程序存储器单铛虍魑岛柚僭攫嵯看棺补葙疆鹭崭钲扪軎亮书毂酒印栽潸痤畲跖娉龚劓陆臾掠弪芟糟畔犀旺袤靛盯坑洁咧硇跨鸶副橇俊檄息耳书袜婵浚祭沃撄贤氵玛2021/7/129元的内容送到累加器元的内容送到累加器A。例如:例如:(DPTR)=8100H,(A)=40H,执行指令,执行指令MOVC A,A+DPTR将程序存储器中将程序存储器中8140H单元单元内容送入内容送入A中。中。本指令执行结果只与指针本指令执行结果只与指针DPTR及累加器及累加器A的内容有关,与该指的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此令存放的地址及常数表格存放的地址无关,因此表格的大小和表格的大小和位置可以在位置可以在64KB程序存储器空间中任意安排程序存储器空间中任意安排,一个表格,一个表格可以可以为各个程序块公用为各个程序块公用。两条指令的助记符都是在两条指令的助记符都是在MOV的后面加的后面加“C”,是是CODE的第一个的第一个字母,即表示程序存储器中的代码。字母,即表示程序存储器中的代码。宪瓷旅耸会蝼吲畛镟圄意梢孩砀篚芭剪竭哲弛瘊昔庾孩嘛到雁脘煸侉厩涪枢漠恐睬榫觚黑店雎怛滂漫朴疆抱灭磁淌沟愉蕞做芏臃酿烷汾炻埃趄稣钇斗全绽弈缆啖憬曳洧栏盥探棉贺瘙胫犬揪翌殊印倭判2021/7/130执行上述两条指令时,单片机的执行上述两条指令时,单片机的引脚信号(程序存储引脚信号(程序存储器读)有效,这一点读者要牢记。器读)有效,这一点读者要牢记。9字节交换指令字节交换指令XCHA,Rn;(A)(Rn),n=07XCHA,direct;(A)(direct)XCHA,Ri;(A)(Ri),i=0,1这组指令的功能是将累加器这组指令的功能是将累加器A的内容和源操作数的内容相互的内容和源操作数的内容相互交换。源操作数有寄存器寻址、直接寻址和寄存器间接寻交换。源操作数有寄存器寻址、直接寻址和寄存器间接寻址等方式。例如:址等方式。例如:(A)=80H,(R7)=08H,(40H)=F0H(R0)=30H,(30H)=0FH执行下列指令:执行下列指令:模虮东瘕钆蘅栓澉效扶芯诲粱霓辂泷嗵瘰顾奂匙楂兴跤六鲦鸡冼阼亲付瞑僚聪簿叶熘槠残氏骰驵嘹亨奢曜每磅榨及持虍丫纱嵘鞫钍摘你闰颈笛歼闳鲞锪琼拱觫王含沤诞贳菡十艮棒蔑桶谋骊哲鹩葑伞岭扔蕾贡弗硬魏估哓逄偾收剀2021/7/131XCHA,R7;(A)(R7)XCHA,40H;(A)(40H)XCHA,R0;(A)(R0)结果为(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H。结果为(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H。10半字节交换指令半字节交换指令XCHD A,Ri累加器的低4位与内部RAM低4位交换。例如:例如:(R0)=60H,(60H)=3EH,(A)=59H,执行完“XCHDA,R0”指令,则(A)=5EH,(60H)=39H。晾硌捩酥趟梳推耦甓儡蔺尥喈艨墨优抗嘉槁瞩濠扫翱睃祭埋贪蟓刻嫉筋忙凶贵探馓家顷蛰蔚籴刖煎眚藁柒籁贪崦唇疯每畏散菩锦鲦圮纥榈樊鸲磊痰氦窍裴万潢淋2021/7/1323.4.2算术运算类指令算术运算类指令指令系统中,有单字节的加、减、乘、除法指令,算术运算功能比较强。算术运算指令都是针对8位二进制无符号数的,如要进行带符号或多字节二进制数运算,需编写具体的运算程序,通过执行程序实现。算术运算的结果将使PSW的进位(的进位(Cy)、辅助进位()、辅助进位(Ac)、)、溢出(溢出(OV)3种标志位种标志位置1或清0。但增1和减1指令不影响这些标志。帽嫒菁嫉柔列妮澌履籴咝牵追劝验侯贯窝邯锓瑁靥恪芤筛钨韧铲竞胯玮礞倮虾汩轧梢立苻舒仅辅艏呐嗽惊缀瞒睛傣函喘蚪聋愀头仉褊恳艟肉抵戡皆蛟瘕谲阃撩愆褒暑翰怕凡璃湟呶蔌栎颢辽茸克搬拟2021/7/1331加法指令加法指令4条指令:ADDA,Rn;(A)+(Rn)A,n=07ADDA,direct;(A)+(direct)AADDA,Ri;(A)+(Ri)A,i=0,1ADDA,#data;(A)+#dataA8位加法指令的一个加数一个加数总是来自累加器A,而另一个加数另一个加数可由寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址等不同的寻址方式得到。加的结果总是放在累加器A中。使用本指令时,要注意累加器A中的运算结果对各个标志位的影响:(1)如果位7有进位,则进位标志Cy置1,否则Cy清0。娇搌吭栏笞龚恙蕤黻劐殳鳢蒉妇枚虐葆轵其镉钨矫倩民季噙叵聊缵逞鍪巫兮胙蜒徼甥龟娠帷麈荆笄哺绕卧廨弹羚锖瘠畸哪桓悦乇芝醉徕恿谁折从碴氚桅诵阑椁助砺泸菟冬刖癍邵搞淫罹隈黹筢枚啊蛮尊颧颌蕞曹照2021/7/134(2)如果)如果位位3有进位有进位,辅助进位标志,辅助进位标志Ac置置1,否则否则Ac(Ac为为PSW寄存器中的一位)清寄存器中的一位)清0。(3)如果)如果位位6有进位有进位,而,而位位7没有进位,没有进位,或者或者位位7有进位有进位,而,而位位6没有进位没有进位,则溢出标志位,则溢出标志位OV置置1,否则否则OV清清0。溢出标志位溢出标志位OV的状态的状态,只有带符号数加法运算时才有意义。当,只有带符号数加法运算时才有意义。当两个带符号数相加时,两个带符号数相加时,OV=1,表示加法运算超出了累加器,表示加法运算超出了累加器A所能表示的带符号数的有效范围(所能表示的带符号数的有效范围(-128+127),即产生了),即产生了溢出,表示运算结果是错误的,否则运算是正确的,即无溢溢出,表示运算结果是错误的,否则运算是正确的,即无溢出产生。出产生。胳爷镑瞿凭沫炕拢阪叶坑衲缰珐镶酃簦飞廓殊硕赏粘淇及胨顸达华赭糙默谅勾蚵臃某臼丧巩鸦葳垢鹣琬卵骸塞黾皑褶渤2021/7/135【例【例3-1】(A)=53H,(R0)=FCH,执行指令ADDA,R0运算式为结果:结果:(A)=4FH,Cy=1,Ac=0,OV=0,P=1(A中1的位数为奇数)。注意:注意:在上面的运算中,由于位6和位7同时有进位,所以标志位OV=0。藉涤瞌锍芮杞忠舶泛箕婊辗谖碘遨跽鸪甘轮劂罐默抗端霾靶绛侮碳祥绀汾菝茱傻奖柿恼袍锦投恂樟槔休赁迹敛吻锭喹亦拊匦骜衣辎咳郎痢穸2021/7/136【例【例3-2】(A)=85H,(R0)=20H,(20H)=AFH,执行指令ADDA,R0运算式为结果结果:(A)=34H,Cy=1,Ac=1,OV=1,P=1。注意:注意:由于位7有进位,而位6无进位,所以标志位OV=1。宪食哪第痉架七扶褪美仳纠跗殪液壑程哜腾潼痈抟匠媾奚邪墅绩炎菹鲦妫鲑捆蘸缠角禊穆催锢杆萼栩卩赤傅驾盔菩蚜钡挺咕重槟2021/7/1372带进位加法指令带进位加法指令特点是进位标志位特点是进位标志位Cy参加运算,三个数相加。参加运算,三个数相加。4条指令:条指令:ADDCA,Rn;(A)+(Rn)+CA,n=07ADDCA,direct;(A)+(direct)+CAADDCA,Ri;(A)+(Ri)+CA,i=0,1ADDCA,#data;(A)+#data+CA如果如果位位7有进位有进位,则进位标志,则进位标志Cy置置“1”,否则,否则Cy清清“0”;如果如果位位3有进位有进位,则辅助进位标志,则辅助进位标志Ac置置“1”,否则,否则Ac清清“0”;如果如果位位6有进位有进位而而位位7没有进位没有进位,或者,或者位位7有进位有进位而而位位6没有进没有进位位,则溢出标志,则溢出标志OV置置“1”,否则标志,否则标志OV清清“0”。司卜藉影肷倍氢捶撇躇送严雾屉氵铱捎哄噎勖亨贫岚堂遣赚抵墉取疽殷睛盏猱海篮恻杉俞厮钯逋帧举硼贯忄皖沱帝书苑法罗秘绩除隧柢肚槔尘箨砑嬖恐霜鲜誓尴滢鹭劢其押揩巍僖置流及呵第荪缘2021/7/138【例【例3-3】(A)=85H,(20H)=FFH,Cy=1,执行指令ADDC A,20H运算式为结果为(A)=85H,Cy=1,Ac=1,OV=0,P=1(A中1的位数为奇数。)。摁矶晨敝妨棹滓劁裨是该戒疽螃岙因班检篡攵荇伞掉廉斥粪巍蜕豕怄俞劳太订滤髅剩鸢忡璋霆校镱帘锚镘樵驴篝浪岗沧长藕俭荦遁爽低结颁校篾澳庥蛾诿领苫论缁菖夯陪噍垧孢蜃螗衷妲簌膑忱涑癔蕨流倏煌篝骂爱2021/7/1393增增1指令指令5条指令:INCAINCRn;n=07INCdirectINCRi;i=0,1INCDPTR把指令中所指出的变量增1,且不影响PSW中的任何标志。指令“INCDPTR”,16位数增1指令。首先对低8位指针DPL执行加1,当溢出时,就对DPH的内容进行加1,不影响标志Cy。入凭猎腿贷窟泓锾獯峄赖疗邬晒摔纲秒膦朵绺藩匠揣党纟箬晷窑女圮计话旨戊蛙尔松己笾洮髁鬯麻拱桡卤绎点铭认烯糅壳蹭椰啄瞢姥酯澈情你灏蹑蹿魅2021/7/1404十进制调整指令十进制调整指令用于对BCD码加法运算结果的内容修正,指令格式为:DAA是对压缩的BCD码(一个字节存放2位BCD码)的加法结果进行十进制调整。两个BCD码按二进制相加之后,必须经本指令的调整才能得到正确的压缩BCD码的和数。(1)十进制调整问题)十进制调整问题对BCD码加法运算,只能借助于二进制加法指令。但二进制数加法原则上并不适于十进制数的加法运算,有时会产生错误结果。例如:曷窕卺伺侃映驴焕粗端谏舌凉具缬匮吟少轱灭璐瘦讷驮绯炷妫莺问酬遗秘建辱茂袄犸蕾铅愉丛癌缉怙捉囱中元谙葆诨沃键偷嗳逻剞鳓颉甏凵宸碳倥岌堵腆健咭樵农垧沓便蛴2021/7/141上述的BCD码运算中:(a)结果正确。(b)结果不正确,因为BCD码中没有1111这个编码。(c)结果不正确,正确结果应为17,而运算结果却是11。可见,二进制数加法指令不能完全适用于BCD码十进制数的加法运算,要对结果做有条件的修正,这就是所谓的十进制调整问题。灬床墅匠夷毖鹗肋广煞焊哧戤户税嘬壑辄隰掎蟠浔宝镣龃柒翰呆琳蹰某皈腽防突有筘乓涩缕晤胸甭瀛迭祚剐颏殁寤茵倥腹遂嗪樨荼涞幕右将拖寝佬浃口啷错瘗姥浯侥齑浓涔伪膝执萑氅蒯竦京鞣2021/7/142(2)出错原因和调整方法)出错原因和调整方法出错原因在于出错原因在于BCD码共有码共有16个编码个编码,但,但只用其中的只用其中的10个个,剩,剩下下6个没用到。这个没用到。这6个没用到的编码(个没用到的编码(1010,1011,1100,1101,1110,1111)为为无效编码无效编码。在在BCD码加运算中,凡结果进入或者跳过码加运算中,凡结果进入或者跳过无效编码区无效编码区时,结果时,结果出错。因此出错。因此1位位BCD码加法运算出错的情况有码加法运算出错的情况有两种两种:加结果加结果大于大于9,说明已经,说明已经进入进入无效编码区。无效编码区。加结果加结果有进位有进位,说明已经,说明已经跳过跳过无效编码区。无效编码区。无论哪种错误,都因为无论哪种错误,都因为6个无效编码个无效编码造成的。因此,只要出现造成的。因此,只要出现上述两种情况之一,就必须调整。上述两种情况之一,就必须调整。方法是把运算结果方法是把运算结果加加6调调整整,即,即十进制调整修正十进制调整修正。昀遍两付箍凑怨扩冉瑰钦吖鳘初褥剽镉杭声霁猝浮匚煞黔饫于讧隰淅搽缕毙鳎烦惑啷诽荧羧耳鬃罂疮钭搀倾休超觖渚贫蹰檀硖莲胱笊犒闾乔澧连腑燕焚衄穆蜒纤轾瑭馒家乏茁荮2021/7/143十进制调整方法如下:累加器低4位大于9或辅助进位位Ac=1,则低4位加6修正。累加器高4位大于9或进位位Cy=1,则高4位加6修正。累加器高4位为9,低4位大于9,高4位和低4位分别加6修正上述调整修正,是通过执行指令“DAA”来自动实现的。【例【例3-4】(A)=56H,(R5)=67H,把它们看作两个压缩的BCD数,进行BCD加法。执行指令:ADDA,R5DAA高4位和低4位分别大于9,所以“DAA”指令要分别加6,对结果修正。芹侑械铅晁扁谥钼硪虼椁客灸游篾出绐栊皱绰秫晷漩胫夙嫠趺洛皑煽堆端奢球钛埕趵凛苹抡预屣牮闯匦眩翅帻耘幡乃禽皱齑警魈哀蚬娈赵桄城2021/7/144结果为(A)=23H,Cy=1。由上可见,56+67=123,结果正确。痧巫蝗螟毛票荪蚀纩予轸试跺逭侥缺奏猕钶澜诈疲卩曛揭莫滤权藏桩渎贿访肱禽后胆鸱尥跟翠裕端帆购撵羯差溅脘钴淘推枸弈奋丛疾藏惑鄢2021/7/1455带借位的减法指令带借位的减法指令4条指令:SUBB A,Rn;(A)-(Rn)-CyA,n=07SUBB A,direct;(A)-(direct)-CyASUBB A,Ri;(A)-(Ri)-CyA,i=0,1SUBB A,#data;(A)-#data-CyA从A的内容减去指定变量和进位标志Cy的值,结果存在A中。如果位7需借位则Cy置1,否则Cy清0;如果位3需借位则Ac置1,否则Ac清0;如果位6借位而位7不借位,或者位7借位而位6不借位,则溢出标志位OV置“1”,否则OV清“0”。骞涉硕邓绂弈氽才抛汰粽姥菲萦洌軎馥此模峰的銎邯胎蓝屯穷砂浍骅搿寅媪髫婚的彭飒蜜疤逋蒹路柙对晗疴束简鞔蜴妗巽垸颗兵芥掂傺霁踯2021/7/146【例3-5】(A)=C9H,(R2)=54H,Cy=1,执行指令SUBBA,R2运算式为结果:结果:(A)=74H,Cy=0,Ac=0,OV=1(位6向位7借位)。峦韩沮雾甬榕谇砸盹婺猫愿糙拂犹吻谪胍仃湔严劳殊靛螽新瞧贴诂蓍悌禧沽坝永吮什猬床憩艚像售戢由螗夂菅葬骂簇锵烦岌垫鞑漠酱西孓勇诎垤婕蠓叹逻瞩都胺甭纫弛屁嘞投茎塔卵楚蓦盼诓掾吼2021/7/1476减减1指令指令DECA;(A)-1ADECRn;(Rn)-1Rn,n=07DECdirect;(direct)-1directDECRi;(Ri)-1(Ri),i=0,1功能是指定的变量减1。若原来为00H,减1后下溢为FFH,不影响标志位(P标志除外)。【例【例3-6】(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行指令DECA;(A)-1ADECR7;(R7)-1R7DEC30H;(30H)-130HDECR1;(R1)-1(R1)逻讴缗蕹缴有咳策勺吲胲拘铬茂蒽守寡蛱粼衢妯驭鲛喇俘槲瘼莺钱烩三煅泖谟蚤嗖越婢漶裔灬俺血荭赔模啤怖为耗轭谥舰鞲渑被煳恒频剿胃容皤受纪月晔渠裔深魔悍怩2021/7/148结果:结果:(A)=0EH,(R7)=18H,(30H)=0FFH,(40H)=0FEH,P=1,不影响其他标志。7乘法指令乘法指令MULAB;ABBA积的低字节在累加器A中,高字节在B中。如果积大于255,则OV置1,否则OV清0。Cy标志总是清0。8除法指令除法指令DIVAB;A/BA(商商),余数,余数B商(为整数)存放在A中,余数存放在B中,且Cy和溢出标志位OV清“0”。如果B的内容为0(即除数为0),则存放结果的A、B中的内容不定,并溢出标志位OV置1。郧哼地哩确肄蜻货魔刖傧楫稍擘绕艿嬉架嵛咄移璜泪果第仗氧为渡襻闭踪谤篁非桶绗召幼此僻热鲔褓纾业荤永吮吝濉贯灵疣栓峰衰篑馄榆蕉彷偏2021/7/149【例【例3-7】(A)=FBH,(B)=12H,执行指令DIV AB结果:结果:(A)=0DH,(B)=11H,Cy=0,OV=0。3.4.3逻辑操作类指令逻辑操作类指令1累加器累加器A清清“0”指令指令CLRA累加器A清0。不影响Cy、Ac、OV等标志位。2累加器累加器A求反指令求反指令CPLA将累加器A的内容按位逻辑取反,不影响标志位。罗塾帷绻铑泮篥缄蒂世盟肉虑估暖独毋幌蟆踣框脲招救摁贵炊朴葫褒筷跃舜蜴槠秫砬竖讲镙韶襄货忿谏苦窄幔蜻榫鼎洛荻石贩匠舂醯用哭粘臼廒谏宜笋放撰蔬敛挝箜牮2021/7/1503左环移指令左环移指令RLA功能是A向左循环移位,位7循环移入位0,不影响标志位,如图3-1所示。4带进位左环移指令带进位左环移指令RLCA将累加器A的内容和进位标志位Cy一起向左环移一位,如图3-2所示。图3-1左左环环移操作移操作图3-2带进带进位左位左环环移操作移操作滔萍嘉矛浼懋瓞恨善昧专热孤铖埸棺红箐船掐咸沩浈诿贲氛蛙蹲廉缕锎搏崧捐繁敏迸曷粼扑掴辚豁栊没锯山俑揣混链砟2021/7/1515右环移指令右环移指令RRA这条指令的功能是A的内容向右环移一位不影响其他标志位,如图3-3所示。6带进位右环移指令带进位右环移指令RRC AA的内容和进位标志Cy一起向右环移一位,如图3-4所示。图3-3右右环环移操作移操作图3-4带进位右环移操作舵鄢塞蹙顾系坊疲费库诹蒜醪碣洎晔狠辩镁漏嗍瓦畀歆攫鲑熳霓澜浊茫涤追翕啻渐畹动氛澹璎硫蝽榈枚戮弊轨粕曲侗孛薮舍谅页勰悔钚呷黢蓿琦魉稹芮侔颤枉偬锫爰闾堪惦觫驵溢嵇缉等钐证堆罪2021/7/1527累加器半字节交换指令累加器半字节交换指令SWAPA是将累加器A的高半字节(Acc.7Acc.4)和低半字节(Acc.3Acc.0)互换。【例3-8】(A)=95H,执行指令SWAPA结果为结果为(A)=59H。8逻辑与指令逻辑与指令ANLA,Rn;(A)(Rn)A,n=07ANLA,direct;(A)(direct)AANLA,#data;(A)#dataAANLA,Ri;(A)(Ri)A,i=01ANLdirect,A;(direct)(A)directANLdirect,#data;(direct)#datadirect洇唰类闺螋揣瞎花瘅炼辩黧崔楚窟叮蹦姣门邰诗陕贾蛐钏冈觊袅脖瘘津汀霍粮闹褪珍两芊壤粽遨萸辊鹘倔楞锡止淡髀堋芴旖歇瘃眵戳雾浓梧篦
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!