单片机第3章复习资料

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

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

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

资源描述

第3章AT89C51的指令系统第3章AT89C51指令系统何为指令?CPU按照人们的意图来完成某种操作的命令。指令系统:一台计算机的CPU所能执行的全部指令的集合。第三章AT89C51指令系统本章主要内容:基本概念指令寻址方式汇编语言的指令系统第三章AT89C51指令系统一、指令的基本概念及格式介绍第三章AT89C51指令系统汇编语言指令的书写格式[标号:]操作码[操作数1][,操作数2][,操作数3][;注释]◆标号:用符号表示的该条指令的首地址,根据需要设置。位于一条指令(语句)的开头,以冒号结束。它以英文字母开头,由字母、数字、下划线等组成。◆操作码:操作码规定指令实现何种功能(传送、加…)操作。是由助记符表示的字符串,是任一指令不可缺少的部分。◆操作数:操作数可以是被传送的数(立即数),或数在内RAM中的地址,寄存器,转移的指令地址,…。可以采用字母、字符和数字等多种表示形式。各操作数之间要用“,”号分开。◆注释:为便于阅读而对指令附加的说明语句。必须以分号“;”开始。可以采用字母、数字和汉字等多种表示形式。第三章AT89C51指令系统汇编语言常用符号指令系统中还使用了一些符号。这些符号的含义如下:Rn—当前选中的工作寄存器组中的8个寄存器R0~R7(n=0~7)Ri—当前选中的工作寄存器组中的2个寄存器R0、R1(i=0,1).direct—8位直接地址。#data8—包含在指令中的8位二进制数。#data16—包含在指令中的16位二进制数。Addr16—16位二进制地址,用于LCALL、LJMP……中Addr11—用于ACALL和AJMP指令中。rel—在相关的汇编语言指令中讲解它的意义。DPTR—数据指针,可用作16位二进制的地址寄存器。第三章AT89C51指令系统汇编语言常用符号bit—位,内部RAM(包括特殊功能寄存器)中的可寻址位。A—累加器。B—特殊功能寄存器,常用于乘除法指令MUL和DIV中。C—进位标志或进位位,或位处理器中的累加器。也可用Cy表示。@—间址寄存器或基址寄存器的前缀,如@Ri,@DPTR。/—位操作的前缀,表示对该位操作数取反,如/bit。(×)—×中的内容。((×))—×中内容为地址的其中的内容。←用箭头右边的内容取代箭头左边的内容。$—指本条指令的首地址。第三章AT89C51指令系统二、伪指令伪指令:用来对汇编过程进行控制,或者对符号、标号赋值的指令。这些指令不被翻译成机器代码。第三章AT89C51指令系统伪指令名称(英文含义)伪指令格式功能ORG(Origin)ORGAddr16汇编程序段起始ENDEND结束汇编DB(DefineByte)DB8位二进制数表定义字节DW(DefineWord)DW16位二进制数表定义字EQU(Equate)字符名称EQU数据或汇编符给左边的字符名称赋值BIT字符名称BIT位地址位地址赋值汇编语言中的伪指令及其作用第三章AT89C51指令系统三、指令寻址方式第三章AT89C51指令系统寻址、寻址方式、寻址存储器范围寻址就是单片机CPU寻找指令中参与操作的数据的地址寻址方式是单片机CPU寻找指令中参与操作的数据地址的方法寻址依据:说明:在没有特别强调的情况下,提到的寻址方式是源操作数的寻址。第三章AT89C51指令系统寻址方式种类(7种):寻址方式寻址存储器范围立即寻址程序存储器ROM直接寻址片内RAM低128B,特殊功能寄存器寄存器寻址工作寄存器R0~R7,A,C,DPTR,AB寄存器间接寻址片内RAM低128B,片外RAM变址寻址程序存储器ROM(@A+DPTR,@A+PC)相对寻址程序存储器ROM(相对寻址指令的下一指令PC值加-128~+127)位寻址片内RAM的20H~2FH字节地址中所有的位,可位寻址的特殊功能寄存器第三章AT89C51指令系统四、汇编语言的指令系统第三章AT89C51指令系统按指令功能可把111种指令分为五类:①数据传送类(29种);②算术操作类(24种);③逻辑操作类(24种);④控制程序转移类(17种);⑤布尔变量操作类(17种),即位操作类指令。第三章AT89C51指令系统1.数据传送指令1).内部RAM数据传送指令(MOV)(16条)表3-4列出了内部RAM数据传送指令、功能操作、机器代码和执行机器周期数。字节源字节内容传送至目的位传送通常为地址常数位传送816(1)、16位传送指令:MOVDPTR,#data16例:MOVDPTR,#1234H;(DPTR)=1234H该指令也可以用两条8位数据传送指令实现:MOVDPH,#12H;(DPH)=12HMOVDPL,#34H;(DPL)=34H,(DPTR)=1234H第三章AT89C51指令系统通用格式:MOV﹤目的字节﹥,﹤源字节﹥data#@RidirectRnA@RidirectRnAMOV源字节目的字节(2)、8位传送第三章AT89C51指令系统给出每条指令执行后的结果MOV23H,#30HMOV12H,#34HMOVR0,#23HMOVR7,12HMOVR1,#12HMOVA,@R0MOV34H,@R1MOV45H,34HMOVDPTR,#6712HMOV12H,DPHMOVR0,DPLMOVA,@R0;(23H)=30H;(12H)=34H;(R0)=23HXXXXXXXXXXXXXXXXXXDPHDPL45H34H23H12HR7R1R0XXXXXXXX3034XXXX23XXXXXXXX3034341223671234343034341223;(R7)=34H;(R1)=12H;(A)=30H;(34H)=34H;(45H)=34H;(DPTR)=6712H;(12H)=67H;(R0)=12H;(A)=67H内部RAM小练习:设片内RAM中(59H)=50H,执行下列程序段:MOVA,59HMOVR0,AMOVA,#0MOV@R0,AMOVA,#25HMOV51H,AMOV52H,#70H问A=?(50H)=?(51H)=?(52H)=?(A)=50H(R0)=50H(A)=00H(50H)=00H(A)=25H(51H)=25H(52H)=70HA=25H(51H)=25H(52H)=70H(50H)=00H第三章AT89C51指令系统2).外部RAM数据传送指令(MOVX)(4条)表3-5列出了外部RAM数据传送指令、功能操作、机器代码和执行机器周期数,它们都是与外RAM有关的数据传送指令。该类指令均涉及对外RAM64K地址单元操作,而指令MOVX@Ri,AMOVXA,@Ri中Ri只提供外RAM地址的低8位地址,所以高8位应由P2提供。①MOVXA,@Ri;((Ri))→(A),i=0、1②MOVXA,@DPTR;((DPTR))→(A)③MOVX@Ri,A;(A)→((Ri)),i=0、1④MOVX@DPTR,A;(A)→((DPTR))第三章AT89C51指令系统强调1.在89C51中,与外部存储器RAM之间进行数据传输时,必须通过A累加器。•①MOVXA,@Ri•②MOVXA,@DPTR•③MOVX@Ri,A•④MOVX@DPTR,Adata#@RidirectRnA@RidirectRnAMOV源字节目的字节89C51内部RAM间直接可以进行数据的传递。外部RAM数据的传递必须通过A累加器。比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。第三章AT89C51指令系统【例】:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。2.要读或写外部的RAM,必须要知道RAM的地址,地址是被直接放在DPTR中的或者Ri中。使用时:①应先将要读或写的地址送入DPTR或Ri中;②用读写命令。MOVDPTR,#0100HMOVXA,@DPTRMOVDPTR,#0200HMOVX@DPTR,A第三章AT89C51指令系统3).ROM数据传送指令(查表指令)(MOVC)(2条)表3-5列出了ROM数据传送指令、功能操作、机器代码和执行机器周期数。均属变址寻址指令,涉及ROM的寻地址空间均为64K。它们在程序中多用于查数据表,故又称查表指令。一般,A中内容称变址,DPTR、PC中内容称基地址。①MOVCA,@A+DPTR;((A)+(DPTR))→A②MOVCA,@A+PC;(PC)+1→(PC),((A)+(PC))→A第三章AT89C51指令系统【例】若(DPTR)=3000H,(A)=20H,执行:MOVCA,@A+DPTR;结果:(A)=((DPTR)+(A))=(3000H+20H)=(3020H)【例】若(PC)=1000H,(A)=20H,执行:MOVCA,@A+PC;结果:(A)=((PC)+1+(A))=(1001H+20H)=(1021H)第三章AT89C51指令系统内RAM(包括特殊功能寄存器)。。。用MOV指令传送外RAM。。。。。。。。。。。。。。用MOVX指令传送ROM。。。。。。。。。。。。。。。用MOVC指令传送三个不同的存储空间用三种不同的指令传送:第三章AT89C51指令系统4).堆栈操作指令(PUSH/POP)(2条)表3-6列出了堆栈操作指令、功能操作、机器代码和执行机器周期数。堆栈是什么?堆栈是在内部RAM中按“后进先出”的规则组织的一片存储区。结构:栈底/栈顶/栈指针要求:只能是直接寻址、操作对象为字节用途:子程序调用保护现场/数据交换第三章AT89C51指令系统指令:①PUSHdirect(SP)+1→(SP),(direct)→(SP)②POPdirect((SP))→(direct),(SP)-1→(SP)压入指令,就是将direct中的内容送入堆栈中弹出指令,就是将堆栈中的内容送回到direct中第三章AT89C51指令系统⑴PUSH指令使用①先将堆栈指针SP的内容0FH加1,指向堆栈顶的一个空单元,此时SP=10H;【例】:PUSH30H;(30H)=2BH,(SP)=0FH具体操作是:②然后将指令指定的直接寻址单元30H中的数据(2BH)送到该空单元中。第三章AT89C51指令系统⑵POP指令使用①先将SP所指单元0FH(栈顶地址)中的数据(4CH)弹出,送到指定的内RAM单元40H,(40H)=4CH;【例】:POP40H;(SP)=0FH具体操作是:②然后SP-1→SP,SP=0EH,SP仍指向栈顶地址。结果:(40H)=4CH,SP=0EH第三章AT89C51指令系统5).数据交换指令(XCH/XCHD/SWAP)(5条)表3-7列出了数据交换指令、功能操作、机器代码和执行机器周期数。①XCHA,Rn;(A)←→(Rn),n=0~7②XCHA,@Ri;(A)←→((Ri)),i=0、1③XCHA,direct;(A)←→(direct)SWAPA;A7~4←→A3~0⑴字节交换指令⑵半字节交换指令XCHDA,@Ri;A3~0←→(Ri)3~0高4位不变。i=0、1⑶累加器高低四位互换第三章AT89C51指令系统小练习:设(SP)=60H,片内RAM的(30H)=24H,(31H)=10H,请填出注释中的结果。PUSH30H;(SP)=,((SP))=.PUSH31H;(SP)=,((SP))=.POPDPL;(SP)=,(DPL)=.POPDPH;(SP)=,(DPH)=.MOVA,#00HMOVX@DPTR,A最后的执行结果是。61H24H62H10H61H10H60H24H将00H送入外RAM2410H单元(DPTR)=2410H第三章AT89C51指令系统数据传送指令练习第三章AT89C51指令系统1、对程序存储器的读操作只能使用()A、MOV指令B、PUSH指令C、MOVX指令D、MOVC指令2、若用传送指令访问片内RAM,它的操作码助记符是;若用传送指令访问片

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

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

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

×
保存成功