第3章MCS51的指令系统

上传人:M****1 文档编号:567966606 上传时间:2024-07-22 格式:PPT 页数:53 大小:154.50KB
返回 下载 相关 举报
第3章MCS51的指令系统_第1页
第1页 / 共53页
第3章MCS51的指令系统_第2页
第2页 / 共53页
第3章MCS51的指令系统_第3页
第3页 / 共53页
第3章MCS51的指令系统_第4页
第4页 / 共53页
第3章MCS51的指令系统_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《第3章MCS51的指令系统》由会员分享,可在线阅读,更多相关《第3章MCS51的指令系统(53页珍藏版)》请在金锄头文库上搜索。

1、第第3 3章章 MCS-51 MCS-51的指令系统的指令系统 介绍介绍MCS-51MCS-51汇编语言汇编语言的指令系统。的指令系统。3.1 3.1 指令系统概述指令系统概述 MCS-51MCS-51的基本指令共的基本指令共111111条条,按指令所占的字节来分:按指令所占的字节来分: (1) (1) 单字节指令单字节指令4949条;条; (2) (2) 双字节指令双字节指令4545条;条; (3) (3) 三字节指令三字节指令1717条。条。按指令的执行时间来分按指令的执行时间来分: (1) 1 (1) 1个机器周期(个机器周期(1212个时钟振荡周期)指令个时钟振荡周期)指令6464条条

2、 (2) 2 (2) 2个机器周期(个机器周期(2424个时钟振荡周期)指令个时钟振荡周期)指令4545条条渤积春绚硒台腿善彝系拣裁叛炒童状宅拷叮絮卡迟谆谐逃幻寨麓调沦粉价第3章MCS51的指令系统第3章MCS51的指令系统 (3) (3) 只只有有乘乘、除除两两条条指指令令的的执执行行时时间间为为4 4个个机机器器周周期期(4848个时钟振荡周期)。个时钟振荡周期)。12MHz12MHz晶振晶振: :机器周期为机器周期为1 1 s s。3.2 3.2 指令格式指令格式 两部分组成,即两部分组成,即操作码操作码和和操作数操作数。 操作码操作码用来规定指令进行什么操作用来规定指令进行什么操作 操

3、作数操作数则是指令操作的对象则是指令操作的对象有单字节指令、双字节指令、三字节不同长度的指令,有单字节指令、双字节指令、三字节不同长度的指令,格式不同:格式不同: (1 1)单字节指令:)单字节指令:指令只有一个字节,操作码和操指令只有一个字节,操作码和操作数同在一个字节中。作数同在一个字节中。 窒蒂绷桂属逊翁慷挑貌亿魂拾饭频嚏翁氏洞赌际胎嫉吝哦蛹惮卫嘎阵饵皇第3章MCS51的指令系统第3章MCS51的指令系统 (2 2)双双字字节节指指令令:一一个个字字节节为为操操作作码码,另另一一个个字字节节是操作数。是操作数。 (3 3)三字节指令:)三字节指令:操作码占一个字节,操作数占二操作码占一个

4、字节,操作数占二个字节。其中操作数既可能是数据,也可能是地址。个字节。其中操作数既可能是数据,也可能是地址。 3.3 3.3 指令系统的寻址方式指令系统的寻址方式 寻址方式寻址方式就是在指令中说明操作数所在地址的方法。就是在指令中说明操作数所在地址的方法。共共7 7种种寻址方式。寻址方式。 1 1寄存器寻址方式寄存器寻址方式 操作数在寄存器中操作数在寄存器中 MOV AMOV A,Rn Rn ;(;(RnRn)AA,n=0n=07 7 表示把寄存器表示把寄存器RnRn的内容传送给累加器的内容传送给累加器A A 法陆絮残同由远率萄汤既绒叹弘汉噶逗叶委逸镀脾箍笼酉遁郭磋骂窍群固第3章MCS51的指

5、令系统第3章MCS51的指令系统寻址范围包括:寻址范围包括:(1 1)4 4组通用工作寄存区共组通用工作寄存区共3232个工作寄存器。个工作寄存器。(2 2)部分特殊功能寄存器,例如)部分特殊功能寄存器,例如A A、B B 以及数据指针以及数据指针寄存器寄存器DPTRDPTR等。等。2 2直接寻址方式直接寻址方式 操作数直接以单元地址的形式给出:操作数直接以单元地址的形式给出: MOV AMOV A,40H40H 寻址范围:寻址范围: (1) (1) 内部内部RAMRAM的的128128个单元个单元(2) (2) 特殊功能寄存器。除了以单元地址的形式外特殊功能寄存器。除了以单元地址的形式外,

6、,还还可用寄存器符号可用寄存器符号的形式给出。例如:的形式给出。例如: MOV AMOV A,80H 80H 与与 MOV A MOV A,P0P0是等价的是等价的。杂很痉酥狮拂亿琅踊蚤粗车东硒泼棒订淬察赊匈庄纬玉来攘咎纠力酶妈凹第3章MCS51的指令系统第3章MCS51的指令系统3. 3. 寄存器间接寻址方式寄存器间接寻址方式 寄存器中存放的是操作数的地址寄存器中存放的是操作数的地址 在寄存器的名称前面加在寄存器的名称前面加前缀标志前缀标志“”“” 访问内部访问内部RAMRAM或外部数据存储器的低或外部数据存储器的低256256个字节时,个字节时,只只能采用能采用R0R0或或R1R1作为间址

7、寄存器作为间址寄存器。例如。例如: MOV AMOV A,RiRi ;i=0i=0或或1 1 其中其中RiRi中的内容为中的内容为40H40H,把内部,把内部RAM40HRAM40H单元内容送单元内容送A A。寻址范围:寻址范围:(1 1)访问内部)访问内部RAMRAM低低128128个单元,其通用形式为个单元,其通用形式为RiRi(2 2)对片外数据存储器的)对片外数据存储器的64K64K字节的间接寻址,例如:字节的间接寻址,例如: MOVX AMOVX A,DPTRDPTR不伍勉僵矢中区龙个穆梧拟涕湖寄筏氢澄连俱友双民涡纫闭罐排桅蹭晾位第3章MCS51的指令系统第3章MCS51的指令系统(

8、3 3)片外数据存储器的低)片外数据存储器的低256256字节字节 例如:例如:MOVX AMOVX A,RiRi(4 4)堆栈区)堆栈区 堆栈操作指令堆栈操作指令PUSHPUSH(压栈)和(压栈)和POPPOP(出栈)使用堆(出栈)使用堆栈指针(栈指针(SPSP)作间址寄存器)作间址寄存器4 4立即寻址方式立即寻址方式 操作数在指令中直接给出,需在操作数前面加前缀操作数在指令中直接给出,需在操作数前面加前缀 “#”“#”。例如:。例如: MOV AMOV A,#40H#40H 5 5基址寄存器加变址寄存器间址寻址方式基址寄存器加变址寄存器间址寻址方式 本寻址方式是以本寻址方式是以DPTRDP

9、TR或或PCPC作基址寄存器,以累加器作基址寄存器,以累加器A A作为变址寄存器。作为变址寄存器。 缠泽邀末祈酶着蛤拌侩杰嚣躲堂曹涸颓闭煮瘦谤叭痘缆也提正帐蝶态巩摈第3章MCS51的指令系统第3章MCS51的指令系统例例如如:指指令令 MOVC MOVC A A,A+DPTR A+DPTR 其其中中A A的的原原有有内内容容为为05H05H,DPTRDPTR的的内内容容为为0400H0400H,该该指指令令执执行行的的结结果果是是把把程程序序存储器存储器0405H0405H单元的内容传送给单元的内容传送给A A。说明:说明: (1 1)本本寻寻址址方方式式是是专专门门针针对对程程序序存存储储器

10、器的的寻寻址址方方式式,寻址范围可达到寻址范围可达到64KB64KB。(2 2)本寻址方式的指令只有本寻址方式的指令只有3 3条:条:MOVC AMOVC A,A+DPTRA+DPTRMOVC AMOVC A,A+PCA+PCJMP A+DPTRJMP A+DPTR砒淖巨原崇吓赡昔济捏肇辱纶例对框渊臃享撞恢浅刚需讽畜僧做芥电棍钟第3章MCS51的指令系统第3章MCS51的指令系统6 6位寻址方式位寻址方式 MCS-51MCS-51有位处理功能,可以对数据位进行操作,例如:有位处理功能,可以对数据位进行操作,例如: MOV CMOV C,40H40H 是把位是把位40H40H的值送到进位位的值送

11、到进位位C C。寻址范围包括:寻址范围包括:(1 1)内部)内部RAMRAM中的位寻址区。中的位寻址区。位有两种表示方法位有两种表示方法,例如,例如,40H40H;另一种是单元地址加上位,例如,;另一种是单元地址加上位,例如,(28H).0(28H).0,指,指的是的是28H28H单元中的最低位。它们是等价的。单元中的最低位。它们是等价的。(2 2)特殊功能寄存器中的可寻址位)特殊功能寄存器中的可寻址位 可寻址位可寻址位在指令中有如下在指令中有如下4 4种的表示方法:种的表示方法: a. a. 直接使用位地址直接使用位地址。例如。例如PSW.5PSW.5的位地址为的位地址为0D5H0D5H。

12、决略靡聪靠让着契限下脱归出预朔致颧呀澈哼炭媒袍左范肿蒂巷殊霖权袭第3章MCS51的指令系统第3章MCS51的指令系统b.b.位位名名称称的的表表示示方方法法。例例如如:PSW.5PSW.5是是F0F0标标志志位位,可可使使用用F0F0表示该位。表示该位。c.c.单元地址加位数单元地址加位数的表示方法。例如的表示方法。例如 :(0D0H).5 :(0D0H).5。d.d.特殊功能寄存器符号加位数特殊功能寄存器符号加位数的表示方法。例如的表示方法。例如:PSW.5:PSW.5。7 7相对寻址方式相对寻址方式 在在相相对对寻寻址址的的转转移移指指令令中中,给给出出了了地地址址偏偏移移量量,以以“re

13、l”“rel”表表示示,即即把把PCPC的的当当前前值值加加上上偏偏移移量量就就构构成成了了程序转移的目的地址:程序转移的目的地址: 目的地址目的地址= =转移指令所在的地址转移指令所在的地址 + + 转移指令的字节数转移指令的字节数 + rel+ rel 偏移量偏移量relrel是一带符号的是一带符号的8 8位二进制数补码数位二进制数补码数 。靖西聘幸楷是傍刮正烟荒羹骸善燕曹怕占姚均辽发峙绣蔓受估引遍收绕蹄第3章MCS51的指令系统第3章MCS51的指令系统范围是:范围是:128 128 +127 +127 向向地地址址增增加加方方向向最最大大可可转转移移(127+127+转转移移指指令令字

14、字节节)个个单单元元地地址址,向向地地址址减减少少方方向向最最大大可可转转移移(128-128-转转移移指令字节)个单元地址。指令字节)个单元地址。7 7种寻址方式及寻址空间,见表种寻址方式及寻址空间,见表3-13-1(P43)P43)。3.4 MCS-513.4 MCS-51指令系统分类介绍指令系统分类介绍111111条指令条指令,按功能分类,可分为下面,按功能分类,可分为下面5 5大类大类: (1 1)数据传送类)数据传送类(28(28条条) ) (2 2)算术操作类)算术操作类(24(24条条 (3 3)逻辑运算类)逻辑运算类(25(25条条) ) (4 4)控制转移类)控制转移类(17

15、(17条条) ) (5 5)位操作类)位操作类(17(17条条) )并愚左审甚瘪反斌扶镇比啦柠憨离剑臀狰寞陀介翱肌蓄涕裤蔑宿肉叮视嘛第3章MCS51的指令系统第3章MCS51的指令系统指令中符号的意义指令中符号的意义: :Rn Rn 当前寄存器区的当前寄存器区的8 8个工作寄存器个工作寄存器R0R0R7(n=0R7(n=07)7)。Ri Ri 当当前前选选中中的的寄寄存存器器区区中中可可作作间间接接寻寻址址寄寄存存器器的的2 2 个寄存器个寄存器R0R0、R1(i=0,1)R1(i=0,1)。DirectDirect 直直接接地地址址,即即8 8位位的的内内部部数数据据存存储储器器单单元元或或

16、特殊功能寄存器的地址。特殊功能寄存器的地址。#data#data 包含在指令中的包含在指令中的8 8位立即数。位立即数。#data16#data16 包含在指令中的包含在指令中的1616位立即数。位立即数。relrel 相相对对转转移移指指令令中中的的偏偏移移量量,为为8 8位位的的带带符符号号补补 码数码数DPTRDPTR 数据指针,可用作数据指针,可用作1616位的数据地址寄存器。位的数据地址寄存器。bitbit 内部内部RAMRAM或特殊功能寄存器中的直接寻址位。或特殊功能寄存器中的直接寻址位。C C(或(或CyCy) 进位标志位或位处理机中的累加器。进位标志位或位处理机中的累加器。啤点

17、韩荆杜鸥困酉妒拒累鹏匣柬般译及渭要欺懒农忌乖修叶佛历路札险碧第3章MCS51的指令系统第3章MCS51的指令系统addr11addr11 1111位目的地址位目的地址addr16addr16 1616位目的地址位目的地址 间接寻址寄存器前缀,如间接寻址寄存器前缀,如RiRi,A+DPTRA+DPTR(X)(X) X X中的内容。中的内容。(X)(X) 由由X X寻址的单元中的内容。寻址的单元中的内容。 箭头右边的内容被箭头左边的内容所取代。箭头右边的内容被箭头左边的内容所取代。3.4.1 3.4.1 数据传送类指令数据传送类指令 使用最频繁的一类指令使用最频繁的一类指令, ,通用格式:通用格式

18、: MOV MOV , 属属“复制复制”性质,而不是性质,而不是“搬家搬家”数数据据传传送送类类指指令令不不影影响响标标志志位位, , CyCy、AcAc和和OVOV,但但不不包包括奇偶标志位括奇偶标志位P P。逆指钾搔隅功程敲遍傲演忍碗衍分佯建普漫复表缴嚷印视眨裴润迪囊牺揖第3章MCS51的指令系统第3章MCS51的指令系统 1 1以累加器为目的操作数的指令以累加器为目的操作数的指令 MOV A,Rn ; (Rn)AMOV A,Rn ; (Rn)A,n=0n=07 7 MOV A,Ri ; (Ri)A,i=0,1MOV A,Ri ; (Ri)A,i=0,1 MOV A,direct ;MOV

19、 A,direct ;(directdirect)AA MOV A,#data ; #dataAMOV A,#data ; #dataA 例如:例如: MOV A,R6 ;(R6)AMOV A,R6 ;(R6)A,寄存器寻址,寄存器寻址 MOV A,70H ;(70H)AMOV A,70H ;(70H)A,直接寻址,直接寻址 MOV A,R0 ;(R0)AMOV A,R0 ;(R0)A,间接寻址,间接寻址 MOV A,#78H ;78HAMOV A,#78H ;78HA,立即寻址,立即寻址 2. 2. 以以RnRn为目的操作数的指令为目的操作数的指令 阅威樱鹰烹迹徊雅灶州伸驾骡咙免沥栅姆若窜属

20、苗举曲尸腮岸爽博挪泅起第3章MCS51的指令系统第3章MCS51的指令系统 MOV Rn,A ; (A)Rn,n=0MOV Rn,A ; (A)Rn,n=07 7 MOV Rn,direct ; MOV Rn,direct ;(directdirect)Rn,n=0Rn,n=07 7 MOV Rn,#dat ; #dataRn,n=0 MOV Rn,#dat ; #dataRn,n=07 7功功能能:是是把把源源操操作作数数的的内内容容送送入入当当前前一一组组工工作作寄寄存存器器区的区的R0R0R7R7中的某一个寄存器。中的某一个寄存器。3.3.以直接地址以直接地址directdirect为目

21、的操作数的指令为目的操作数的指令 MOV direct,A ; (A)directMOV direct,A ; (A)direct MOV MOV direct,Rn;(Rn)direct, n=0 direct,Rn;(Rn)direct, n=07 7 MOV direct1,direct2; MOV direct1,direct2; MOV direct,Ri ; (Ri)direct MOV direct,Ri ; (Ri)direct MOV MOV direct,#data; #datadirect direct,#data; #datadirect踢毗咱颂阐溉客事裤东菠颗过妄煤腺

22、期狈因滤人塑氢挥来棍芥裴寒硒意阻第3章MCS51的指令系统第3章MCS51的指令系统功功能能:把把源源操操作作数数送送入入直直接接地地址址指指出出的的存存储储单单元元。directdirect指的是内部指的是内部RAMRAM或或SFRSFR的地址。的地址。4.4.以寄存器间接地址为目的操作数的指令以寄存器间接地址为目的操作数的指令 MOV Ri,A ;(A)(Ri),i=0,1MOV Ri,A ;(A)(Ri),i=0,1 MOV Ri,direct ; MOV Ri,direct ; (directdirect)(Ri)(Ri) MOV Ri,#data ; #data(Ri) MOV Ri

23、,#data ; #data(Ri)5.165.16位数传送指令位数传送指令 MOV DPTR,#data16 ; #data16DPTRMOV DPTR,#data16 ; #data16DPTR唯一的唯一的1616位数据的传送指令位数据的传送指令 , ,立即数的高立即数的高8 8位送入位送入DPHDPH,立即数的低,立即数的低8 8位送入位送入DPLDPL。竞彻寿韦塘足秸候次寄承颁酒兑诀辨杰开木互局羔郭弦堰搏潜宛好院练穗第3章MCS51的指令系统第3章MCS51的指令系统6 6堆栈操作指令堆栈操作指令 MCS-51 MCS-51内部内部RAMRAM中可以设定一个中可以设定一个后进先出后进先

24、出(LIFO-LIFO-Last In First OutLast In First Out)的区域称作)的区域称作堆栈堆栈. .堆栈指针堆栈指针SPSP指出堆栈的栈顶位置。指出堆栈的栈顶位置。(1)(1)进栈指令进栈指令 PUSH directPUSH direct先先将将栈栈指指针针SPSP加加1 1,然然后后把把directdirect中中的的内内容容送送到到栈栈指指针针SPSP指示的内部指示的内部RAMRAM单元中。单元中。例如:例如: 当(当(SPSP)=60H,=60H,(A A)=30H,=30H,(B B)=70H=70H时,时, 执行:执行: PUSH APUSH ACCCC

25、; ; (SP)+1=61HSP,(A)61H(SP)+1=61HSP,(A)61H PUSH BPUSH B ; ; 脊棱侗眷负耙豢萌容酸银弹釉旬馈痊由奎农巨己泳兜迄酉孰琵彰锤匈酱看第3章MCS51的指令系统第3章MCS51的指令系统 (SP)+1=62HSP,(B)62H(SP)+1=62HSP,(B)62H 结果:结果:(61H)=30H,(62H)=70H,(SP)=62H(61H)=30H,(62H)=70H,(SP)=62H (2) (2)出栈指令出栈指令 POP directPOP directSPSP指指示示的的栈栈顶顶(内内部部RAMRAM单单元元)内内容容送送入入direc

26、tdirect字字节节单单元中,栈指针元中,栈指针SPSP减减1.1. 例如例如: : 当当 (SP)=62H (SP)=62H,(62H)=70H(62H)=70H,(61H)=30H,(61H)=30H, 执行:执行: POP DPH ;(SP)DPH,(SP)-1SP POP DPH ;(SP)DPH,(SP)-1SP POP DPL ;(SP)DPL,(SP)-1SP POP DPL ;(SP)DPL,(SP)-1SP 结果:结果:(DPTR)=7030H(DPTR)=7030H,(SP)=60H(SP)=60H术绅昭有互控憋斑尊瑚巾酋蘑一昏吉逾矢倾茁劝南攘胶巩仁滞羽兼进寿秆第3章MC

27、S51的指令系统第3章MCS51的指令系统7.7.累加器累加器A A与外部数据存储器传送指令与外部数据存储器传送指令 MOVX A,DPTR ;(DPTR)A,MOVX A,DPTR ;(DPTR)A,读外部读外部RAM/IORAM/IO MOVX A,Ri ;(Ri)A, MOVX A,Ri ;(Ri)A,读外部读外部RAM/IORAM/IO MOVX DPTR,A;(A)(DPTR), MOVX DPTR,A;(A)(DPTR),写外部写外部RAM/IORAM/IO MOVX Ri,A ;(A)(Ri), MOVX Ri,A ;(A)(Ri),写外部写外部RAM/IORAM/IO功功能能:

28、读读外外部部RAMRAM存存储储器器或或I/OI/O中中的的一一个个字字节节,或或把把A A中中一个字节的数据写到外部一个字节的数据写到外部RAMRAM存储器或存储器或I/OI/O中。中。 注意:注意:RDRD* *或或WRWR* *信号有效。信号有效。采采用用DPTRDPTR间间接接寻寻址址,高高8 8位位地地址址(DPHDPH)由由P2P2口口输输出出,低低8 8位地址(位地址(DPLDPL)由)由P0P0口输出。口输出。采采用用RiRi(i=0,1i=0,1)间间接接寻寻址址,可可寻寻址址片片外外256256个个单单元元的的数据存储器。数据存储器。RiRi内容由内容由P0P0口输出。口输

29、出。秃塘风郴泽及哗化素碑刁肚徐震睛獭铡瘟绳诚崩脓躲品脸骇屁攫唇哪懈择第3章MCS51的指令系统第3章MCS51的指令系统8 8位地址和数据均由位地址和数据均由P0P0口输出,可选用其它任何输出口口输出,可选用其它任何输出口线来输出高于线来输出高于8 8位的地址(一般选用位的地址(一般选用P2P2口输出高口输出高8 8位位的地址)。的地址)。MOVMOV后后 “X”“X”表示单片机访问的是片外表示单片机访问的是片外RAMRAM存储器或存储器或I/OI/O。8.8.查表指令查表指令 共两条,用于读程序存储器中的数据表格的指令,均共两条,用于读程序存储器中的数据表格的指令,均采用基址寄存器加变址寄存

30、器间接寻址方式。采用基址寄存器加变址寄存器间接寻址方式。 (1) MOVC A,A+PC(1) MOVC A,A+PC 以以PCPC作基址寄存器,作基址寄存器,A A的内容作为无符号整数和的内容作为无符号整数和PCPC中的中的内容(下一条指令的起始地址)相加后得到一个内容(下一条指令的起始地址)相加后得到一个1616位的地址,该地址指出的程序存储单元的内容送到位的地址,该地址指出的程序存储单元的内容送到累加器累加器A A。注意:注意:PSENPSEN* *信号有效信号有效。毒辜贱尼糜稠建公光堪修榴慎咐落遂类责霉韵酥疲子盲睬惮溢残颐势捅戈第3章MCS51的指令系统第3章MCS51的指令系统例如例

31、如: : (A)=30H, (A)=30H,执行地址执行地址1000H1000H处的指令处的指令 1000H: MOVC A,A+PC1000H: MOVC A,A+PC 本指令占用一个字节,执行结果将程序存储器中本指令占用一个字节,执行结果将程序存储器中1031H1031H的内容送入的内容送入A A。优点:优点:不改变特殊功能寄存器及不改变特殊功能寄存器及PCPC的状态,根据的状态,根据A A的内的内容就可以取出表格中的常数。容就可以取出表格中的常数。缺点:缺点:表格只能存放在该条查表指令后面的表格只能存放在该条查表指令后面的256256个单元个单元之内之内,表格的大小受到限制,且表格只能被

32、一段程,表格的大小受到限制,且表格只能被一段程序所利用。序所利用。 (2) MOVC A,A+DPTR(2) MOVC A,A+DPTR以以DPTRDPTR作为基址寄存器,作为基址寄存器,A A的内容作为无符号数和的内容作为无符号数和DPTRDPTR的内容相加得到一个的内容相加得到一个1616位的地址,把由该地址指出位的地址,把由该地址指出的程序存储器单元的内容送到累加器的程序存储器单元的内容送到累加器A. A. 壹苦肚升熙枚城缨啦沪钦者汕知妊涡倦夺额肄袭菌侯捞觅钟影方戒辫烈扛第3章MCS51的指令系统第3章MCS51的指令系统例如例如 (DPTR)=8100H (A)=40H (DPTR)=

33、8100H (A)=40H 执行指令执行指令 MOVC A,A+DPTRMOVC A,A+DPTR 本本指指令令的的执执行行结结果果只只和和指指针针DPTRDPTR及及累累加加器器A A的的内内容容有有关关,与与该该指指令令存存放放的的地地址址及及常常数数表表格格存存放放的的地地址址无无关关,因因此此表表格格的的大大小小和和位位置置可可以以在在64K64K程程序序存存储储器器中中任意安排任意安排,一个表格可以为各个程序块公用。,一个表格可以为各个程序块公用。两条指令是在两条指令是在MOVMOV的后面加的后面加C C,“C”“C”是是CODECODE的第一个字的第一个字母,即代码的意思。母,即代

34、码的意思。 9 9字节交换指令字节交换指令 XCH A,RnXCH A,Rn XCH A,directXCH A,direct XCH A,RiXCH A,Ri迭咏共淤杰皇羹快孜取欧炔球剿溪父为呀斋附棠负隅绰椒西阅挑锯膛沂卸第3章MCS51的指令系统第3章MCS51的指令系统例如:例如: (A)=80H (A)=80H,(R7)=08H(R7)=08H,(40H)=F0H(40H)=F0H (R0)=30H (R0)=30H,(30H)=OFH(30H)=OFH执行下列指令:执行下列指令: XCH A,R7 ;(A)XCH A,R7 ;(A)与与(R7)(R7)互换互换 XCH A,40H ;

35、(A) XCH A,40H ;(A)与与(40H)(40H)互换互换 XCH A,R0 ;(A) XCH A,R0 ;(A)与与(R0)(R0)互换互换 结果:结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H 1010半字节交换指令半字节交换指令 XCHD A,RiXCHD A,Ri 累加器的低累加器的低4 4位与内部位与内部RAMRAM低低4 4位交换。例如:位交换。例如: (R0)=60H,(60H)=3EH,(A)=59H (R0)=60H,(60H)=3EH,(A)=59H溃霜订殷痪急

36、傲拣锡丛郊脚盔辗李凉讫荫猖范爵少灿尧筐审己蝇思潭帝峦第3章MCS51的指令系统第3章MCS51的指令系统执行完执行完 XCHD A,ROXCHD A,RO 指令指令, ,则则(A)=5EH,(60H)=39H(A)=5EH,(60H)=39H。 3.4.2 3.4.2 算术操作类指令算术操作类指令 单字节的加、减、乘、除法指令,都是针对单字节的加、减、乘、除法指令,都是针对8 8位二进位二进制无符号数。制无符号数。执行的结果对执行的结果对CyCy、AcAc、OVOV 三种标志位有影响。三种标志位有影响。但增但增1 1和减和减1 1指令不影响上述标志。指令不影响上述标志。1 1加法指令加法指令

37、共有共有4 4条加法运算指令:条加法运算指令: ADD A,Rn ;(A)+(Rn)A ADD A,Rn ;(A)+(Rn)A,n=0n=07 7 ADD A,direct ;(A)+(direct)A ADD A,direct ;(A)+(direct)A ADD A,Ri ;(A)+(Ri)A,i=0,1 ADD A,Ri ;(A)+(Ri)A,i=0,1 窑趣盟翔萧肥叔捡缠抑缸栈虫堕畸虫怜亭燥砒豺成程蔓醉兜熙夯晨甄虎庙第3章MCS51的指令系统第3章MCS51的指令系统 ADD A,#data ; (A)+#dataAADD A,#data ; (A)+#dataA一一个个加加数数总总是

38、是来来自自累累加加器器A A,而而另另一一个个加加数数可可由由不不同同的寻址方式得到。结果总是放在的寻址方式得到。结果总是放在A A中。中。使使用用加加法法指指令令时时,要要注注意意累累加加器器A A中中的的运运算算结结果果对对各各个标志位的影响:个标志位的影响:(1 1)如如果果位位7 7有有进进位位,则则置置“1”“1”进进位位标标志志CyCy,否否则则清清“0”Cy“0”Cy(2 2)如如果果位位3 3有有进进位位,置置“1”“1”辅辅助助进进位位标标志志AcAc,否否则清则清“0”Ac“0”Ac(AcAc为为PSWPSW寄存器中的一位)寄存器中的一位)皇值砸防辅皿杯蝶拭轮皆芽亨庚剿矩堑

39、弃自授惮耶飘钥睫尹雨诲熔侄汲伴第3章MCS51的指令系统第3章MCS51的指令系统(3 3)如如果果位位6 6有有进进位位,而而位位7 7没没有有进进位位,或或者者位位7 7有有进进位位,而而位位6 6没没有有,则则溢溢出出标标志志位位OVOV置置“1”“1”,否则清,否则清“0”OV“0”OV。溢溢出出标标志志位位OVOV的的状状态态,只只有有在在带带符符号号数数加加法法运运算算时时才才有有意意义义。当当两两个个带带符符号号数数相相加加时时,OV=1OV=1,表表示示加加法法运运算算超超出出了了累累加加器器A A所所能能表表示示的带符号数的有效范围的带符号数的有效范围 蒂邓硷贪吃屏份前八旷货

40、伍氮入薛弃机螺熙感魔琴灯躲乱饼垦粮涯即个舰第3章MCS51的指令系统第3章MCS51的指令系统 例例 (A)=53H (A)=53H,(R0)=FCH(R0)=FCH,执行指令,执行指令 ADD A,R0ADD A,R0结果结果: (A)=4FH: (A)=4FH,Cy=1Cy=1,Ac=0Ac=0,OV=0OV=0,P=1P=1注注意意:上上面面的的运运算算中中,由由于于位位6 6和和位位7 7同同时时有有进进位,所以标志位位,所以标志位OV=0OV=0。 例例 (A)= (A)= 85H,(R0)=20H,85H,(R0)=20H,(20H20H)=AFH=AFH,执执行行指令:指令: A

41、DD A,R0ADD A,R0 结果结果: :(A A)=34H=34H,Cy=1Cy=1,Ac=1Ac=1,OV=1OV=1,P=1P=1注注意意:由由于于位位7 7有有进进位位,而而位位6 6无无进进位位,所所以以标标志位志位OV=1 OV=1 猩靶坠辗亏美醚奋怀先序仔犹肇雨搔亢冗满走狰叙盔现稻漏功谤峦纫嚼沮第3章MCS51的指令系统第3章MCS51的指令系统2 2带进位加法指令带进位加法指令标志位标志位CyCy参加运算,因此是三个数相加。共参加运算,因此是三个数相加。共4 4条:条: ADDCADDCA,RnA,Rn;(A)+(Rn)+CA;(A)+(Rn)+CA,n=0n=07 7 A

42、DDCADDCA,directA,direct;(A)+(direct)+CA ;(A)+(direct)+CA ADDCADDCA,Ri A,Ri ;(A)+(Ri)+CA;(A)+(Ri)+CA,i=0,1i=0,1 ADDC ADDCA,#data A,#data ;(A)+#data+CA;(A)+#data+CA 例:例:(A A)=85H,=85H,(20H20H)=FFH,Cy=1=FFH,Cy=1,执行指令:,执行指令: ADDC A,20HADDC A,20H结结果果为为: :(A A)=85H=85H,Cy=1Cy=1,Ac=1Ac=1,OV=0OV=0,P=1 P=1 (

43、A A中中1 1 的位数为奇数)的位数为奇数)迢活撇专损脸酸潍昔舍桥屉震搅人圾椽肋穴委书护建兵荫氯凭防赶愉演梅第3章MCS51的指令系统第3章MCS51的指令系统3 3增增1 1指令指令 5 5条增条增1 1指令:指令: INC AINC A INC Rn ;n=0INC Rn ;n=07 7INC direct INC direct INC Ri ;i=0,1 INC Ri ;i=0,1 INC DPTRINC DPTR不影响不影响PSWPSW中的任何标志中的任何标志。第第5 5条条指指令令INC INC DPTRDPTR,是是1616位位数数增增1 1指指令令。指指令令首首先先对对低低8

44、8位位指指针针DPLDPL的的内内容容执执行行加加1 1的的操操作作,当当产产生生溢溢出出时时,就就对对DPHDPH的的内内容容进进行行加加1 1操操作作,并并不不影影响响标标志志CyCy的的状状态。态。众卜而楷贵康及社嘱冀弊畦牡衅恰毁椭梢谨庞钓托荡者驼航牵酌苯铁逮哦第3章MCS51的指令系统第3章MCS51的指令系统4 4十进制调整指令十进制调整指令用于对用于对BCDBCD码十进制数加法运算结果的内容修正。码十进制数加法运算结果的内容修正。 指令格式:指令格式: DA A DA A两两个个BCDBCD码码按按二二进进制制相相加加之之后后,必必须须经经本本指指令令的的调调整整 才能得到正确的压

45、缩才能得到正确的压缩BCDBCD码的和数。码的和数。二二进进制制数数的的加加法法运运算算原原则则并并不不能能适适用用于于十十进进制制数数的的加加法运算,有时会产生错误结果。例如:法运算,有时会产生错误结果。例如:(a a)3+6=9 0011+0101=1001 3+6=9 0011+0101=1001 运算结果正确运算结果正确(b b)7+8=15 0111+1000=1111 7+8=15 0111+1000=1111 运算结果不正确运算结果不正确(c c)9+8=17 1001+1000=00001 C=1 9+8=17 1001+1000=00001 C=1 结果不正确结果不正确判匙邯

46、衡迪绊催吗锨描最快冤铝筏迹护蔑疤书氰沪幻褂饱匀朵灌春时慎末第3章MCS51的指令系统第3章MCS51的指令系统二二进进制制数数加加法法指指令令不不能能完完全全适适用用于于BCDBCD码码十十进进制制数数的的加加法运算,法运算,对结果作有条件的修正对结果作有条件的修正 十进制调整十进制调整 出错原因和调整方法:出错原因和调整方法: BCDBCD码只用了了其中的码只用了了其中的1010个,个,6 6个没用到的编码。个没用到的编码。(10101010,10111011,11001100,11011101,11101110,11111111)为)为无效码无效码 凡结果进入或者跳过无效码编码区时,其结果

47、就是错凡结果进入或者跳过无效码编码区时,其结果就是错误的误的。贰摩囤牙武斗强脑吟划呆易项替形颠捍蛹冶旧肛噬泞畴潍戒让旨跌毫营藕第3章MCS51的指令系统第3章MCS51的指令系统调整的方法是把结果加调整的方法是把结果加6 6调整调整,即所谓十进制调整修正。,即所谓十进制调整修正。修正方法应是:修正方法应是:(a a)累累加加器器低低4 4位位大大于于9 9或或辅辅助助进进位位位位Ac=1Ac=1,则则进进行行低低4 4位加位加6 6修正。修正。(b b)累累加加器器高高4 4位位大大于于9 9或或进进位位位位Cy=1Cy=1,则则进进行行高高4 4位位加加6 6修正。修正。(c c)累累加加器

48、器高高4 4位位为为9 9,低低4 4位位大大于于9 9,则则高高4 4位位和和低低4 4位位分别加分别加6 6修正。修正。切茁恋酸乞找干标枉走肚濒关恩寓弄财绚变居垒惰潦测酉赛达幢漏雕碴显第3章MCS51的指令系统第3章MCS51的指令系统具体是通过执行指令:具体是通过执行指令:DA A DA A 来自动实现的来自动实现的 。例例 (A A)=56H,=56H,(R5R5)=67H=67H,把把它它们们看看作作为为两两个个压压缩缩的的BCDBCD数,进行数,进行BCDBCD数的加法。执行指令:数的加法。执行指令: ADD A,R5ADD A,R5 DA A DA A 由于高、低由于高、低4 4

49、位分别大于位分别大于9 9,所以要分别加,所以要分别加6 6进行进行十进制调整对结果进行修正。十进制调整对结果进行修正。结果为:结果为: (A A)=23H=23H,Cy=1Cy=1 可见,可见,56+67=12356+67=123,结果是正确的。,结果是正确的。5 5带借位的减法指令带借位的减法指令 4 4条指令:条指令: SUBB A,Rn ; SUBB A,Rn ; (A A)- -(RnRn)- CyA- CyA,n=0n=07 7 SUBB A,direct ; SUBB A,direct ; (A A)- -(directdirect)- CyA- CyA 筋骂恰廷扑恍夯岭奶扒空椎

50、贿迄葡萝屹磊指歹唾类炮圆闪劫蚊堕逊砒领璃第3章MCS51的指令系统第3章MCS51的指令系统 SUBB A,Ri;SUBB A,Ri;(A A)- -((Ri)(Ri))- CyA, i=0,1- CyA, i=0,1 SUBB A,#data ; SUBB A,#data ;(A A)-#data - CyA-#data - CyA从累加器从累加器A A中的内容减去指定的变量和进位标志中的内容减去指定的变量和进位标志CyCy的的值,结果存在累加器值,结果存在累加器A A中。中。如果位如果位7 7需借位则置需借位则置“1” Cy“1” Cy,否则清,否则清“0”Cy“0”Cy; 如果位如果位3

51、 3需借位则置需借位则置“1”Ac“1”Ac,否则清,否则清“0”Ac“0”Ac;如果位如果位6 6需借位而位需借位而位7 7不需要借位,或者位不需要借位,或者位7 7需借位,需借位,位位6 6不需借位,则置不需借位,则置“1”“1”溢出标志位溢出标志位OVOV,否则清,否则清“0”OV“0”OV。例例 (A A)=C9H ,=C9H ,(R2R2)=54H,Cy=1=54H,Cy=1,执行指令,执行指令: : SUBB A,R2 SUBB A,R2 综赊绎押经孰毒诉湍欢扼酉赁武瘫蛮独唆止届魔观堂扔企乏牡元袭复倡撇第3章MCS51的指令系统第3章MCS51的指令系统结果:(结果:(A A)=7

52、4H,Cy=0,Ac=0,OV=1=74H,Cy=0,Ac=0,OV=1(位(位6 6向位向位7 7借位)借位) 6 6减减1 1指令指令 4 4条指令:条指令:DEC ADEC A;(A)-1A(A)-1ADEC Rn DEC Rn ;(Rn)-1Rn(Rn)-1Rn,n=0n=07 7DEC directDEC direct;(direct)-1direct(direct)-1directDEC Ri DEC Ri ;(Ri)-1(Ri)-1(RiRi),),i=0,1i=0,1减减1 1指令不影响标志位。指令不影响标志位。 7 7乘法指令乘法指令 MUL AB MUL AB ;ABBAA

53、BBA如果积大于如果积大于255255,则置,则置“1”“1”溢出标志位溢出标志位OVOV 焊山愉头且输咀炬狞究沿拐秃撤奎玄仿淑播忧辞搁耘夷不澡褥脆皑欺尚奄第3章MCS51的指令系统第3章MCS51的指令系统8除法指令除法指令 DIV AB DIV AB ;A/BAA/BA(商),余数(商),余数BB如如果果B B的的内内容容为为“0”“0”(即即除除数数为为“0”“0”),则则存存放放结结果的果的A A、B B中的内容不定,并置中的内容不定,并置“1”“1”溢出标志位溢出标志位OVOV。3.4.3 3.4.3 逻辑运算指令逻辑运算指令1. 1. 简单逻辑操作指令简单逻辑操作指令 (1) CL

54、R A(1) CLR A功能是累加器功能是累加器A A清清“0”“0”。不影响。不影响CyCy、AcAc、OVOV等标志。等标志。 (2) CPL A(2) CPL A功能是将累加器功能是将累加器A A的内容的内容按位逻辑取反按位逻辑取反,不影响标志,不影响标志。 2 2左环移指令左环移指令 RL ARL A输深褥宋蔽泰筛烯倍额酌六镭搭搏颓磨铸碗澡枫埃妙乱粳否斟坊会愧梭柳第3章MCS51的指令系统第3章MCS51的指令系统功能是累加器功能是累加器A A的的8 8位向左循环移位,位位向左循环移位,位7 7循环移入位循环移入位0 0,不影响标志。,不影响标志。 3 3带进位左环移指令带进位左环移指

55、令 RLC ARLC A功能是将累加器功能是将累加器A A的内容和进位标志位的内容和进位标志位CyCy一起向左环一起向左环移一位,移一位,Acc.7Acc.7移入进位位移入进位位CyCy,CyCy移入移入Acc.0Acc.0,不影,不影响其它标志。响其它标志。 4 4右环移指令右环移指令 RR ARR A功功能能是是累累加加器器A A的的内内容容向向右右环环移移一一位位,Acc.0Acc.0移移入入Acc.7Acc.7,不影响其它标志。,不影响其它标志。 5 5带进位环移指令带进位环移指令 谓亲检靖计苫厩霖地馒阵玛疫摔况步哗翰刽冈硒朴橱贼鬼营老罪央蛙纯移第3章MCS51的指令系统第3章MCS5

56、1的指令系统 RRC ARRC A这这条条指指令令的的功功能能是是累累加加器器A A的的内内容容和和进进位位标标志志CyCy一一起起向右环移一位,向右环移一位,Acc.0Acc.0进入进入CyCy,CyCy移入移入Acc.7Acc.7。 6 6累加器半字节交换指令累加器半字节交换指令 SWAP ASWAP A将将累累加加器器A A的的高高半半字字节节(Acc.7Acc.7Acc.4Acc.4)和和低低半半字字节节(Acc.3Acc.3Acc.0Acc.0)互换。)互换。 例例 (A A)=0C5H=0C5H,执行指令:,执行指令: SWAP A SWAP A 结果:(结果:(A A)=5CH=

57、5CH嚼盎倒椒诀丁槛锁雾险包躁撑剿敦潦帛哥咱妄罗臀烬器措壹沤棵炼风贼酬第3章MCS51的指令系统第3章MCS51的指令系统7 7逻辑与指令逻辑与指令 ANL A,Rn ; ANL A,Rn ; (A A)(RnRn)AA,n=0n=07 7 ANL A,direct ; ANL A,direct ; (A A)(directdirect)AA ANL A,#data ; ANL A,#data ; (A A)#dataA#dataA ANL A,Ri ; ANL A,Ri ; (A A)((RiRi))A)A,i=0i=01 1 ANL direct,A ; ANL direct,A ; (d

58、irectdirect)(A)direct(A)direct ANL ANL direct,#data direct,#data ; ; (directdirect)#datadirect#datadirect例例 (A A)=07H,=07H,(R0R0)=0FDH,=0FDH,执行指令:执行指令: ANL A,R0ANL A,R0 结果:(结果:(A A)=05H=05H娩瞻铁爱察陈骨连焉铰坍早勿坚痢匙弃佰迸腐襄逛福担惜晕佩怖谐框衫苔第3章MCS51的指令系统第3章MCS51的指令系统8.8.逻辑或指令逻辑或指令 ORL A,Rn ORL A,Rn ;(A)(A)(RnRn)A A ,n=

59、0n=07 7 ORL A,direct ORL A,direct ;(A)(A)(directdirect)AA ORL A,#data ORL A,#data ;(A)(A) dataA dataA ORL A,Ri ORL A,Ri ; (A) (A)(Ri)A(Ri)A,i=0,1i=0,1 ORL direct,A ORL direct,A ;(;(directdirect)(A)directA)direct ORL direct,#data ORL direct,#data;(;(directdirect)#datadirect#datadirect 例例 (P1P1)=05H,=

60、05H,(A A)=33H=33H,执行指令,执行指令 ORL P1,AORL P1,A结果:(结果:(P1P1)=37H =37H 诌讫编陶欣隔裂添乘棒辣生色与胆瑚欲沤须呜姻卒语蹿孺弓费茧壁仅削铃第3章MCS51的指令系统第3章MCS51的指令系统 9 9逻辑异或指令逻辑异或指令 XRL A,Rn XRL A,Rn ;(A) (Rn)A(A) (Rn)A XRL A,direct XRL A,direct ;(A) (A) (directdirect)AA XRL A,Ri XRL A,Ri ;(A)(A)((RiRi))A ,i=0,1)A ,i=0,1 XRL A,#data XRL A

61、,#data ;(A)#dataA(A)#dataA XRL direct,A XRL direct,A ;(;(directdirect)(A A)directdirect XRL direct,#data XRL direct,#data ;(;(directdirect) #data direct #data direct 谁租奉尿束抠结隧勾读樊斑夫够迈咒甭盛瘁里导滔帜详鹤秒畅淘淳爬堑犁第3章MCS51的指令系统第3章MCS51的指令系统例例 (A A)=90H,=90H,(R3R3)=73H =73H 执行指令:执行指令: XRL A,R3XRL A,R3结果:(结果:(A A)=E3

62、H =E3H 3.4.4 3.4.4 控制转移类指令控制转移类指令 1 1无条件转移指令无条件转移指令 AJMP addrllAJMP addrll2K2K字节范围内字节范围内的无条件跳转指令,的无条件跳转指令, 64K 64K程序存储器空程序存储器空间分为间分为3232个区,每区个区,每区2K2K字节,字节,转移的目标地址必须转移的目标地址必须与与AJMPAJMP下一条指令的地址的高下一条指令的地址的高5 5位地址码位地址码A15A15A11A11相相同。同。执行指令时,先执行指令时,先PCPC加加2 2,然后把,然后把addrlladdrll送入送入PC.10PC.10PC.0PC.0,P

63、C.15PC.15PC.11PC.11保持不变,程序转移到目标地保持不变,程序转移到目标地址。址。托匣李呈钩驱猿喷袒悦迟憋余酗拙氖氨奏柜甥姿毫定邻瘦睹亮赚满垮肮刘第3章MCS51的指令系统第3章MCS51的指令系统本指令是为能与本指令是为能与MCS-48MCS-48的的JMPJMP指令兼容而设的。指令兼容而设的。2 2相对转移指令相对转移指令 SJMP relSJMP rel实现的程序转移是双向的。实现的程序转移是双向的。在编写程序时,直接写上要转向的目标地址标号就可在编写程序时,直接写上要转向的目标地址标号就可以。以。例如:例如: LOOPLOOP:MOV AMOV A,R6 R6 SJMP

64、 LOOPSJMP LOOP 程序在汇编时,由汇编程序自动计算和填入偏移量。程序在汇编时,由汇编程序自动计算和填入偏移量。 不咨啄缀松毖敷察坠菲熏棠涉捍琉轩霉速堰纱旺凌庙钳旁孕停愈欺蟹惦佯第3章MCS51的指令系统第3章MCS51的指令系统手工汇编时,偏移量手工汇编时,偏移量relrel的值则需程序设计人员计算。的值则需程序设计人员计算。3 3长跳转指令长跳转指令 LJMP addr16LJMP addr16指指令令执执行行时时把把指指令令的的第第二二和和第第三三字字节节分分别别装装入入PCPC的的高高位位和和低低位位字字节节中中,无无条条件件地地转转向向addr16addr16指指出出的的目

65、目标标地地址址。目标地址可以在目标地址可以在64K64K程序存储器地址空间的任何位置。程序存储器地址空间的任何位置。4 4间接跳转指令间接跳转指令 JMP A+DPTRJMP A+DPTR醛兵吠掷甥鼠他语惮术站诽惧钡哑躇促灯线吱亲谊劲嘿妄尝碟跃诱铺羚酶第3章MCS51的指令系统第3章MCS51的指令系统由由A A中中8 8位位无无符符号号数数与与DPTRDPTR的的1616位位数数内内容容之之和和来来确确定定。以以DPTRDPTR内容作为基址,内容作为基址,A A的内容作变址。的内容作变址。给给A A赋予不同的值,即可实现程序的多分支转移。赋予不同的值,即可实现程序的多分支转移。5条件转移指令

66、条件转移指令 规定的条件满足,则进行转移,条件不满足则顺序执规定的条件满足,则进行转移,条件不满足则顺序执行下一条指令。行下一条指令。当条件满足时,把当条件满足时,把PCPC装入下一条指令的第一个字节地装入下一条指令的第一个字节地址,再把带符号的相对偏移量址,再把带符号的相对偏移量relrel加到加到PCPC上,计算上,计算出目标地址。出目标地址。顷苗奴溃筷东薛山划胜牺般品盲纷喇垦月筒弟档皂殷掐是数较秘祥督赡央第3章MCS51的指令系统第3章MCS51的指令系统 JZ relJZ rel;如果累加器为;如果累加器为“0”“0”,则转移,则转移JNZ relJNZ rel;如果累加器非;如果累加

67、器非“0”“0”,则转移,则转移 6 6比较不相等转移指令比较不相等转移指令CJNE A,direct,relCJNE A,direct,relCJNE A,#data,relCJNE A,#data,relCJNE Rn,#data,relCJNE Rn,#data,relCJNE Ri,#data,relCJNE Ri,#data,rel比较前面两个操作数的大小,如果它们的值不相等则比较前面两个操作数的大小,如果它们的值不相等则转移。转移。愉惟形蓖蹲悸虑绰律抿姬携祟枚聪深迟榆贡细遮言稍椅麓住痕枕在魁钻距第3章MCS51的指令系统第3章MCS51的指令系统如果第一操作数(无符号整数)小于第二

68、操作数(无如果第一操作数(无符号整数)小于第二操作数(无符号整数),则置进位标志位符号整数),则置进位标志位CyCy,否则清,否则清“0”Cy“0”Cy。7 7减减1 1不为不为0 0转移指令转移指令这这是是一一组组把把减减1 1与与条条件件转转移移两两种种功功能能结结合合在在一一起起的的指指令。共两条指令:令。共两条指令:DJNZ Rn,relDJNZ Rn,rel;n=0;n=07 7DJNZ direct,rel DJNZ direct,rel 将源操作数(将源操作数(RnRn或或directdirect)减)减1 1,结果回送到,结果回送到RnRn寄存寄存器或器或directdirec

69、t中去。如果结果不为中去。如果结果不为0 0则转移。允许程序则转移。允许程序员把寄存器员把寄存器RnRn或内部或内部RAMRAM的的directdirect单元用作程序单元用作程序障厚耐椿煞这腹女症熙密铺狮疼响韩贡拳弧筑充荆烁绒彻包蔡肪侦肥挝娘第3章MCS51的指令系统第3章MCS51的指令系统循环计数器。主要用于控制程序循环。以减循环计数器。主要用于控制程序循环。以减1 1后是否后是否为为“0”“0”作为转移条件,即可实现按次数控制循环。作为转移条件,即可实现按次数控制循环。8 8调用子程序指令调用子程序指令(1)(1)短调用指令短调用指令ACALL addrllACALL addrll与与

70、AJMPAJMP指指令令相相类类似似,是是为为了了与与MCS-48MCS-48中中的的CALLCALL指指令令兼兼容而设的。容而设的。(2)(2)长调用指令长调用指令LCALL addr16LCALL addr169 9子程序的返回指令子程序的返回指令RETRET 组沥势尹遍虚阂吻娄乓匣碴凹肝幸官敢斌险搬骏栈势逼标轴拯层芜甭纺缎第3章MCS51的指令系统第3章MCS51的指令系统执行本指令时:执行本指令时:(SPSP)PCHPCH,然后(,然后(SPSP)-1-1SPSP(SPSP)PCLPCL,然后(,然后(SPSP)-1-1SPSP功能是从堆栈中退出功能是从堆栈中退出PCPC的高的高8 8

71、位和低位和低8 8位字节,把栈指位字节,把栈指针减针减2 2,从,从PCPC值开始继续执行程序。值开始继续执行程序。1010中断返回指令中断返回指令RETIRETI功功能能与与RETRET指指令令相相似似,两两指指令令不不同同之之处处,是是本本指指令令清清除除了了中中断断响响应应时时,被被置置“1”“1”的的MCS-51MCS-51内内部部中中断断优优先级寄存器的优先级状态。先级寄存器的优先级状态。1111空操作指令空操作指令NOPNOP 糯奇敏撒柴垫疥蒂轨沥圃史铝喘妮芒由褪呀援鼎扫揖军攀磁宅正趴涵挝壳第3章MCS51的指令系统第3章MCS51的指令系统3.4.5 3.4.5 位操作指令位操作

72、指令 1.1.数据位传送指令数据位传送指令 MOV C,bitMOV C,bit MOV bit,C MOV bit,C 例例 MOV C,06HMOV C,06H ;(20H).6Cy(20H).6Cy06H06H是内部是内部RAM 20HRAM 20H字节位字节位6 6的位地址。的位地址。 MOV P1.0,CMOV P1.0,C ;CyP1.0CyP1.0 2 2位变量修改指令位变量修改指令 CLR CCLR C;清;清“0”Cy“0”Cy CLR bit CLR bit;清;清“0”bit“0”bit位位 CPL C CPL C;CyCy求反求反 惊姻贬晰泳倚宰堪桩权弄宠描友标距识嚏绿

73、诊税嫩荷雏斋钝咏夜癌篮戏元第3章MCS51的指令系统第3章MCS51的指令系统 CPL bitCPL bit ;bitbit位求反位求反 SETB C SETB C;置;置“1” Cy“1” Cy SETB bit SETB bit ;置;置“1” bit“1” bit位位这组指令将操作数指出的位清这组指令将操作数指出的位清“0”“0”、求反、置、求反、置“1”“1”, 不影响其它标志。不影响其它标志。 例例 CLR C CLR C ;0Cy0Cy CLR 27H CLR 27H ;00(24H24H).7.7位位 CPL 08H CPL 08H ;(21H21H).0.0位位 SETB P1

74、.7 SETB P1.7 ;1P1.71P1.7位位 3 3位变量逻辑与指令位变量逻辑与指令 ANL C,bit ANL C,bit ;bitCyCybitCyCy ANL C,/bit ANL C,/bit; ;/bit CyCy/bit CyCy詹燕逸萄歌棵峭摩锁趋如新舅兔边笔蛊帅瞧辰垒阔孕试锹邱省貌课既粤乱第3章MCS51的指令系统第3章MCS51的指令系统 4 4位变量逻辑或指令位变量逻辑或指令 ORL C,bitORL C,bit ORL C,/bitORL C,/bit 5 5条件转移类指令条件转移类指令JC rel JC rel ;如果进位位;如果进位位Cy=1Cy=1,则转移,

75、则转移JNC rel JNC rel ;如果进位位;如果进位位Cy=0Cy=0,则转移,则转移JB bit,rel JB bit,rel ;如果直接寻址位;如果直接寻址位=1=1,则转移则转移JNB bit,rel JNB bit,rel ;如果直接寻址位;如果直接寻址位=0=0,则转移则转移JBC bit,rel JBC bit,rel ;如果直接寻址位;如果直接寻址位=1=1, 则转移,并清则转移,并清0 0直接寻址位直接寻址位 帖闯鲜禄鸦凝结榴喜厢巢戏韵霜赤喀遏窥刻萎泳芭孟意彼慑齐乱敷患温矾第3章MCS51的指令系统第3章MCS51的指令系统表表3-23-2至表至表3-63-6(P61-

76、P64P61-P64)列出了按)列出了按指令功能指令功能排列的排列的全部指令及功能的简要说明,以及全部指令及功能的简要说明,以及指令长度、执行指令长度、执行的时间以及指令代码的时间以及指令代码(机器代码)。(机器代码)。读者可根据指令助记符读者可根据指令助记符, ,迅速查到对应的指令代码迅速查到对应的指令代码(手工汇编手工汇编)。也可根据指令代码迅速查到对应的)。也可根据指令代码迅速查到对应的指令助记符(指令助记符(手工反汇编手工反汇编)。)。应熟练地掌握这些指令表的使用,因为这是使用应熟练地掌握这些指令表的使用,因为这是使用MCS-MCS-5151汇编语言进行程序设计的基础。汇编语言进行程序设计的基础。 铀兴恍镁垒翔杜稳升曹边哪硫蜗吠坑打盲饲烙挚槛扳倦雕申徽炊质叭妄碟第3章MCS51的指令系统第3章MCS51的指令系统表3-2汾议狼靡轰内界杏舜苹瘪喉趁咒匆砌迈咙岩储题售棍窖降灌碘卫茎甩灵冷第3章MCS51的指令系统第3章MCS51的指令系统

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号