1 / 37

第三章 MCS-51 指令系统

第三章 MCS-51 指令系统. 3.1 指令系统概述 3.2 寻址方式 3.3 指令系统. 第三章节 MCS-51 指令系统. MCS-51 系列单片机指令基本情况. 51 系列单片机 指令集含有 111 条 指令 每条指令在程序存储器 ROM 中占据一定 空间 ,以字节为单位 按指令 所占字节数 分类: 单字节 (49 条 ); 双字节 (46 条 );3 字节 (16 条 ) 每条指令在执行时要花去一定的 时间 ,以机器周期为单位 按指令 执行时间 分类: 单周期 (64 条 ); 双周期 (45 条 );4 周期 (2 条 )

preston preston
Download Presentation

第三章 MCS-51 指令系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章MCS-51指令系统 3.1 指令系统概述 3.2 寻址方式 3.3 指令系统

  2. 第三章节MCS-51指令系统 MCS-51系列单片机指令基本情况 • 51系列单片机指令集含有111条指令 • 每条指令在程序存储器ROM中占据一定空间,以字节为单位 • 按指令所占字节数分类: • 单字节(49条);双字节(46条);3字节(16条) • 每条指令在执行时要花去一定的时间,以机器周期为单位 • 按指令执行时间分类: • 单周期(64条);双周期(45条);4周期(2条) • 按指令的功能分类,可分为5大类:数据传送类(29条);算术运算类(24条) 逻辑运算及移位类(24);控制转移类(17条) 位操作类(17条)

  3. ASM-51指令格式 51系列单片机采用ASM-51指令格式,格式如下: [标号:]操作码[目的操作数][,源操作数][;注释] 其中包含: 方括符[ ]表示可选项 标号代表指令所在地址,1-8个字母/数字,“:”结尾 操作码就是指令功能助记符,指令实体 目的操作数 源操作数 注释,以“;”开头

  4. 第一节 MCS-51系列单片机寻址方式 寻址方式:计算机指令中操作数(按地址)获取的方式 MCS-51系列单片机提供了7种寻址方式,如果一条指令中包含多个操作数,就可能用到一种以上的寻址方式 1、立即寻址 2、直接寻址 3、寄存器寻址 4、寄存器间接寻址 5、变址寻址 6、相对寻址 7、位寻址

  5. 1、立即寻址(一) 在指令中直接给出操作数的寻址方式称为立即寻址。这个操作数叫立即数,如指令: MOV A, #3AH 该指令是将立即数3AH送累加器,由于MCS-51单片机的片内存储器是8位存储器,因此立即数一般为8位二进制数。在MCS-51的指令系统中,用#来识别立即数。 程序存储器 PC 74H 操作码 PC+1 3AH 立即数 A 3AH

  6. 01H 01H 23H 23H 1、立即寻址(二) 在有的指令中,也会用到16位立即数,如: MOV DPTR, #0123H 该指令是将16位立即数0123H送数据指针DPTR(用于对16位地址的存储器寻址),DPTR由两个特殊功能寄存器DPH和DPL组成,在后面的寻址方式中会使用到DPTR。 SFR 程序存储器 PC 90H 操作码 PC+1 DPH 高位立即数 PC+2 DPL 低位立即数

  7. 2、直接寻址 在指令中直接给出操作数地址的寻址方式称为直接寻址,直接寻址何以寻址特殊功能寄存器、内部RAM(128字节)和位地址,如: MOV A, 70H; A←(70H) 该指令是将RAM单元70H(地址)的内容送累加器。 内部RAM 程序存储器 70H XX PC 74H 操作码 70H PC+1 直接地址 A XX

  8. 3、寄存器寻址 在指令的操作码中包含了某一工作寄存器的地址(Rn:R0—R7),而操作数则存放在该寄存器中,如: MOV A, R5; A←(R5) 该指令是将R5的内容送累加器。 内部RAM 程序存储器 R7 PC 1101 101 操作码 R6 R5 XX A XX

  9. 4、寄存器间接寻址 在指令的操作码中包含了某一工作寄存器的地址(可用作地址指针的工作寄存器是@Ri:R0、R1),而操作数地址则存放在该寄存器中,如: MOV A, @R1; A←((R1)) 该指令是将R1的内容送作为地址,将该地址所对应的RAM单元的内容送累加器。 内部RAM 程序存储器 XX 68H PC 111001 1 操作码 A XX R1 68H

  10. DPH DPL ALU 5、变址寻址 将PC或DPTR的值作为基地址,将Acc的值作为变址地址,二者向加得到的值作为操作数的地址,如: MOV A, @A+DPTR; A←((A)+(DPTR)) 这种寻址方式一般用于常数表,DPTR的内容为表头地址,Acc的内容就是数据在表中的位置。 SFR 程序存储器 1EH XX A PC 10010011 操作码 02H 02F1H F1H 030FH XX 02F1H +1EH=030FH

  11. 6、相对寻址(一) 相对寻址以PC当前值(PC当前值是执行完指令后的值,也就是当前指令的PC值+指令所占的字节数)作为基地址,与指令中给定的偏移量rel相加,所得的结果作为程序的转移地址,指令中的偏移量rel是一个用补码表示的8位带符号数。相对寻址用于相对转移指令中,如: JZ 30H; 当A=0时,PC←PC+2+rel 当A≠0时,PC←PC+2 //程序顺序执行 该指令以累加器Acc的值是否为0为转移条件,如果为Acc的值0则转移,如果Acc的值不为0则程序顺序执行。程序的执行过程见相对寻址(二)。 在MCS-51的指令系统中,相对转移指令多为2字节指令,因此目的地址一般是PC+2+rel;如果是3字节指令,目的地址是PC+3+rel。偏移量rel是一个8位带符号数,因此程序转移的范围在PC当前值的+127—-128之间。

  12. PC 0123H ALU 6、相对寻址(二) 程序存储器 PC 0100H 60H 操作码 PC rel=30H PC+1 0101H 偏移量 30H 0102H 0132H PC+2 0102H XX 0102H +30H= 0132H

  13. 7、位寻址 MCS-51系列单片机中有专用的位运算指令,可以对位寻址区的每一个位进行数据传送、逻辑运算等操作,如: MOV C, 07H; C←(07H) 该指令属于位操作指令,作用是将位地址为70H的位单元(字节地址20H单元的D7位)传送到位累加器C中。 程序存储器 PC A2H 操作码 PC+1 07H 07 00 X 20H SFR PSW X C

  14. MCS-51指令集(包含5大类功能) 1、数据传送类指令: (29条) 2、算术运算类指令: (24条) 3、逻辑运算及移位类指令: (24条) 4、控制转移类指令: (17条) 5、位操作指令: (17条)

  15. 1、数据传送类指令(一) 片内数据存储器间传送: (MOV—16条) 片外数据存储器送累加器: (MOVX—4条) 程序存储器送累加器: (MOVC—2条) 数据交换: (XCH,XCHD,SWAP—5条) 数据交换: (PUSH,POP—2条)

  16. 1、数据传送类指令(二) 片内数据存储器间传送: (MOV—16条) MOV类指令带有两个操作数,前一个是目的地址,后一个是源操作数。作用是将源操作数送目的地址,如:MOV A, 30H; A←(70H) Acc Direct直接寻址 @Ri间接寻址 Rn寄存器寻址 #data立即数

  17. 1、数据传送类指令(三) 片外数据存储器数据送累加器:(MOVX—4条) MOVX类指令可以在累加器和@Ri或@DPTR(@Ri为8位地址;@DPTR为16位地址)所指向的外部数据存储器间相互传送数据, 具体指令有: MOVX A, @Ri; A←((Ri)) MOVX A, @DPTR; A←((DPTR)) MOVX @Ri, A; ((Ri)) ← A MOVX @DPTR, A; ((DPTR)) ←A

  18. 1、数据传送类指令(四) 程序存储器数据送累加器:(MOVC—2条) MOVX类指令采用变址寻址方式进行寻址。该类指令通常称为查表指令,送入累加器Acc的数据是事先写入的表格数据,通常使用伪指令DB或DW预先定义在程序存储器中, 具体指令有: MOVC A, A+@DPTR; MOVX A, A+@PC;

  19. 1、数据传送类指令(五) 数据交换指令:(5条) XCH A,direct (字节互换) XCH A,@Ri (字节互换) XCH A,Rn (字节互换) XCHD A,@Ri 累加器Acc的低4位与((Ri))的低4位互换,各自的高4位不变 SWAP A 累加器Acc的高低4位互换

  20. 1、数据传送类指令(六) 堆栈操作指令:(2条) • PUSH 压栈指令 • POP 弹栈指令 • 堆栈由特殊功能寄存器SP(堆栈指针)进行管理 • 理论上堆栈在存储器中可以放在任意位置,但为了不和工作寄存器冲突,一般将堆栈放在存储器靠后的位置 • 堆栈指针SP总是指向栈顶(自动变化,见第二章相关内容) • PUSH和POP一般是成对使用的

  21. 2、算术运算类指令(一) 算术运算类指令共有6种24条 加法运算: (ADD—4条) 带进位加法运算: (ADDC—4条) 带借位减法运算: (SUBB—4条) 加1/减1操作: (INC,DEC—9条) 单字节乘/除法运算: (MUL,DIV—2条) 十进制调整: (DA A—1条)

  22. 2、算术运算类指令(二) • 加法运算:(ADD—4条) • 带进位加法运算: (ADDC—4条) • 带借位减法运算: (SUBB—4条) 所有的加法(ADD)、带进位加法(ADDC)、带借位减法(SUBB)运算都是以 Acc为一个加数或被减数,最终结果也存进 Acc 加法(ADD)、带进位加法(ADDC) 以及带借位减法(SUBB)运算中,如果产生了进位或借位,将自动对PSW中的Cy标志位置“1” 带进位加法(ADDC):(A) ←(A)+(Cy)+(第二操作数) 带借位减法(SUBB):(A)←(A)-(Cy)-(第二操作数)

  23. 2、算术运算类指令(三) 加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不同之处在于INC、DEC不影响标志位。 单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间进行。 MUL AB: (A)与(B)相乘, 积为16位数, (A) ←积的高8位; (B) ←积的低8位 DIV AB: (A)除以(B),结果用2字节表示, (A) ←商的整数部分;(B) ←余数

  24. 2、算术运算类指令(四) 十进制调整: (DA A—1条) 用于两个BCD码之间的相加,这条指令只能跟在ADD 或 ADDC 之后 BCD码是指“用二进制表达的十进制数”。如: 十进制数20可以用二进制数00010100B表示; 也可以用十六进制数14H表示; 还可以用BCD码 00100000B 或 20H 表示。 4个二进制位就可以表示一位BCD码: 0000~1001 可表示十进制数(BCD数) 0~9; 8个二进制位就可以表示两位压缩的BCD码: 00000000~10011001 表示 00~99。

  25. 2、算术运算类指令(五) DA A指令的执行过程 若(A)3~0>9或(AC)=1则(A)3~0←(A)3~0+6; 若(A)7~4>9或(CY)=1则(A)7~4←(A)7~4+6; 如:两个十进制数“65”与“58”相加,根据常识,显然其和应当为“123”。 MOV A, #65H ADD A, #58H DA A 结果:(A) = 23H (Cy) = 1 6 5 0110 0101 5 8 0101 1000 +) +) 6 6 0110 0110 18 19 0010 0011 1 2 3

  26. 3、逻辑运算及移位类指令(一) 该类指令共有5种24条 逻辑与运算: (ANL—6条) 逻辑或运算: (ORL—6条) 逻辑异或运算: (XRL—6条) 累加器清零/取反: (CLR,CPL—2条) 累加器移位操作: (RL,RLC,RR,RRC—4条)

  27. 3、逻辑运算及移位类指令(二) 逻辑与(ANL),逻辑或(ORL),逻辑异或(XRL): 累加器清零/取反操作 (CLR,CPL—2条) CLR A —对累加器清零1 Byte 1 Tm CPL A ——对累加器按位取非1 Byte 1 Tm

  28. 3、逻辑运算及移位类指令(三) 逻辑运算指令在程序中的应用(下面的例子认为Acc的内容为9AH) 逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH 逻辑或ORL运算用于对某些位进行置1或者保留: 例: ORL A, #0FH; 则(A) = 9FH 逻辑异或XRL运算用于对某些位进行取反或者保留: 例: XRL A, #0FH; 则(A) = 95H (A)  1001 1010 #0FH  0000 1111 95H  1001 0101

  29. 3、逻辑运算及移位类指令(四) 累加器移位操作: (RL,RLC,RR,RRC—4条) RL A循环右移 累加器Acc RR A循环左移 累加器Acc RLC A带进位循环右移 累加器Acc Cy RRC A带进位循环左移 Cy 累加器Acc

  30. 4、控制转移类指令(一) 控制转移类指令用于对程序的执行顺序进行控制(即改变PC指针的当前值),该类指令共有4种17条 无条件转移:(LJMP,AJMP,SJMP,JMP—4条) 条件转移(判断跳转):(JZ,JNZ,CJNE,DJNZ—8条) 子程序调用及返回:(LCALL,ACALL,RET,RETI—4条) 空操作:(NOP—1条) “消耗”一个机器周期

  31. 4、控制转移类指令(二) 无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16长跳转指令 ——可在64K范围内跳转 AJMP addr11 绝对跳转指令 ——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令 ——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令 ——可在以DPTR为基址 + A为偏移量 之和所指向的64K程序范围内跳转

  32. 4、控制转移类指令(三) 条件转移:(JZ,JNZ,CJNE,DJNZ—8条) JZ rel JNZ rel ——根据Acc的内容是否为0决定是否跳转 DJNZ direct, rel DJNZ Rn, rel ——将direct(或Rn)里的内容减 1,结果不 等于0就跳转;等于0则不跳转继续执行 程序

  33. 4、控制转移类指令(四) 条件转移: CJNE A,#data, rel CJNE A,direct,rel CJNE @Ri,#data, rel CJNE Rn,#data, rel ——将A(或@Ri,或Rn)与#data(或direct)相比 较,其值不相等就跳转;相等则不跳转,继 续执行程序

  34. 4、控制转移类指令(五) 子程序调用及返回:(LCALL,ACALL,RET,RETI—4条) LCALL addr16 子程序长调用指令 ——可在64K范围内调用子程序 ACALL addr11 子程序绝对调用指令 ——可在指令所在的2K范围内调用子程序 RET子程序返回指令 ——子程序结束并返回调用的下一条指令 RETI中断服务子程序返回指令 ——中断结束/返回被打断处的下一条指令

  35. 5、位操作指令(一) 该类指令共有17条 位传送: (MOV—2条) 位清零/置位:(CLR,SETB—4条) 位逻辑与/或/非运算:(ANL,ORL,CPL—6条) 位条件转移:(JC,JNC,JB,JNB,JBC—5条)

  36. 5、位操作指令(二) 位传送指令(2条): MOV C, bit—— (C)(bit) MOV bit, C—— (bit)(C) 注: bit表示位地址 位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1” 位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算

  37. 5、位操作指令(三) 判位条件转移指令(5条): JC rel —— (Cy)=“1”就跳转;否则不跳转 JNC rel —— (Cy)≠“1”就跳转;否则不跳转 JB bit,rel —— (bit)=“1”就跳转;否则不跳转 JNB bit,rel —— (bit)≠“1”就跳转;否则不跳转 JBC bit,rel —— (bit)=“1”就先将其清零再跳转; 否则不动此位也不跳转。

More Related

玻璃钢生产厂家淮安玻璃钢雕塑设计厂家天津水果玻璃钢雕塑图片深圳龙岗玻璃钢雕塑公司合肥大型玻璃钢雕塑广东大型主题商场美陈有哪些人物玻璃钢雕塑价格行情熊猫商场美陈出口商场美陈雕塑厂家玻璃钢蚂蚁雕塑摆件成都卡通玻璃钢动物鹤雕塑龙泉玻璃钢雕塑安徽城市雕塑玻璃钢嘉祥玻璃钢公园雕塑玻璃钢彩色雕塑神像图片冬季商场美陈布置封开玻璃钢造型雕塑价格株洲玻璃钢雕塑价格多少钱清远革命主题玻璃钢卡通雕塑深圳玻璃钢雕塑躺椅商场内衣区域美陈人物雕塑玻璃钢沉思者雕塑南宁景区玻璃钢雕塑厂家玻璃钢花盆种花能活吗景观玻璃钢雕塑哪家有福建玻璃钢孔子雕像雕塑售价内蒙古公园玻璃钢雕塑广东酒店艺术玻璃钢雕塑厂家上海玻璃钢雕塑工作室湖南省玻璃钢雕塑厂模块丽水玻璃钢仿铜雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化