第二章 MCS-51指令系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章:MCS-51指令系统目的要求:通过本章学习,掌握汇编语言指令的含义及其助记符的使用,汇编语言程序设计的基本格式与设计方法。本章教学重点:MCS-51单片机指令系统本章课时:6课时指令系统:MCS-51指令系统专用于MCS-51系列的单片机,是一个具有255种操作代码的集合。表达这些代码时,只要熟记42中助记符。它代表了33种功能,共有111种指令.同一种指令所对应的操作码在MCS-51指令系统中可以多至8种.本章主要内容:2.1MCS-51指令系统简介2.2数据传送类(28条)2.3算术操作类(24条)2.4逻辑操作类指令(续4)2.5控制程序转移类(17条)2.6布尔变量操作类(17条)本讲内容:基本结构复习指令系统简介和寻址方式部分指令介绍本讲小结单片机基本结构复习1.RAM和ROM的存储空间:128、64K和64K2.4个八位I/O口:P0、P1、P2、P33.外部硬件支持:复位,时钟,内外ROM选择2.1MCS-51指令系统简介1.基本指令111条2.单字节、双字节、三字节3.单机器周期、双机器周期、四机器周期4.数据传送,算术、逻辑运算,控制转移,位操作类操作数5.基本构成:操作码2.1MCS-51指令系统简介1.数据传送类(28条);2.算术操作类(24条);3.逻辑操作类(25条);4.控制程序转移类(17条)5.布尔变量操作类(17条);2.2.1MCS-51指令系统简介2.2数据传送类(28条)内部数据传送指令(16条)栈操作指令(2)累加器与外部数据传送指令(4)查表指令(2)字节交换(3)半字节交换(1)2.2.1内部数据传送指令(16条)MOV目的字节,原字节以A为目的以Rn为目的以direct为目的以@Ri为目的16位数据传送指令2.2数据传送类以A为目的(4条)MOVA,Rn寄存器送累加器MOVA,@Ri内部RAM送累加器MOVA,direct直接寻址字节送累加器MOVA,#data立即数送累加器2.2数据传送类内部数据传送指令(16条)(1)寄存器送累加器格式:MOVA,Rn代码:E8H~EFH操作:(A)←(Rn),n=0~711101rrr说明:Rn在内部数据存贮器中的地址由当前的工作寄存器区选择位RS1、RS0确定,可以是00H~07H、08H~0FH、10H~17H或18H~1FH。(以后指令中对Rn不再重复说明)。2.2数据传送类内部数据传送指令(16条)(2)内部RAM送累加器格式:MOVA,@Ri代码:E6H~E7H操作:(A)←((Ri)),i=0,1说明:Ri在内部数据存贮器中的地址由当前的工作寄存器区选择位RS1、RS0确定,可以是01H,02H、08H,09H,10H,11H或18H,19H。(以后指令中对Rn不再重复说明)。该指令可以访问内部RAM空间(0~255单元),对于8051子系列为0~127单元。1110011i2.2数据传送类内部数据传送指令(16条)(3)直接寻址字节送累加器格式:MOVA,direct代码:E5H操作:(A)←(direct)说明:代码的第二字节为直接地址,可以指向专用寄存器及内部RAM(0~127单元)。它与指令一起放在程序存贮器中,执行该指令时,与操作码一起取到CPU,经地址译码访问指定单元。direct可以为P0~P3端口地址11100101直接地址2.2数据传送类内部数据传送指令(16条)(4)立即数送累加器格式:MOVA,#data代码:74H操作:(A)←#data说明:目的操作数采用寄存器寻址方式。01110100立即数2.2数据传送类内部数据传送指令(16条)以Rn为目的(3)MOVRn,A累加器送寄存器MOVRn,direct直接寻址字节送寄存器MOVRn,#data立即数送寄存器2.2数据传送类内部数据传送指令(16条)(1)累加器送寄存器格式:MOVRn,A代码:F8H~EFH操作:(Rn)←(A),n=0~7说明:目的操作数采用寄存器寻址方式。11111rrr2.2数据传送类内部数据传送指令(16条)(2)直接寻址字节送寄存器格式:MOVRn,direct代码:A8H~AFH操作:(Rn)←(direct),n=0~710101rrr直接地址2.2数据传送类内部数据传送指令(16条)(3)立即数送寄存器格式:MOVRn,#data代码:78H~7FH操作:(Rn)←#data,n=0~701111rrr立即数2.2数据传送类内部数据传送指令(16条)以direct为目的MOVdirect,A累加器送直接寻址字节MOVdirect,Rn寄存器送直接寻址字节MOVdirect,direct直接寻址字节送直接寻址字节MOVdirect,@Ri内部RAM送直接寻址字节MOVdirect,#data立即数送直接寻址字节2.2数据传送类内部数据传送指令(16条)(1)direct,A累加器送直接寻址字节格式:MOVdirect,A代码:F5H操作:(direct)←(A)说明:direct可为P0~P3端口地址。11110100直接地址2.2数据传送类内部数据传送指令(16条)(2)direct,Rn寄存器送直接寻址字节格式:MOVdirect,Rn代码:88H~8FH操作:(direct)←(Rn),n=0~710001rrr直接地址2.2数据传送类内部数据传送指令(16条)(3)直接寻址字节送直接寻址字节格式:MOVdirect,direct代码:85H操作:(direct)←(direct)说明:这是一条3字节指令,代码的第二、三字节分别为源操作数和目的操作数的绝对地址。指令的功能很强,它能实现内部RAM之间、专用寄存器之间或专用寄存器与内部RAM之间的直接数据传送。而执行时间仅为2个机器周期。10000101直接地址(源)直接地址(目的)2.2数据传送类内部数据传送指令(16条)(4)内部RAM送直接寻址字节格式:MOVdirect,@Ri代码:86H~87H操作:(direct)←((Ri)),i=0,111110100直接地址2.2数据传送类内部数据传送指令(16条)(5)立即数送直接寻址字节格式:MOVdirect,#data代码:75H操作:(direct)←#data说明:这是一条3字节指令,代码的第二字节为直接地址,第3字节为立即数,在执行指令时,它们与指令的操作码一起从程序存贮器取入CPU。01110101立即数直接地址2.2数据传送类内部数据传送指令(16条)以@Ri为目的MOV@Ri,A累加器送内部RAMMOV@Ri,direct直接寻址字节送内部RAMMOV@Ri,#data立即数送内部RAM2.2数据传送类内部数据传送指令(16条)(1)累加器送内部RAM格式:MOV@Ri,A代码:F6H~F7H操作:((Ri))←A,i=0,11111011i2.2数据传送类内部数据传送指令(16条)(2)直接寻址字节送内部RAM格式:MOV@Ri,direct代码:A6H~A7H操作:((Ri))←(direct),i=0,11010011i直接地址2.2数据传送类内部数据传送指令(16条)(3)立即数送内部RAM格式:MOV@Ri,#data代码:76H~77H操作:((Ri))←#data,i=0,10111011i立即数2.2数据传送类内部数据传送指令(16条)16位数据传送指令MOVDPTR,#data1616位立即数送数据指针2.2数据传送类内部数据传送指令(16条)16位立即数送数据指针格式:MOVDPTR,#data16代码:90H操作:(DPH)←#data15~#data8(DPL)←#data7~#data0说明:这是整个指令系统中唯一的一条16位数据的传送指令,用来设置地址指针。10010000立即数高位立即数低位2.2数据传送类内部数据传送指令(16条)MOVR0,#30HMOVA,@R0MOVR1,AMOVB,@R1MOVP2,P1MOV10H,#20H例1设各单元及寄存器内容如右,执行下列指令后相应单元及寄存器内容如何变化?40H10H30H40H00H10H11001010BP1##HR0##HR1##HA##HB##HP230H40H40H10H11001010B20H2.2数据传送类内部数据传送指令(16条)栈操作指令(2)POPdirect栈顶弹至直接寻址字节PUSHdirect直接寻址字节压入栈顶2.2数据传送类(1)栈顶弹至直接寻址字节格式:POPdirect代码:D0H操作:(direct)((SP))(SP)(SP)-1说明:POP为堆栈操作指令,由栈针SP所寻址的内部RAM单元的内容传送到指令中直接寻址的一个单元中去。然后栈针减1。一般而言,执行此指令不影响标志。11010000直接地址2.2数据传送类栈操作指令(2)(2)直接寻址字节压入栈顶格式:PUSHdirect代码:C0H操作:(SP)(SP)+1(direct)((SP))说明:PUSH也是对栈操作指令,它把指令中直接寻址的一个字节压入到当前栈针加1的单元中去。指令指令不影响标志。110000002.2数据传送类栈操作指令(2)累加器与片外RAM传送(4)MOVXA,@Ri外部RAM送累加器(8位地址)MOVX@Ri,A累加器送外部RAM(8位地址)MOVXA,@DPTR外部RAM送累加器(16位地址)MOVX@DPTR,A累加器送外部RAM(16位地址)2.2数据传送类(1)外部RAM送累加器(8位地址)格式:MOVXA,@Ri代码:E2H~E3H操作:(A)←((Ri)),i=0,1说明:指令执行时,在P3.7引脚上出现RD有效信号,用作外部数据存贮器的读选通信号。P0口上分时输出由Ri指定的8位地址信息及输入该单元的内容。1110001i2.2数据传送类累加器与片外RAM传送(4)(2)累加器送外部RAM(8位地址)格式:MOVX@Ri,A代码:F2H~F3H操作:((Ri))←(A),i=0,1说明:指令执行时,在P3.6引脚上出现有效信号,用作外部数据存贮器的写选通信号。P0口上分时输出由Ri指定的8位地址信息及输入该单元的数据。1111001iWR2.2数据传送类累加器与片外RAM传送(4)(3)外部RAM送累加器(16位地址)格式:MOVXA,@DPTR代码:E0H操作:(A)←((DPTR))说明:指令执行时,P3.7引脚上输出RD有效信号,用作外部数据存贮器的读选通信号.DPTR所包含的16位地址信息由P0(低8位)和P2(高8位)输出,选中单元的数据由P0输入到累加器,P0口分时复用的总线.111000002.2数据传送类累加器与片外RAM传送(4)(4)累加器送外部RAM(16位地址)格式:MOVX@DPTR,A代码:F0H操作:((DPTR))←(A)说明:指令执行时,P3·6引脚上输出WR有效信号,用作外部数据存贮器的写选通信号.DPTR所包含的16位地址信息由P0(低8位)和P2(高8位)输出,累加区的内容由P0输出,P0口作分时复用的总线.111100002.2数据传送类累加器与片外RAM传送(4)例2设计一段程序把内部250(0FAH)单元的内容传送到外部650H单元。MOVDPTR,#0650H;设置地址指针MOVA,0FAH;取出250单元的数MOVX@DPTR,A;送到650H单元内部RAM外部RAM0FAH0650H2.2数据传送类累加器与片外RAM传送(4)查表指令(与外部ROM传送)MOVCA,@A+DPTR程序代码送累加器(相对数据指针)MOVCA,@A+PC程序代码送累加器(相对程序计数器)2.2数据传送类(1)程序代码送累加器(相对数据指针)格式:MOVCA,@A+DPTR代码:93H操作:(A)←((A)+(DPTR))说明:指令首先执行16位无符号数的加法操作,获得基址与变址之和,低8位相

1 / 74
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功