资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1立即寻址方式,2直接寻址方式,3寄存器寻址方式:操作数在寄存器中,4.寄存器间接寻址方式,5相对寻址方式,目的地址=转移指令所在的地址+转移指令的字节数+rel,1立即寻址方式,1,6变址寻址方式:,是以DPTR或PC作基址寄存器,以累加器A作为变址寄存器,7位寻址方式,6变址寻址方式:是以DPTR或PC作基址寄存器,以累加器A,2,数据传送类指令,使用最频繁的一类指令,通用格式:,MOV ,,属“复制”性质,而不是“搬家”,数据传送类指令不影响标志位Cy、Ac和OV,但会影响奇偶标志位P。,数据传送类指令,3,1以累加器为目的操作数的指令,MOV A,#data ;#dataA,MOV A,Rn ;(Rn)A,n=07,MOV A,direct ;(direct)A,MOV A,Ri ;(Ri)A,i=0,1,例如:,MOV A,R6 ;(R6)A,MOV A,70H ;(70H)A,MOV A,R0 ;(R0)A,MOV A,#78H ;78HA,1以累加器为目的操作数的指令,4,2.以Rn为目的操作数的指令,MOV Rn,A ;(A)Rn,n=07,MOV Rn,direct ;(direct)Rn,n=07,MOV Rn,#data ;#dataRn,n=07,功能:是把源操作数的内容送入当前一组工作寄存器区的R0R7中的某一个寄存器。,3.以直接地址direct为目的操作数的指令,MOV direct,A;(A)direct,MOV direct,Rn;(Rn)direct,n=07,MOV direct1,direct2;,MOV direct,Ri;(Ri)direct,MOV direct,#data;#datadirect,2.以Rn为目的操作数的指令,5,功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。,4.以寄存器间接地址为目的操作数的指令,MOV Ri,A ;(A)(Ri),i=0,1,MOV Ri,direct ;(direct)(Ri),MOV Ri,#data ;#data(Ri),5.16位数传送指令,MOV DPTR,#data16 ;#data16DPTR,唯一的16位数据的传送指令,立即数的高8位送入DPH,立即数的低8位送入DPL。,功能:把源操作数送入直接地址指出的存储单元。direct指的,6,6堆栈操作指令,MCS-51内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作堆栈.,堆栈指针SP指出堆栈的栈顶位置。,(1)进栈指令,PUSH direct,先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的内部RAM单元中。,例如:当(SP)=60H,(A)=30H,(B)=70H时,,执行:,PUSH A,CC,;(SP)+1=61HSP,(A)61H,PUSH B ;(SP)+1=62HSP,(B)62H,6堆栈操作指令,7,结果:(61H)=30H,(62H)=70H,(SP)=62H,(2)出栈指令,POP direct,SP指示的栈顶(内部RAM单元)内容送入direct字节单元中,SP减1.,例如:当(SP)=62H,(62H)=70H,(61H)=30H,执行:,POP DPH;(SP)DPH,(SP)-1SP,POP DPL;(SP)DPL,(SP)-1SP,结果:(DPTR)=7030H,(SP)=60H,8,注意:堆栈操作指令是直接寻址指令,PUSH或POP后必须直接跟一个地址,例:PUSH ACC,PUSH 00H,POP ACC,PUSH 00H,注意:堆栈操作指令是直接寻址指令,PUSH或POP后必须直接,9,7.累加器A与外部数据存储器传送指令,MOVX A,DPTR;(DPTR)A,读外部RAM/IO,MOVX A,Ri;(Ri)A,读外部RAM/IO,MOVX DPTR,A;(A)(DPTR),写外部RAM/IO,MOVX Ri,A;(A)(Ri),写外部RAM/IO,功能:读外部RAM存储器或I/O中的一个字节,或把A中一个字节的数据写到外部RAM存储器或I/O中。,注意:1、此类命令会使RD或WR信号有效。,2、外部RAM之间不能直接相互传送数据,必须以A为中介。,7.累加器A与外部数据存储器传送指令,10,8.查表指令,共两条,用于读程序存储器中的数据表格的指令,均采用基址寄存器加变址寄存器间接寻址方式。,(1)MOVC A,A+PC,第4讲数据传送指令课件,11,例如:(A)=30H,执行地址1000H处的指令,1000H:MOVC A,A+PC,本指令占用一个字节,将程序存储器中1031H的内容送入A。,优点:不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。,缺点:表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。,例如:(A)=30H,执行地址1000H处的指令,12,(2)MOVC A,A+DPTR,以DPTR作为基址寄存器,A的内容和DPTR的内容相加得到一个16位的地址,把由该地址指出的程序存储器单元的内容送到累加器A.,例如 (DPTR)=8100H (A)=40H 执行指令,MOVC A,A+DPTR,9字节交换指令,XCH A,Rn,XCH A,direct,XCH A,Ri,(2)MOVC A,A+DPTR,13,例如:,(A)=80H,(R7)=08H,(40H)=F0H,(R0)=30H,(30H)=OFH,执行下列指令:,XCH A,R7 ;(A)与(R7)互换,XCH A,40H ;(A)与(40H)互换,XCH A,R0;(A)与(R0)互换,例如:,14,后:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H,10半字节交换指令,1),XCHD A,Ri,累加器的低4位与内部RAM低4位交换。,例如:(R0)=60H,(60H)=3EH,(A)=59H,执行完 XCHD A,RO 指令,则(A)=5EH,(60H)=39H。,2)SWAP A,累加器的低4位与累加器的高4位相互交换,后:(A)=0FH,(R7)=80H,(40H)=08H,(,15,课堂练习:,1 R0=20H,单片机执行完下列指令后,判断累加器A,R7,20H,21H单元的内容是什么?,MOV A,#18H,MOV R7,#28H,MOV R0,#38H,MOV 21H,#48H,课堂练习:,16,2 已知R1=32H,(30H)=AAH,(31H)=BBH,(32H)=CCH执行完下列指令后A、50H、R6、32H、P1的内容是什么,MOV A,30H,MOV 50H,A,MOV R6,31H,MOV R1,30H,MOV P1,32H,2 已知R1=32H,(30H)=AAH,(31H)=BB,17,3 外部RAM的20H单元中有一个数x,内部RAM的20H单元中有一个数y,编写一段程序让外部RAM的20H单元中的数和内部RAM的20H单元中的数相互交换,4 外部RAM的2000H单元中有一个数x,内部RAM的30H单元中有一个数y,编写一段程序让外部RAM的2000H单元中的数和内部RAM的30H单元中的数相互交换,3 外部RAM的20H单元中有一个数x,内部RAM的20H,18,作业:,1、内部RAM 30H单元中的内容送内部 RAM 35H单元,2、R1内容传送到R0,3、内部RAM 38H单元的内容送P1口,4、外部RAM 0100H单元的内容送SP,5、内部RAM 40H单元的内容送外部RAM 1002H,6、外部RAM 1050H单元的内容送外部RAM 25H单元,作业:,19,
展开阅读全文