《第3章80C5的指令系统》由会员分享,可在线阅读,更多相关《第3章80C5的指令系统(81页珍藏版)》请在金锄头文库上搜索。
1、第第3 3章章 80C51 80C51的指令系统的指令系统指令格式指令格式及及常用符号常用符号3.180C51的的寻址方式寻址方式3.2数据传送数据传送指令指令 (29条)条)3.3算数运算算数运算指令指令 (24条)条)3.4逻辑运算逻辑运算与与循环循环类指令(类指令(24条)条)3.5控制转移控制转移类指令类指令 (17条)条)3.6位操作位操作类指令类指令 (17条)条)3.7选动镜殷弦愚孝普处吱多枷簧裸澎桶氏信毒坠俐贬埠诗盒呜徘虐诉银萎近第3章80C5的指令系统第3章80C5的指令系统7/22/20241 一台计算机所能执行的全部的一台计算机所能执行的全部的指令集合指令集合指令系统概述
2、指令系统概述指令指令是计算机中具有特定功能的是计算机中具有特定功能的操作命令操作命令 程序与程序设计程序与程序设计按预定要求编排的按预定要求编排的指令序列指令序列称为称为程序程序。编排的过程称。编排的过程称为为程序设计程序设计 指令系统指令系统 设计一种设计一种CPU,一般从设计指令系统开始,一般从设计指令系统开始因而,一种机器的指令系统是机器本身固有的因而,一种机器的指令系统是机器本身固有的决定了机器的性能决定了机器的性能用户无法改变,必须继承、学习、掌握、应用用户无法改变,必须继承、学习、掌握、应用汹树诣列役须恐凄隙臼佐若贵哮刘亥缨琐懂凄淆揩迷傲尾陆埃掺祖她窒产第3章80C5的指令系统第3
3、章80C5的指令系统7/22/20242机器语言机器语言:二进制代码,是机器唯一能直接识别、执行的语言。二进制代码,是机器唯一能直接识别、执行的语言。汇编语言:汇编语言:为了记忆和阅读方便,制造商对指令系为了记忆和阅读方便,制造商对指令系统每一条指令,都给出了指令助记符。统每一条指令,都给出了指令助记符。用用助记符助记符,操作数操作数,标号标号编写的程序称编写的程序称为为汇编语言源程序汇编语言源程序。一、汇编语言一、汇编语言汇编语言必须翻译成机器语言才能被机器执行汇编语言必须翻译成机器语言才能被机器执行 程序设计语言程序设计语言汇编语言:汇编语言: 高级语言:高级语言:符号语言:符号语言:上页
4、上页下页下页回目录回目录如如P55,图,图3-1所示。全是机器码所示。全是机器码捐钥肄棉梳绳叛类宜豆六别组云林探帐弯赦毛遂煽咖酵尽笛诫娜艇鸡酮釜第3章80C5的指令系统第3章80C5的指令系统7/22/20243完成由汇编语言到机器代码的过程叫汇编完成由汇编语言到机器代码的过程叫汇编汇编的方法有两种:自动汇编、手工汇编汇编的方法有两种:自动汇编、手工汇编由机器代码到汇编语言的过程叫反汇编由机器代码到汇编语言的过程叫反汇编汇编语言汇编语言源程序源程序机器语言机器语言 汇编汇编 反汇编反汇编交叉交叉汇编汇编至勃吾悲枝禽笺馒率笔链汁站子救孔怯兢案提贮藕格储绕腔抽疏绝短宋显第3章80C5的指令系统第3
5、章80C5的指令系统7/22/202443.1 指令格式及常用符号指令格式及常用符号3.1.1 3.1.1 机器指令的字节编码形式机器指令的字节编码形式 8 8位编码仅为操作码位编码仅为操作码 单字节指令(单字节指令(4949条)条)机器指令机器指令:计算机能直接识别和执行的指令。:计算机能直接识别和执行的指令。 位号位号7 6 5 4 3 2 1 0字节字节opcode如:如:INC A INC A 编码为:编码为:0 0 0 0 0 1 0 0即:即:04H04H 8 8位编码含操作码和寄存器编码位编码含操作码和寄存器编码位号位号7 6 5 4 3 2 1 0 字节字节opcoder r
6、r如:如:MOV AMOV A,R0 R0 编码为编码为:1 1 1 0 1 0 0 0即:即:E8HE8H操作数仅有操作数仅有A,AB,Rn,DPTR,C秒嚣氓诸尉刨抗衅梦哉孝墅迂克渐靡恋迂刨棠拾皋靠铝酶翼根仗碉蝉尚勉第3章80C5的指令系统第3章80C5的指令系统7/22/20245 双字节指令(双字节指令(4545条)条)位号位号7 6 5 4 3 2 1 0字节字节opcodedata或或direct 三字节指令(三字节指令(1717条)条)位号位号7 6 5 4 3 2 1 0字节字节opcodedata或或directdata或或direct如:如:MOV AMOV A,#50H
7、#50H 编码为编码为:0 1 1 1 0 1 0 00 1 0 1 0 0 0 0即:即:74H74H 50H 50H如:如:MOV 20HMOV 20H,#50H #50H 编码为编码为:0 1 1 1 0 1 0 10 1 0 0 0 0 0 00 1 0 1 0 0 0 0即:即:75H75H 20H 20H 50H 50H仅含有一个仅含有一个data8,direct,rel,address11襄准副宽斥瞬绍立瘟沥碑裙州诵沥墓师永涣冤贷酿吐魔桂肚探蛰翠菊敏兢第3章80C5的指令系统第3章80C5的指令系统7/22/20246 书写格式书写格式注意:注意:操作助记符不能缺少操作助记符不能
8、缺少操作数个数可为:操作数个数可为:1 1、2 2、3 3个个2 2个操作数的指令,目的操作数在左边个操作数的指令,目的操作数在左边标号表示符号地址标号表示符号地址一般格式一般格式 标号标号 :操作助记符:操作助记符 目的操作数目的操作数,源操作数,源操作数;注释;注释 3.1.2 3.1.2 符号指令的书写格式符号指令的书写格式度抛酮躺亮乍砷馁篡贺营帕锤钢桌榷峭司轩江村琢框袄风硫汝锭也孪盈璃第3章80C5的指令系统第3章80C5的指令系统7/22/2024775H81HROMROM60H MAIN:MOV SP,#60H;设置堆栈指针0030H0031H0032H0033H02H00H30H
9、0000HLJMP MAINORG 0030HORG 0000H漱碴缴缘土锰抒渊更贮血念邑失掣姿服嵌欣时旅佩淮尺报轰撵讨枚早务迪第3章80C5的指令系统第3章80C5的指令系统7/22/20248 描述符号描述符号RnRn(n=0n=07 7)- -当前工作寄存器组中的寄存器当前工作寄存器组中的寄存器R0R0R7R7之一之一RiRi(i=0,1i=0,1)- -当前工作寄存器组中的寄存器当前工作寄存器组中的寄存器R0R0或或R1R1 - -间址寄存器前缀间址寄存器前缀#data -8#data -8位立即数位立即数/ /#data16-16#data16-16位立即数位立即数direct-di
10、rect-片内低片内低128128个个RAMRAM单元地址及单元地址及SFRSFR地址地址addr11-11addr11-11位目的地址位目的地址addr16-16addr16-16位目的地址位目的地址rel-8rel-8位地址偏移量,范围:位地址偏移量,范围:128128127127bit-bit-片内片内RAMRAM位地址、位地址、SFRSFR的位地址的位地址()-表示表示 地址单元或寄存器中的内容地址单元或寄存器中的内容/ -/ -位操作数的取反操作前缀位操作数的取反操作前缀外冒炒喜划炉床指刽痉藻软稼凛嘛狐祸揉筐过追俏肌这傅湖铣丁赤椅萎趟第3章80C5的指令系统第3章80C5的指令系统7
11、/22/20249我的信在他我的信在他我的信在他我的信在他那那那那! !找信找信找信找信去去去去! !注:找信是寻找信的“地址”!你能说出第你能说出第你能说出第你能说出第二封信的二封信的二封信的二封信的“ “地址地址地址地址” ”吗?吗?吗?吗?峻亨瘁候茧耐崎胚摸薄坠峙唬妥厉累攻窘丈屏衅冷挤颁烁洪鞋抹濒咯这聊第3章80C5的指令系统第3章80C5的指令系统7/22/202410用何种方式寻找指令的用何种方式寻找指令的操作数操作数或指令的或指令的执行地址执行地址1 1、立即寻址、立即寻址寻址空间:寻址空间:指令形式:指令形式:操作码操作码立即数立即数v程序存储器程序存储器v指令的操作数存放在程序
12、存储器中指令的操作数存放在程序存储器中v操作数紧跟操作码后面操作数紧跟操作码后面立即寻址:立即寻址:在在 哪哪 里里 ? ?用何种方式寻找用何种方式寻找OP#dataImmediate Addressing上页上页下页下页回目录回目录指令的寻址方式:指令的寻址方式:指令的寻址方式:指令的寻址方式:80C51的的寻址方式寻址方式3.2眶寡慷抬零坟腋偿阿颖受蝎偶亥碧楷证饺滋继挪极睁戈狭缠泻嚏铂转粥饼第3章80C5的指令系统第3章80C5的指令系统7/22/202411MOV A,# 30H;A #30H 例例1 1:操作码操作码立即数立即数PCPCPC74H30HROMROM A30HMOV DP
13、TR,# 8000H;DPTR #8000H 例例2 2:操作码操作码PCPCPC立即数的高立即数的高8 8位位立即数的低立即数的低8 8位位DPHDPHDPLDPLPC80H80H00H00H90H80HROMROM00H 上页上页下页下页回目录回目录姬深赃庇倘赏笺粉蚕衡刻坚甲津拇鸟独向黄噎挥古确撩至碧览丘晰睦急跋第3章80C5的指令系统第3章80C5的指令系统7/22/2024122 2、直接寻址、直接寻址寻址空间:寻址空间:指令的三种形式:指令的三种形式:操作码操作码操作数地址操作数地址v在指令中直接给出操作数的在指令中直接给出操作数的真实地址真实地址v操作码后面操作码后面紧跟一个实际紧
14、跟一个实际操作数地址操作数地址操作码操作码操作数地址操作数地址立即数立即数操作码操作码源操作数地址源操作数地址目的操作数地址目的操作数地址内内RAM的低的低128字节字节特殊功能寄存器特殊功能寄存器SFR区区直接寻址直接寻址直接寻址是访问直接寻址是访问 SFR 的唯一方法的唯一方法Direct Addressing上页上页下页下页回目录回目录00H7FH80HFFHCPU内部内部直接直接间接间接躁键跃距涩莉锅波迭园钉令晰纯右蝎逆嘛蕴螺琢鸭珍阮尤妨厚剪叫跟罚汐第3章80C5的指令系统第3章80C5的指令系统7/22/202413“与与”上页上页下页下页回目录回目录MOV A, 30H;A (30
15、H) 例例1 1:操作码操作码操作数地址操作数地址PCPCPC74H30HROMROM A内内RAMRAM 30H ANL 30H,#30H;30H (30H) #30H 例例2 2:操作码操作码PCPCPC直接地址直接地址立即数立即数PC53H30HROMROM 30H 内内RAMRAM 30H ALU“结果结果”另另一一类类直直接接寻寻址址是是转转移移目目标标地地址址的的寻寻址。如:址。如:LJMP ADDR16LJMP ADDR16技拘露夺幕鹅府婴交镣酵肄雷萌剐咙卿宗精具盒腰搜顺炔洒墙物菱丑玩立第3章80C5的指令系统第3章80C5的指令系统7/22/2024143 3、寄存器寻址、寄存
16、器寻址寻址空间:寻址空间:指令的三种形式:指令的三种形式:操作码操作码当前选定的当前选定的寄存器内容寄存器内容就是实际操作数就是实际操作数操作码操作码立即数立即数操作码操作码直接地址直接地址R0R7,由,由RS0、RS1确定确定寄存器区寄存器区/4A A、B(ABB(AB形式)和形式)和DPTRDPTRMOV A,R3;A (R3) 例例1 1:ADD A,R3;A (A)+(R3)例例2 2:寄存器寻址:寄存器寻址:Register Addressing操作数操作数隐含隐含操作数显然操作数显然隐含寻址隐含寻址上页上页下页下页回目录回目录殉肝陡识躁割审瞩约啸右炕寨膏蔽昭岔迪怀泵呐阻代吩筒兹掌淳
17、轩拧炳甘第3章80C5的指令系统第3章80C5的指令系统7/22/2024154 4、寄存器间接寻址、寄存器间接寻址寻址空间:寻址空间:指令的三种形式:指令的三种形式:操作码操作码操作码操作码立即数立即数操作码操作码直接地址直接地址内部内部 RAM(R0, R1, SP)外部外部 RAM(R0, R1,DPTR)寄存器间接寻址:寄存器间接寻址:指令选定的指令选定的寄存器内容寄存器内容就是实际就是实际的的操作数地址操作数地址Register Indirect Addressing上页上页下页下页回目录回目录裔物臀茹股畔抛贰诌震孟沁祟寺圣窖吩秩仿懈坪沸役隙斡蹦猜彰椽调泄背第3章80C5的指令系统第
18、3章80C5的指令系统7/22/202416MOV R0,A例例1 1:操作码操作码PCPCF6HROMROMR0R030H;累加器传送指令;累加器传送指令内内RAMRAM 30HA MOVX A,DPTR例例2 2:操作码操作码PCPCE0HROMROMDPTRDPTR 2000H外外RAMRAM 2000HA “读读”RD“读读”上页上页下页下页回目录回目录矗箭设匈意憾花效笔黔胞骂蓉绩隔辆哈里检恰淌牧充玻花勇树樊葡骏羚奎第3章80C5的指令系统第3章80C5的指令系统7/22/2024175 5、变址寻址、变址寻址基址寄存器加变址寄存器间接寻址:基址寄存器加变址寄存器间接寻址: 以以DPT
19、R或或PC作作基址寄存器基址寄存器,A作作变址寄存器变址寄存器两者相加形成两者相加形成操作数地址操作数地址。寻址空间:寻址空间:程序存储器(程序存储器(A+DPTR、A+PC)指令形式:指令形式:操作码操作码上页上页下页下页回目录回目录蝴准庶畏沿勒莲汪幕袭皑删瞎喉勒汽苍抄惕究架抹妮淌蜗虐址直坚娜所屑第3章80C5的指令系统第3章80C5的指令系统7/22/202418MOVC A,A+DPTR例:例:操作码操作码PCPCDPTRDPTR2400HA 0FH93HROMROM 240FH240FH设(设(A)= 0FH (DPTR)= 2400H ALU“读读”PSEN“读读”MOVC A,A+
20、DPTR上页上页下页下页回目录回目录彼聂百剁仗忻浦携棚缠迸绊趋肖葫饶械饱殿蜡介剐镭如衣因郁狠玲华犀凝第3章80C5的指令系统第3章80C5的指令系统7/22/2024196 6、相对寻址、相对寻址程序存储器程序存储器寻址空间:寻址空间:指令的三种形式:指令的三种形式:操作码操作码 rel rel操作码操作码 直接地址直接地址 rel rel操作码操作码 立即数立即数 rel rel相对寻址相对寻址以以当前当前PC值值为基准地址,加上指令的偏为基准地址,加上指令的偏移量移量“rel”,结果为目标地址。,结果为目标地址。rel为有符为有符号补码数,范围:号补码数,范围:-128+127一般为双字节
21、或三字节指令一般为双字节或三字节指令Relative Addressing上页上页下页下页回目录回目录寻址指令寻址指令执行地址执行地址目标地址目标地址阉坡蔫板丽裙断傀姬鄂茬螟智仁木敬焊庶备斧疆慢弧铭唤箱召渊舟阔蹲俯第3章80C5的指令系统第3章80C5的指令系统7/22/202420JNZ rel例:例:; 累加器累加器A不等零则转移不等零则转移 设设:rel=23H2025H2002H2001H2000H ROM70H70H23H23H下一条指令下一条指令. . . . . . . .操作码操作码PCPCPC(PC)=2002Hrel=23H修正后转移修正后转移目标地址目标地址D(PC) =
22、 2025HPCALU偏移量偏移量上页上页下页下页回目录回目录(PC) = 2 0 0 2 HRel = 2 3 H)005202HD =牌尊腥支薛气恍声暂档泡哼截叭勋砧彰留柏刁戒音饼纤痔费笼契悼品烙瑰第3章80C5的指令系统第3章80C5的指令系统7/22/2024212025H2112H2111H2110H ROMDFHDFHF2HF2H下一条指令下一条指令. . . . . . . .操作码操作码PCPCPC(PC)=2112Hrel=F2H修正后转移修正后转移目标地址目标地址 D(PC) = 2104HALU偏移量偏移量上页上页下页下页回目录回目录例:例:DJNZ R7,rel ;(;
23、(R7) 1不为不为“0”则转则转PC2104H指指 令令(PC) = 2 1 1 2 HRel = F 2 H)FF4012HD =挫左茶岳暮异文嚷险聊陨晋杏吴滨马铆胃最康篷鞍磋佃坛琉仇朽陇匆暗稼第3章80C5的指令系统第3章80C5的指令系统7/22/2024227 7、位寻址、位寻址寻址空间:寻址空间: 片内片内RAM的的20H2FH字节地址字节地址位地址:位地址:00H7FH 共共128位位SFR中中12个能被个能被8整除的字节地址整除的字节地址位地址请参看位地址请参看P43 表表2-16 共共93位位Bit Addressing 以访问触发器的方式,对内部以访问触发器的方式,对内部R
24、AM、SFR的的位地址空间位地址空间进行访问,称为位寻址。位地址进行访问,称为位寻址。位地址用于布尔指令。用于布尔指令。共共221位位上页上页下页下页回目录回目录位寻址方式实质属于位寻址方式实质属于位的直接寻址位的直接寻址。 夕架让绝抖学涟靴俐钻论洼僵销悟缚婆茎料独蜒笋版菇阀储雇侗竭夹侨方第3章80C5的指令系统第3章80C5的指令系统7/22/202423【例】位地址【例】位地址00H00H内容为内容为1 1,MOV CMOV C,00H00H执行后,位地址执行后,位地址PSW.7PSW.7的内容为的内容为1 1。毖磨须洒堰柞阵韶盐吾尾厂共涕忿颓侥形赋们虏分玫顾变诗氏硼朗汹诧筒第3章80C5
25、的指令系统第3章80C5的指令系统7/22/202424寻址方式与相应的寻址空间寻址方式与相应的寻址空间小结:小结:寄存器寄存器R0R7,A,BCY,DPTR片内片内内内RAM的低的低128字节字节特殊功能寄存器特殊功能寄存器SFR直接寻址直接寻址direct寄存器间址寄存器间址R0, R1, SP R0, R1 ,DPTR片内片内RAM、片外片外RAM与与I/O口口立即数立即数#data 程序存储器程序存储器程序存储器程序存储器 变址变址A+DPTR,A+PC程序存储器程序存储器相对寻址相对寻址PC+rel位寻址位寻址片内片内RAM 20H2FH部分部分SFRbit利用的变量利用的变量 使用
26、的空间使用的空间方方 式式宰戎帛巨卓钢仔洽趾屯棕宛妖碴倔桔隆甚冗荔尽稻狐阳翼孰彻芳验艇匙猾第3章80C5的指令系统第3章80C5的指令系统7/22/202425一般不影响标志寄存器一般不影响标志寄存器PSWPSW的状态。的状态。 传送类指令有两大类传送类指令有两大类 一般传送(一般传送( MOV MOV ) 特殊传送,如:特殊传送,如: MOVC MOVC MOVX MOVX PUSH PUSH、POPPOP XCH XCH、XCHDXCHD SWAP SWAP 数据传送数据传送指令指令 (29条)条)3.3酉掖萍移赡哼董木淑拦枪珐乌倾足革努琼垫调今狡瘴饮队眩趟臆奸六摊栗第3章80C5的指令系
27、统第3章80C5的指令系统7/22/2024263.3.1 3.3.1 一般传送指令一般传送指令1 1、1616位传送(仅位传送(仅1 1条)条)MOV DPTR,#data16; DPTR data16例:执行指令例:执行指令 MOV DPTR MOV DPTR,#1234H #1234H 后后 (DPHDPH)=12H=12H,(,(DPLDPL)=34H=34H。三字节指令三字节指令 12H 34H 90H 机器码机器码度搐赔恩刃藻躁痘污潘猿穿蝴媚疾覆了寡卷廖决赖女桃券法塞蛀迹献冯壬第3章80C5的指令系统第3章80C5的指令系统7/22/2024273.3.1 3.3.1 一般传送指令
28、一般传送指令2 2、8 8位传送位传送通用格式:通用格式: MOV MOV , ; 功能:把源字节内容送目的字节,源字节内容不变功能:把源字节内容送目的字节,源字节内容不变目的地址目的地址目的地址目的地址 源地址源地址源地址源地址数数数数 据据据据MOV A,#20H20H20HA A20H20H,A ARnRndirect1direct1RiRiA ARnRndirect2direct2RiRi#data#dataA ARnRndirect2direct2RiRi#data#dataMOVRnRnA A#data#datadirect2direct2direct1direct1A ARnRn
29、direct2direct2RiRi#data#dataRiRiA Adirect2direct2#data#data (1) (1)源操作数和目的操作数不相同(源操作数和目的操作数不相同(directdirect除外)除外) (2)Rn (2)Rn、RiRi之间不可相互传送。之间不可相互传送。 (3) (3)立即数不可以做目的操作数立即数不可以做目的操作数百逮逾兰殷逮蒙岂当照赣挪辛诧绽祥挞歼茵隘烂沾冻锨敷睁叔犹缠酚勺居第3章80C5的指令系统第3章80C5的指令系统7/22/202428MOV direct,directMOV direct,directMOV R0,R7MOV R0,R7M
30、OV A,R7MOV A,R7MOV R0,AMOV R0,AMOV 00H,07HMOV 00H,07HMOV R0,07HMOV R0,07H MOV 00H,R7MOV 00H,R7 MOV SP,R0MOV SP,R0MOV 81H,00HMOV 81H,00H2B2T2B2T3B2T3B2T2B2T2B2T2B2T2B2T沉何傣缀堕娥壤壁胚丧矿待答萨侍蓬捌挫跃患愚腕匹义诱作战荡够竞户茹第3章80C5的指令系统第3章80C5的指令系统7/22/2024293.3.2 3.3.2 特殊传送指令特殊传送指令 以以DPTRDPTR内容为基址内容为基址读读ROMROM中常数表项指令中常数表项指
31、令MOVC(MOVC(查表指令查表指令) )ROMROM中可以存放程序中可以存放程序代码代码,还经常存放,还经常存放常数表常数表 MOVC AMOVC A,A+DPTRA+DPTR;A A (A A)+ +(DPTRDPTR) 以以PCPC内容为基址内容为基址MOVC AMOVC A,A+PC A+PC ;A A (A A)+ +(PCPC)常数表存放约束小,称为常数表存放约束小,称为远远程查表指令。程查表指令。占用占用DPTRDPTR 常数表存放约束大,称为常数表存放约束大,称为近近程查表指令。程查表指令。不占用不占用DPTRDPTR 93H机器码机器码1B2T1B2T83H机器码机器码1B
32、2T1B2T讳惶泡赠乏尝霄偏果萎碍莆煤咐别蛔积疹腋坐狗诱愈放锣蕉蓖蜡惦赘霖粤第3章80C5的指令系统第3章80C5的指令系统7/22/202430MOV DPTRMOV DPTR,#TAB#TAB MOVC AMOVC A,A+DPTRA+DPTR2004H2003H2002H2001H2000H2008H2009H2005H2006H2007H存储器存储器00H00H01H01H04H04H09H09H10H10H19H19H24H24H31H31H40H40H51H51HTAB:TAB:例:在外部例:在外部ROMROM中存放中存放0 09 9的平方值。的平方值。根据累加器根据累加器A A中
33、的数(中的数( 0 09 9 ),查找对应的平方值。),查找对应的平方值。TAB: DB 0, 1, 4, 9, 16TAB: DB 0, 1, 4, 9, 16 DB 25,36,49,64,81 DB 25,36,49,64,81估训付硕玖舵捣括罪鲍抡鱼忽禽症钻保煞篙倪诣秦灯猖一磺毙贯连纸搔郝第3章80C5的指令系统第3章80C5的指令系统7/22/202431操作码操作码PCPCDPTRDPTR2000HA A 03H 09H MOV DPTR,#TABMOVC A,A+DPTR 93H 93HROMROM00H00H2000H2000H01H01H04H04H09H09H2001H20
34、01H2002H2002H2003H2003H;设(;设(A)= 03H,查,查“3”的平方的平方ALU玖太缺伊久逛纸岂邑吾套嫌销熄舜绊枚闺贴库历鞭貉坍偏力蛔砷瓢驾筷拾第3章80C5的指令系统第3章80C5的指令系统7/22/202432用用PC作基址寄存器,它并不指向表格首址作基址寄存器,它并不指向表格首址;是;是PC当前值与所查表格首址之间的距离当前值与所查表格首址之间的距离;即(;即(PC)+ #data TAB表格首址表格首址设(设(A)= 03H,是表格中的第,是表格中的第3项项;单字节指令,设指令在;单字节指令,设指令在ROM中的地址为中的地址为1FF0HADD A,#dataMO
35、VC A,A+PC2000H2000H1FF1H1FF1H- -000FH000FH;#data是变址调整值是变址调整值#dataPC当前值当前值表格首址表格首址TABBEL:DB 00HDB 01HDB 04HDB 09H2000H2000H12HAPCPC2003H2003HTAB:救告碴饿阀婚怒夯罐淖晰碰撬挂涉价惑拣稽碴衷业简谷预冷酣科泳帝袍凰第3章80C5的指令系统第3章80C5的指令系统7/22/202433PCPC操作码操作码MOVC A,A+PC 93H 93HROMROM00H00H2000H2000H01H01H04H04H09H09H2001H2001H2002H2002H
36、2003H2003H1FF0H1FF0H1FF1H1FF1H(PC)=1FF1H(PC)=1FF1HA12H09H ;查;查“3 3”的平方的平方ALUTAB:A03H+0FH娃绵亚赘晴鹊尘儒鬼韶劫敬悯铸阉估呵罗空窍伯笛卤甲倘夸邹串缓辐隆廉第3章80C5的指令系统第3章80C5的指令系统7/22/202434 读读片外片外RAMRAM读片外读片外RAMRAM及接口单元数据的指令及接口单元数据的指令MOVXMOVX片外片外RAMRAM中经常存放数据采集与处理的中间数据中经常存放数据采集与处理的中间数据 MOVX AMOVX A,DPTR DPTR ;A A (DPTRDPTR)MOVX AMOV
37、X A,Ri Ri ;A A (RiRi) 写写片外片外RAMRAMMOVX DPTRMOVX DPTR,A A ;(;(DPTRDPTR)AAMOVX RiMOVX Ri,A A ;(;(RiRi)AA注意:用注意:用RiRi寻址时,寻址时,高高8 8位地址位地址由由P2P2口提供口提供 E0HRD1B2TE2HE3H1B2TF0H1B2TF2HF3H1B2TWR幕轴漾洁弓懦灭徒悄呵惭阶焕精巨宝听安观丸充民而仕捧涧停楚漳佬榷贾第3章80C5的指令系统第3章80C5的指令系统7/22/202435【例】【例】 0BF02H: MOV DPTR,#0BFF8H 0BF02H: MOV DPTR,
38、#0BFF8H 0BF05H: MOVX A,DPTR 0BF05H: MOVX A,DPTR 0BF06H: INC DPTR0BF06H: INC DPTR0BF07H: MOVX DPTR,A0BF07H: MOVX DPTR,A惩孟颜颤尚嚼拔缆术铺见坚英桂付娥厉吾帘赛新炼髓炙芝雁署涵鹅穷级稳第3章80C5的指令系统第3章80C5的指令系统7/22/202436轿元湾晕毁甥农篆彪颖克分售泡请寿恰哟羊投绰力富千兴弦截濒涣联坊酝第3章80C5的指令系统第3章80C5的指令系统7/22/202437栅疽冯急厕保碍灸碧循碍孩帧晕鳞别满窗鸳尧囤箩泞野爪插灵马下瞥禹蜕第3章80C5的指令系统第3章8
39、0C5的指令系统7/22/202438 入入栈指令栈指令PUSHPUSH堆栈操作指令堆栈操作指令PUSHPUSH和和POPPOP堆栈堆栈是一片存储区,遵循是一片存储区,遵循“后进先出后进先出”原则,栈顶由原则,栈顶由SPSP指示。指示。80C5180C51的堆栈的堆栈设在设在片内片内RAMRAM低端的低端的128128个单元,向个单元,向上上生长。生长。 PUSH direct PUSH direct ;SPSP(SPSP)1 1,(,(SPSP)(directdirect) 出出栈指令栈指令POPPOPPOP direct POP direct ;(;(directdirect)(SPSP)
40、,),SP SP (SPSP)1 1 注:堆栈用于子程序调用时注:堆栈用于子程序调用时保护返回地址保护返回地址,或者用于保护,或者用于保护子程序调子程序调用之前的某些重要数据用之前的某些重要数据(即保护现场),还可以用于(即保护现场),还可以用于数据交换数据交换。 只载渤扩侯壶斤警逢疆袱辈憋追糕嗡膘人恕沁戳脊黑强排疵诬调哄频赴诱第3章80C5的指令系统第3章80C5的指令系统7/22/202439利用堆栈完成40H与50H单元内容的交换的示例 MOV SP,#6FH;将堆栈设在70H以上RAM空间PUSH 40H ;将40H单元的“23H”入栈,之后(SP)=70H PUSH 50H ;将50
41、H单元的“45H”入栈,之后(SP)=71HPOP 40H ;将SP指向的71H单元的内容弹到40H单元,之后(SP)=70HPOP 50H ;将SP指向的70H单元的内容弹到50H单元,之后(SP)=6FH(a)初始状态 (b)2条PUSH指令执行后 (c)2条POP指令执行后闲天租哈株澡耿纫愁衣磨蓬脐失轰戚皆夏鼓梨晾汗七原诽焚驼彦拄勾脖透第3章80C5的指令系统第3章80C5的指令系统7/22/202440SPSP例:堆栈操作例:堆栈操作 设(设(40H)= 23H,(,(50)= 45H建立堆栈建立堆栈压入操作压入操作弹出操作弹出操作 6FH70H71H72H73H 23H 45HSPM
42、OV SP, #6FHPUSH 40HPUSH 50HPOP 50HSP 结果:结果:50H的内容的内容45H,SP的内容为的内容为70H45H却僻俺蔓穷着首蔓电妹凭泪媒恐泥道遥怖岭惦全第夕党迂箔寄咏萧卿絮瘤第3章80C5的指令系统第3章80C5的指令系统7/22/202441 字节字节交换指令交换指令XCHXCH数据交换指令数据交换指令XCHXCH、XCHDXCHD和和SWAPSWAP【例例3-203-20】若(】若(R0)=80H,(A)=20H。 执行指令 XCH A,R0 后,(A)=80H,(R0)=20H。 差杂铬卤粪榜惕杖恨填桥似抒符撩满麻飞踏篡狰锭燃赶协衷力粥敌有滔惋第3章80
43、C5的指令系统第3章80C5的指令系统7/22/202442 半字节半字节交换指令交换指令XCHDXCHD【例】若(例】若(R0R0)30H30H,(,(30H30H)67H67H, (A A)20H20H。执行指令。执行指令 XCHD A XCHD A,R0 R0 指令后,(指令后,(A A)27H27H,(,(30H30H)60H60H。 【例例3 3】若(】若(A A)30H30H,执行指令,执行指令SWAP ASWAP A后,(后,(A A)03H 03H 。 A(Ri)AXCHDXCHD是间址操作数的低半字节与是间址操作数的低半字节与A A的低半字节互换。的低半字节互换。SWAPSW
44、AP是累加器的高低是累加器的高低4 4位互换位互换经常用于非压缩经常用于非压缩经常用于非压缩经常用于非压缩BCDBCD码的使用码的使用码的使用码的使用甫窥葡痰弄舆港夏勉毒栗那醒汲顿陨防颜怨战伶傲都滦托剥饺量琵单沸铲第3章80C5的指令系统第3章80C5的指令系统7/22/202443v1、当、当(01H)=00H,将将78H入入R0中,中,PSW中中RS1RS0 =00,有几种方法?分别是什么?,有几种方法?分别是什么?vMOV R0,#78HvMOV R1,#78HvMOV 00H,#78Hv2、将内部、将内部RAM中中30H和和31H的低半字节组成的低半字节组成一个字节放入片内一个字节放入
45、片内RAM中中32H中。中。v3、片外、片外RAM中中0060H内容片内内容片内RAM31H内容内容低低4位互换后送回到片外位互换后送回到片外0061H中。中。 v思考:思考:溯跑漠睦茹问峨由冻锁取毕佃耪干走识辕男随蹭馁仁怠桩期秆烩去苗塞当第3章80C5的指令系统第3章80C5的指令系统7/22/202444算数算数运算结果运算结果要要影响影响PSWPSW中标志位中标志位 CYCY为为1 1,无符号数无符号数(字节)加减发生(字节)加减发生进位进位或或借位借位 OV OV为为1 1,有符号数有符号数(字节)加减发生(字节)加减发生溢出溢出错误错误 ACAC为为1 1,十进制数十进制数(BCDB
46、CD码)加法的结果应码)加法的结果应调整调整 P P为为1 1,存于累加器,存于累加器A A中操作结果的中操作结果的“1 1”的个数的个数为为奇数奇数 标志位意义标志位意义标志位与相关指令影响标志位与相关指令影响 指令指令标志标志ADD、ADDC、SUBBDAMULDIV CYCY0 00 0ACACOVOVP P算数运算算数运算指令指令 (24条)条)3.4构菱苟讳垃圆虾乎矣禹霹澡苔懒荡使取奔复扎端汾奢这闪揭击袒距装喧谴第3章80C5的指令系统第3章80C5的指令系统7/22/202445算数运算影响标志位示例算数运算影响标志位示例【例【例3-233-23】有】有2 2个参与相加的机器数,一
47、个是个参与相加的机器数,一个是84H84H,另一个是,另一个是8DH8DH。试分析运算过程及其对状态标志的影响。试分析运算过程及其对状态标志的影响。结果结果:CYCY为为1 1;ACAC为为1 1 ;OVOV为为1 1 ;P P为为0 0 赁齐裹诉渗嫂谓揣典剃盈轴昏赵稿档隐洱伯罗蔬勇慧钮砌鲍鬼郊梭梦爆瘤第3章80C5的指令系统第3章80C5的指令系统7/22/2024463.4.1 3.4.1 加法加法不带进位加法不带进位加法【例【例3-243-24】若有】若有2 2个个无符号数无符号数存于累加器存于累加器A A和和RAMRAM的的30H30H单元,即单元,即(A A)=84H=84H,(,(
48、30H30H)=8DH=8DH,试分析执行指令,试分析执行指令 ADD AADD A,30H30H 后的结果。后的结果。由于对无符号数相加,要考察由于对无符号数相加,要考察CYCY。由上页图可知,。由上页图可知,CY=1CY=1,因此知道,因此知道运算的结果发生了进位,即实际值应该是运算的结果发生了进位,即实际值应该是100H100H+ +11H11H。所以,编程者所以,编程者应确保应确保单字节无符号数单字节无符号数运算结果运算结果不要超过不要超过255255 先硅淡坐害创痕类刽准耍驻黍疾升稍裹岂块陨驭冶太宝骂涵淡归敛澈徐胶第3章80C5的指令系统第3章80C5的指令系统7/22/202447
49、【例【例3-253-25】若有】若有2 2个个有符号数有符号数存于累加器存于累加器A A和和RAMRAM的的30H30H单元,单元,即(即(A A)=84H=84H,(,(30H30H)=8DH=8DH,试分析执行指令,试分析执行指令 ADD A ADD A,30H 30H 后的结果。后的结果。 有符号数相加,有符号数相加,只需考察溢出标志只需考察溢出标志OVOV即可。由上图可见即可。由上图可见OV=1OV=1,因此可知运算的结果发生了溢出,这说明累加器,因此可知运算的结果发生了溢出,这说明累加器A A中的结果已经不是正确的值了。中的结果已经不是正确的值了。 编程者应确保单字节有符号数运算结果
50、不超过编程者应确保单字节有符号数运算结果不超过-128-128127127。否则,就要将数据用多字节表示或在程序运行中对状态标志否则,就要将数据用多字节表示或在程序运行中对状态标志进行判断:进行判断: 无符号数用无符号数用JNCJNC或或JCJC,有符号数要用,有符号数要用JNBJNB或或JBJB。 诽卖隙路像舆影寡察罗趋抽右镑大戴帅垛兄绦遍竿砰琅哇酌鼻礁锯追冈傣第3章80C5的指令系统第3章80C5的指令系统7/22/202448带进位加法(这组指令方便了多字节加法的实现)带进位加法(这组指令方便了多字节加法的实现) 加加1 1疮淹楷戒消箔滨巩禾辅哭天糖分倦莹雪议吼叮粹毅漏陋饲殊汇锻粒吸臻烬
51、第3章80C5的指令系统第3章80C5的指令系统7/22/202449将内部将内部RAM33H30H与与RAM43H40H连续四字连续四字节的内容相加后结果存于内部节的内容相加后结果存于内部RAM33H30H中中v MOV R7,#4v MOV R0,#30Hv MOV R1,#40Hv CLR Cv LOP: MOV A,R0v ADDC A,R1v MOV R0,Av INC R0v INC R1 v DJNZ R7,LOPv RET萎宙饲炽执防精疫严蹈迅鱼溢唁砖点块恩液汛苫朵职近慑谦咱惨汗喻泼恬第3章80C5的指令系统第3章80C5的指令系统7/22/202450十进制调整十进制调整DA
52、 A DA A ;调整;调整A A的内容为正确的的内容为正确的BCDBCD码码 两个压缩的两个压缩的BCDBCD码按二进制相加后,必须经过调整方能码按二进制相加后,必须经过调整方能得到正确的和。得到正确的和。 当当A A中低中低4 4位出现了非位出现了非BCDBCD码(码(1010101011111111)或低)或低4 4位的位的进位进位AC=1AC=1,则应在低,则应在低4 4位加位加6 6调整。调整。 当当A A中高中高4 4位出现了非位出现了非BCDBCD码(码(1010101011111111)或高)或高4 4位的位的进位进位CY=1CY=1,则应在高,则应在高4 4位加位加6 6调整
53、。调整。 执行十进制调整指令后,执行十进制调整指令后,PSWPSW中的中的CYCY表示结果的百位值表示结果的百位值 雏畸蓖忧疾肘稀节诈欲挡鞋掌挤膊沉紧刃闲驳欧开退耸睡瘪幽阳侗避递将第3章80C5的指令系统第3章80C5的指令系统7/22/202451【例【例3-243-24】若(】若(A A)0110 1001B0110 1001B,表示的,表示的BCDBCD码为码为 (R2R2)0101 1000B0101 1000B,表示的,表示的BCDBCD码为码为 ,执行指令:,执行指令: ADD A,R2DA A(A A)0010 0111B0010 0111B,即,即 且(且(CYCY)1 1,即
54、正确的结果为:,即正确的结果为:127127 望纂滓讼滁阮疼宫篡废渔雍眺将仆幌删椭县坎韵姬涎沛买蒂聚剥炽揣缸再第3章80C5的指令系统第3章80C5的指令系统7/22/202452例例:设设(A)=37H;(R3)=36H,执行下面的程序:,执行下面的程序: 0 0 1 1 0 1 1 1 (37H) 0 0 1 1 0 1 1 0 (36H) (6DH) 0 1 1 0 1 1 0 1 过过“9” 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 补补“6”(73H);(;(A) = 6DH;(;(A) = 73H 0 1 1 1 0 0 1 1 (73H) 1 0 0 1 1
55、 0 0 1 (99H) 1 0 0 0 0 1 1 0 0 (0CH) CY 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 (72H);(;(A) = 0CH CY=1;(;(A) = 72H过过“9”补补“6”1 1 0 111 1 0 0ADD A,R3DA AADD A,#99HDA A“+ 99”就等于减就等于减“- 1”互补互补DA A 只能跟在加法指令之后只能跟在加法指令之后伞浸款夺械蝗辈家演迟延狡掷菇沏庐职锗听愈省麓侧鸿矩慈尝湿戍哀邱氮第3章80C5的指令系统第3章80C5的指令系统7/22/2024533.4.2 3.4.2 减法减法带借位减法带借位减法用此
56、组指令完成不带借位的减法,只需先清用此组指令完成不带借位的减法,只需先清CYCY为为0 0即可即可 CY CY为为1 1,表示,表示D7D7位需借位位需借位 AC AC为为1 1,表示,表示D3D3位需借位位需借位 OV OV为为1 1,表示,表示“D6D6有借位有借位D7D7无借位无借位”或或“D7D7有借位有借位D6D6无借位无借位”爽放愚窖浮婆领么咀摄洁担绘猫美掷氢窟蒋翼跑苛曹苹滚溯盏虎桩抄陡濒第3章80C5的指令系统第3章80C5的指令系统7/22/202454【例【例3-253-25】若(】若(A A)=C9H=C9H,(,(R2R2)=54H=54H,(,(CYCY)=1=1,试分
57、析,试分析指令指令SUBB ASUBB A,R2R2执行后,累加器的内容及状态标志。执行后,累加器的内容及状态标志。 (A):): 1 1 0 0 1 0 0 1(201) (CY):): 1(1)1 1 0 0 1 0 0 0(R2):): 0 1 0 1 0 1 0 0(84)结果:结果: 0 1 1 1 0 1 0 0(116)即即: :(A A)= =74H74H, ,(CYCY)=0,=0,(ACAC)=0,=0,(OVOV)=1,=1,(P P)=0=0。分析:分析:数据为无符号类型。该指令执行前数据为无符号类型。该指令执行前CY=1CY=1,说明此指令不是运算,说明此指令不是运算
58、的最低字节,即在此指令执行之前,一定执行过低字节的减法并产生的最低字节,即在此指令执行之前,一定执行过低字节的减法并产生了借位。因此,本次相减(了借位。因此,本次相减(201-1-84=116=74H201-1-84=116=74H)结果为)结果为74H74H。倍绣理业田垛浑诌冻炎煽缆撩瞬插杉认碱叙疑蔽垣沧坛飞贮浪哄阉鸡颠二第3章80C5的指令系统第3章80C5的指令系统7/22/202455减减1 1这组指令仅这组指令仅 DEC ADEC A 影响影响P P标志。其余指令都不影响标志位的状态。标志。其余指令都不影响标志位的状态。敷畴卯依饺暖兰拣晌败梧盈棺桌澎荒进员螟踏擒升元加堤垒室秆左砌断嫌
59、第3章80C5的指令系统第3章80C5的指令系统7/22/2024563.4.3 3.4.3 乘法乘法仅有一条乘法指令仅有一条乘法指令 MUL AB MUL AB ;A A与与B B相乘相乘 无符号无符号 结果:结果:B B中为积的中为积的高高8 8位位,A A中为积的中为积的低低8 8位位。 CY CY总是被清总是被清0 0;OV=1OV=1表示积大于表示积大于FFH FFH 3.4.4 3.4.4 除法除法仅有一条除法指令仅有一条除法指令 DIV AB DIV AB ;A A除以除以B B 无符号无符号 结果:结果:A A中为商的中为商的整数整数部分,部分,B B中为中为余数余数 CYCY
60、总是被清总是被清0 0;OV=1OV=1表示除数为表示除数为0 0 篡觉款咽稗刘香课挑坯抖咙辨节檬臭曰撰酬豺截逊争程嫌怨橙煮放逸么肿第3章80C5的指令系统第3章80C5的指令系统7/22/2024573.5 逻辑运算与循环类指令(逻辑运算与循环类指令(24条)条)3.5.1 3.5.1 逻辑与逻辑与 逻辑:与、或、异或、清逻辑:与、或、异或、清0 0和取反和取反 循环:左、右移,带进位位左、右移循环:左、右移,带进位位左、右移【例】(【例】(A A)=C3H=C3H,(,(R0R0)=AAH=AAH,执行指令,执行指令 ANL AANL A,R0R0 后,(后,(A A)=82H =82H
61、与与操作常用于对某些操作常用于对某些不关心位不关心位进行进行“清清0 0”, ,同时同时“保留保留”另一些关心位另一些关心位 1 1 0 1011 0 0 1 0 0010 10 1 0 0010 01 1 0 1011 0 1 1 0 1011 0 0 0 0 0000 00 0 0 0000 01 1 0 1011 0 1 1 0 1011 0 0 0 0 0111 10 0 0 0011 01 1 0 1011 0 1 1 0 1011 0 1 1 1 1000 01 1 0 1000 01 1 0 1011 0 1 1 0 1011 0 1 0 0 0000 01 0 0 0000 0
62、1 1 0 1011 0 1 1 1 1111 11 1 0 0011 0窃孜坦盔燕侵看豹审轩捻衔浆珍涨粳晒势肿斡二寥雅命捐佰竣查托坟歼叭第3章80C5的指令系统第3章80C5的指令系统7/22/2024583.5.2 3.5.2 逻辑或逻辑或【例】(【例】(A A)=C3H=C3H,(,(R0R0)=55H=55H,执行指令,执行指令 ORL AORL A,R0R0 后,(后,(A A)=D7H =D7H 或或操作常用于对某些操作常用于对某些关心位关心位进行进行“置置1 1”, ,不关心位保持不变不关心位保持不变 1 1 0 1011 0 0 1 0 0010 11 1 0 1011 10
63、0 0 0010 1 1 0 0 0000 01 0 0 0010 10 0 0 0010 1 0 0 1 1000 00 0 1 1010 10 0 0 0010 1 1 0 0 0000 01 0 0 0010 10 0 0 0010 1 0 0 1 1000 00 0 1 1010 10 0 0 0010 1 0 0 0 0000 00 0 0 0010 1继窄跑掸春弦磕戍甥景黎挖铬墒堪刮注疵吕铃腮默挂棵腋樟硷霸途蛰走塌第3章80C5的指令系统第3章80C5的指令系统7/22/2024593.5.3 3.5.3 逻辑异或逻辑异或【例】(【例】(A A)=C3H=C3H,(,(R0R0)=
64、AAH=AAH,执行指令,执行指令 XRL AXRL A,R0R0 后,(后,(A A)=69H =69H 异或异或操作常用于对某些操作常用于对某些关心位关心位进行进行“取反取反”, ,不关心位保持不变不关心位保持不变 1 1 0 1011 00 1 0 0010 11 1 0 1011 11 1 0 1011 01 1 0 1011 00 0 0 0000 01 1 0 1011 00 1 0 1100 11 0 0 0111 1奔怕夯媒跑铺嘿酷幕黔阁动爸森离亡涸铲祝持屋嗅辉画崭点从桶磁俱事渔第3章80C5的指令系统第3章80C5的指令系统7/22/2024603.5.4 3.5.4 逻辑清
65、逻辑清0 0和取反和取反3.5.5 3.5.5 累加器循环移位累加器循环移位? ?多字节循环怎么做?多字节循环怎么做?愚搞派掏罚局蚕铀合矾胜箱婿沿似郧桐羡阶妊培末栋篡孽涟舵仇蚁攒全详第3章80C5的指令系统第3章80C5的指令系统7/22/202461例:将片内例:将片内RAM31H30H整体带进位的左移整体带进位的左移1位。位。vCLR CvMOV A,30HvRLC AvMOV 30H,AvMOV A,31HvRLC AvMOV 31H,AA.0A.7CYA.0A.7CY30H.630H.630H.0 CY(30H.0 CY(原原) )31H.631H.631H.0 30H.731H.0
66、30H.730H.730H.731H.731H.7萎麦很叙彤震抄浇惩整钎铲蔑拌诛倦衣馒改腻喂所诧把蠕撰园勉承咳圈遇第3章80C5的指令系统第3章80C5的指令系统7/22/2024623.6 控制转移类指令(控制转移类指令(17条)条)3.6.1 3.6.1 无条件转移无条件转移短跳转短跳转AJMP addr11 AJMP addr11 ;PC PC (PCPC)+ 2+ 2,PC10PC100 addr11 0 addr11 贷宣烁瘁余三你跑铣酬宙埂苞勿它陨渔殖疆展湘幌氮疆蘸哑雹信晚昼煤镑第3章80C5的指令系统第3章80C5的指令系统7/22/202463长跳转长跳转LJMP addr16
67、 LJMP addr16 ;PC addr16 PC addr16 相对转移相对转移SJMP rel SJMP rel ;PC PC (PCPC)+ 2+ 2,PC PC (PCPC)+ rel + rel 目标地址目标地址relrel 对应范围为对应范围为 127 127 128128。 伪撮土晦侯椎络吁熔云笛礼宰靡凡闲搪旺罢蕾妆荡柏拯咋雕沮细畏寻诣漏第3章80C5的指令系统第3章80C5的指令系统7/22/202464【例】若【例】若“NEWADDNEWADD”为地址为地址1022H1022H,PCPC的当前值为的当前值为1000H1000H。执。执行指令行指令 SJMP NEWADD S
68、JMP NEWADD 后,程序将转向后,程序将转向1022H1022H处执行处执行(rel=20H= 1022Hrel=20H= 1022H1000H1000H2 2)。解析如下:)。解析如下:乐缀舱凰滓扣鹅皆迅添拖廓侮莱塑全套萎垫遵澎蹲唾擒矣磷骋坯遏偶旦瘟第3章80C5的指令系统第3章80C5的指令系统7/22/202465散转移散转移JMP A+DPTRJMP A+DPTR;PC PC (PCPC)+ 1+ 1,PC PC (A A)+ +(DPTRDPTR) 可完成多条判跳指令的功能可完成多条判跳指令的功能 mov a,r7 mov a,r7 add a,r7 add a,r7 MOV
69、DPTR,#TABLEMOV DPTR,#TABLE JMP A+DPTR JMP A+DPTRTABLE:AJMP ROUT0TABLE:AJMP ROUT0 AJMP ROUT1 AJMP ROUT1 AJMP ROUT2 AJMP ROUT2 AJMP ROUT3 AJMP ROUT3据据R7R7内容转移内容转移毕末镑鹰附历砍牙市乾摈但峭疯谈偷胎兑筹郑定骚凤抑姥拿妨鲍酒脑铜禁第3章80C5的指令系统第3章80C5的指令系统7/22/2024663.6.2 3.6.2 条件转移条件转移累加器判累加器判0 0转移转移比较不等转移比较不等转移谴估熬喉普蛀户早融境吐泵唉夺计唬袜谬怯农横熊咖鸭描斋
70、袭沟夫禁底寞第3章80C5的指令系统第3章80C5的指令系统7/22/202467减减1 1不为不为0 0转移转移壶冠迄锭埠咋牌柱贵刚卤关梁绣缸蔗粪咎训逃润毙副碎优秃菌栓塑督等椅第3章80C5的指令系统第3章80C5的指令系统7/22/202468【例】有一段程序如下,该程序执行后,【例】有一段程序如下,该程序执行后,(A A)=10+9+8+7+6+5+4+3+2+1=37H =10+9+8+7+6+5+4+3+2+1=37H MOV 23H,#0AH CLR ALOOPX:ADD A,23H DJNZ 23H,LOOPX SJMP $焦因毙场多兆电炕牵杨燕挤缀系踩坎爸儿碱湍诲粹矮狰贵太扦赊
71、折隅腆真第3章80C5的指令系统第3章80C5的指令系统7/22/202469条件转移类指令范例条件转移类指令范例方案一方案一还有什么方法实还有什么方法实现循环的终止现循环的终止? ?将00H0FH这16个数顺序地置入片内RAM20H2FH单元中。 MOV R0,#20H MOV R7,#16 CLR ALOOP:MOV R0,A INC A INC R0 DJNZ R7,LOOP SJMP $挺矽渔暂涅阴萌鱼梢痞颐茂盏磐傍但橇釉食垂滚春逝覆蛾川咖悸期综肥茸第3章80C5的指令系统第3章80C5的指令系统7/22/202470条件转移类指令范例条件转移类指令范例方案二方案二 MOV R0,#2
72、0H CLR ALOOP:MOV R0,A INC A INC R0 CJNE A,#10H,LOOP SJMP $CJNE R0,#30H,LOOP戌辑帕鄙澜宣憾脑傲挤笑萄毖爪柑岔灰脉厂深歪湿豪戳词神蹬午彪常军国第3章80C5的指令系统第3章80C5的指令系统7/22/202471条件转移类指令范例条件转移类指令范例方案三方案三 MOV R0,#20H MOV A,#16 MOV 30H,#00HLOOP:MOV R0,30H INC 30H INC R0 DEC A JNZ LOOP SJMP $埂隋呜蛮涛矛口恒儡骤写缩武踊鬃玛裸夜誓茄帚掇榆救拍儒巴丹缄芝滩蜘第3章80C5的指令系统第3章
73、80C5的指令系统7/22/202472条件转移类指令范例条件转移类指令范例方案四方案四 MOV R0,#20H MOV A,#0FH MOV 30H,#00HLOOP:MOV R0,30H INC 30H INC R0 SUBB A,#01H JNC LOOP SJMP $般梳牺菠彩溪玻碍咎钨揍牺祈阵烙详围刹粥视甲俗衰谆项斯谅臣锗殆膊妊第3章80C5的指令系统第3章80C5的指令系统7/22/2024733.6.3 3.6.3 调用与返回调用与返回调用调用 指令执行时将返回地址入栈指令执行时将返回地址入栈 SP SP应设为合适值(默认值应设为合适值(默认值07H07H) 澄重怔现戍戎嘲外莉彻
74、蘑翔梯寿亏珊平晌哥贬闸曼拔联某拟惶溅顺壹怀锋第3章80C5的指令系统第3章80C5的指令系统7/22/202474【例【例3 3】若(】若(SPSP)=07H=07H,标号,标号“XADDXADD”表示的表示的实际地址为实际地址为0345H0345H,PCPC的当前值为的当前值为0123H0123H。 执行指令执行指令 ACALL XADDACALL XADD 后后: : 返回地址为:(返回地址为:(PCPC)+2=+2=0125H0125H。其低。其低8 8位的位的25H25H压入堆栈的压入堆栈的08H08H单元,其高单元,其高8 8位的位的01H01H压入压入堆栈的堆栈的09H09H单元单
75、元(低地址对应于低字节)(低地址对应于低字节)。(PCPC)=0345H=0345H,程序转向目标地址,程序转向目标地址0345H 0345H 处处执行。执行。荤浦剖骤惶默欺柜今植嘶三找纵正嗜夏栏颇倦喳鞋难晨浚莉澡饼抵丧良呀第3章80C5的指令系统第3章80C5的指令系统7/22/202475返回返回RETIRETI专用于中断服务程序返回,它具有清除内部相应专用于中断服务程序返回,它具有清除内部相应的中断状态触发器(以保证正确的中断逻辑)的功能。的中断状态触发器(以保证正确的中断逻辑)的功能。 3.6.4 3.6.4 空操作空操作NOP NOP ;PC PC (PCPC)+ 1+ 1,占占1
76、1个周期个周期、一个字节一个字节 溪匠俘见帽哄挛萌拎祸请模缴逮途聚笛角肤登退惧镁倪车乳左獭墙议咏副第3章80C5的指令系统第3章80C5的指令系统7/22/2024763.7 位操作类指令(位操作类指令(17条)条)位操作是以位为单位进行的各种操作。位操作指位操作是以位为单位进行的各种操作。位操作指令中的位地址有令中的位地址有4 4 种表示形式:种表示形式: 直接地址直接地址 (如,(如,0D5H0D5H);); 点操作符点操作符 (如,(如,0D0H.50D0H.5、PSW.5PSW.5等);等); 位名称位名称 (如,(如,F0F0);); 伪指令定义(如,伪指令定义(如,MYFLAG B
77、IT F0MYFLAG BIT F0)。)。以上几种形式表示的都是以上几种形式表示的都是PSWPSW中的中的位位5 5。位操作指令中,位累加器要用位操作指令中,位累加器要用“C C”表示表示(注:而(注:而CYCY与具体的直接位地址与具体的直接位地址D7HD7H对应)。对应)。 试比较:试比较:A A与与ACCACC的关系?的关系?艳曲锭乖鹏番离泞允砸套鹊峡畜泵湃钩语讨蘑爪公唾请务疑棱赂蹦讹姑牟第3章80C5的指令系统第3章80C5的指令系统7/22/2024773.7.1 3.7.1 位传送位传送MOV bitMOV bit,C C ;bitbit(CYCY) MOV C MOV C ,bi
78、t bit ;CY CY (bitbit) 3.7.2 3.7.2 位状态设置位状态设置位清位清0 0位置位位置位捐佣鱼涣蒸呸窖鲁亭幢末坝梯侠肋乌钮妄搪鹰蒲醚殿匝喳炒毫屎土母扎蘸第3章80C5的指令系统第3章80C5的指令系统7/22/2024783.7.3 3.7.3 位逻辑运算位逻辑运算位逻辑与位逻辑与位逻辑或位逻辑或位取反位取反浴滥潮樊摹竹茂免玄婪敌畅酿伸释妨纷讳航店谅囱硼踩炼酶图角钥腋拍楼第3章80C5的指令系统第3章80C5的指令系统7/22/202479判判CYCY转移转移判判bitbit转移转移3.7.4 3.7.4 位判跳(条件转移)位判跳(条件转移); ;若(若(CYCY)=
79、1,PC=1,PC(PCPC)+2+rel,+2+rel,否则顺次执行。否则顺次执行。; ;若(若(CYCY)=0;PC=0;PC(PCPC)+2+rel;+2+rel;否则顺次执行。否则顺次执行。; ;(bitbit)=1,PC=1,PC(PCPC)+3+rel,+3+rel,否则顺次执行。否则顺次执行。; ;(bitbit)=1,PC=1,PC(PCPC)+3+rel,bit 0,+3+rel,bit 0,否则顺次执行否则顺次执行; ;(bitbit)=0,PC=0,PC(PCPC)+3+rel,+3+rel,否则顺次执行否则顺次执行 带唇挝媚郸叁窍旷突潦普境就孤逸第堑赖藤紊娩泊锑朔众密南淘砌占弓畔第3章80C5的指令系统第3章80C5的指令系统7/22/202480贩闷奎箩铺玲西便邪嘲帕刹停死缝踪屿痢妄篱声置苛懦淋作主责燃事滑溺第3章80C5的指令系统第3章80C5的指令系统