内容一51单片机汇编指令_第1页
内容一51单片机汇编指令_第2页
内容一51单片机汇编指令_第3页
内容一51单片机汇编指令_第4页
内容一51单片机汇编指令_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单片机应用教程单片机应用教程 2内容一内容一 5151单片机汇编指令单片机汇编指令通过本章学习,同学们掌握51单片机汇编指令的用法,能够编写简单的汇编程序,在此基础上深刻理解51单片机的内部结构,并能根据实际需要设计并实现简单的51单片机控制系统。 一、51单片机指令格式标号:操作码 目的操作数,源操作数 ;注释51汇编指令组成: ORG 0000HSTART: SETB P1.0 ;P1.0口置高电平 LCALL DELAY ;调用延时子程序 CLR P1.0 ;P1.0口置低电平 LCALL DELAY LJMP START ;程序跳转到标号为START的地方继续执行DELAY: MOV

2、 R5, #20 ;延时子程序D1: MOV R6,#20D1: MOV R6, #20D2: MOV R7, #250 DJNZ R7, $ DJNZ R6, D2 DJNZ R5, D1 RET ;子程序返回 END 二、51单片机寻址方式l 立即数寻址l 直接寻址l 寄存器寻址l 寄存器间接寻址l 位寻址 寻址方式:通常是指某一个CPU指令系统中规定的寻找操作数所在地址的方式,或者说通过什么的方式找到操作数。 二、51单片机寻址方式l 立即数寻址 立即寻址方式是操作数包括在指令字节中,指令操作码后面字节的内容就是操作数本身,其数值由程序员在编制程序时指定,以指令字节的形式存放在程序存储器

3、中。该操作数直接参与操作,所以又叫立即数,用“#”号表示。立即数只能作为源操作数,不能当作目的操作数。例如: MOV A,#52H ;A52H MOV DPTR,#5678H ;DPTR5678H 二、51单片机寻址方式l 直接寻址 在指令中含有操作数的直接地址,该地址指出了参与操作的数据所在的字节地址或位地址。直接寻址方式可以访问2种存储空间:内部数据存储器的低128个字节单元(00H7FH)和80HFFH中的(SFR)特殊功能寄存器。例如: MOV A,52H ;把片内RAM字节地址52H单元的内容送累加器A中。 MOV 50H,60H ;把片内RAM字节地址60H单元的内容送到50H单元

4、中。INC 60H ;将地址60H单元中的内容自加1。 二、51单片机寻址方式l 寄存器寻址 由指令指出某一个寄存器中的内容作为操作数,这种寻址方式称为寄存器寻址。寄存器一般指累加器A和工作寄存器R0R7。例如: MOV A,Rn ;A(Rn) 其中n为07之一,Rn是工作寄存器。 MOV Rn,A ;Rn(A) MOV B,A ;B(A) 二、51单片机寻址方式l 寄存器间接寻址 寄存器间接寻址方式中,存放在寄存器中的内容不是操作数,而是操作数所在的存储器单元地址。寄存器间接寻址只能使用寄存器R0或Rl作为地址指针,来寻址内部RAM(00HFFH)中的数据。寄存器间接寻址也适用于访问外部RA

5、M,可使用R0,Rl或DPTR作为地址指针。寄存器间接寻址用符号“”表示。例如: MOV A, R0 ;A (R0) MOV A ,R1 ;A (R1) 二、51单片机寻址方式例如: MOV DPTR,#3456H ;DPTR3456H MOVX A,DPTR ;A (DPTR) 用寄存器间接寻址方式可访问的存储空间 1、内部RAM低128单元 2、外部RAM 64K 二、51单片机寻址方式l 位寻址 位操作指令能对内部RAM中的位寻址区(20H2FH)和某些有位地址的特殊功能寄存器进行位操作。也就是说可对位地址空间的每个位进行位状态传送、状态控制、逻辑运算操作。例如: SETB TR0 ;T

6、R01 CLR 00H ;(00H)0 MOV C,57H ;将57H位地址的内容传送到位累加器C中 ANL C,5FH ;将5FH位状态与进位位C相与,结果在C中 二、51单片机寻址方式寻址方式寻址方式使用变量使用变量寻址空间寻址空间立即寻址立即寻址#data程序存储器(指令的常数部分)程序存储器(指令的常数部分)直接寻址直接寻址direct片内片内RAM低低128字节,特殊功能寄存器字节,特殊功能寄存器SFR寄存器寻址寄存器寻址Rn,A,B,DPTR工作寄存器工作寄存器R0R7,A,B,DPTR寄存器间接寻址寄存器间接寻址Ri,DPTR片内片内RAM低低128字节,片外字节,片外RAM变址

7、寻址变址寻址A+PC,A+DPTR程序存储器(数据表)程序存储器(数据表)相对寻址相对寻址PC + rel程序存储器程序存储器256字节范围字节范围位寻址位寻址C,bit片内片内RAM的的20H2FH,特殊功能寄存,特殊功能寄存器可寻址位(字节地址能被器可寻址位(字节地址能被8整除的整除的SFR中的各位)中的各位) 三、51单片机指令按指令的功能,51指令系统可分为下列5类:1)数据传送类指令(29条)2)算术运算类指令(24条)3)逻辑运算及移位类指令(24条)4)位操作类指令(17条)5)控制转移类指令(17条)从指令长度看,单字节指令有49条,双字节指令有45条,三字节指令有17条;从指

8、令执行的时间来看,单周期指令有64条,双周期指令有45条,只有乘法、除法两条指令的执行时间是4个机器周期。 三、51单片机指令 符 号含 义Rn表示当前选定寄存器组的工作寄存器R0R7Ri表示作为间接寻址的地址指针R0R1#data表示8位立即数,即00HFFH#data16表示16位立即数,即0000HFFFFHaddr16表示16位地址,用于64K范围内寻址addr11表示11位地址,用于2K范围内寻址direct8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址Rel带符号的8位偏移量(-128+127)Bit位寻址区的直接寻址位(X)X地址单元中的内容,或X作为间接寻

9、址寄存器时所指单元的内容将 后面的内容传送到前面去指令符号意义: 三、51单片机指令1)数据传送类指令(29条) 数据传送类指令一般的操作是把源操作数传送到指令所指定的目标地址。指令执行后,源操作数保持不变,目的操作数为原操作数所替代。 数据传送类指令用到的助记符有:MOV,MOVX,MOVC,XCH,XCHD,PUSH,POP,SWAP。 三、51单片机指令 内部数据传送类指令 MOV 格式: MOV 目的操作数,源操作数 功能:目的操作数(源操作数中的数据)以累加器为目的操作数的内部数据传送指令 MOV A,Rn; A(Rn) MOV A,direct; A(direct) MOV A,R

10、i; A(Ri) MOV A,#data; Adata 三、51单片机指令以Rn为目的操作数的内部数据传送指令 MOV Rn,A ;Rn(A) MOV Rn,direct ;Rn(direct) MOV Rn,#data ;Rndata 数据传送到内部RAM单元或特殊功能寄存器SFR的指令 MOV direct,A ;direct(A) MOV direct,Rn ;direct(Rn) MOV direct1,direct2 ;direct(direct2) MOV direct,Ri ;direct(Ri) MOV direct,#data ;direct#data MOV Ri,A ;(

11、Ri ) () MOV Ri,direct ;(Ri)(direct) MOV Ri,#data ;(Ri)data MOV DPTR,#data16 ;DPTRdata16 三、51单片机指令 directRi Rn#data A 三、51单片机指令 片外数据存储器数据传送指令 MOVX 格式: MOVX 目的操作数,源操作数 功能:目的操作数(源操作数中的数据)累加器A与外部数据存储器之间的传送指令 MOVX A,DPTR ;A(DPTR) MOVX A,Ri ;A(Ri) MOVX DPTR,A ;(DPTR)A MOVX Ri,A ;(Ri) A 三、51单片机指令 程序存储器内容送累

12、加器 MOVC 格式: MOVC 目的操作数,源操作数 功能:目的操作数(源操作数中的数据)程序存储器内容送累加器 MOVC A,A+PC MOVC A,A+DPTR 三、51单片机指令 堆栈操作指令(PUSHPOP) 格式: PUSH direct POP direct 单片机的内部RAM中,可以设定一个先进后出、后进先出的区域,称其为堆栈。在特殊功能寄存器中有一个堆栈指针SP,它指出栈顶的位置。进栈指令的功能是:首先将堆栈指针SP的内容加1,然后将直接地址所指出的内容送入SP所指出的内部RAM单元;出栈指令的功能是:将SP所指出的内部RAM单元的内容送入由直接地址所指出的字节单元,接着将S

13、P的内容减1。 三、51单片机指令 堆栈操作指令 例如:进入中断服务程序时,把程序状态寄存器PSW、累加器A、数据指针DPTR进栈保护。设当前SP为60H。则程序段 MOV SP,#60H PUSH PSW PUSH ACC PUSH DPL PUSH DPH执行完指令后,SP=64H,(61H)=PSW,(62H)=ACC,(63H)=DPL,(64H)=DPH 三、51单片机指令 字节交换指令整字节交换指令 XCH A,Rn ;(A)(Rn) XCH A,direct ;(A)(direct) XCH A,Ri ;(A)(Ri)半字节交换指令 XCHD A,Ri 累加器高低半字节交换指令

14、SWAP A Keil软件调试程序1 Keil软件调试程序2 Keil软件调试程序3 三、51单片机指令2)算术运算类指令(24条) 算术运算类指令包括加、减、乘、除4种基本算术运算指令,这4种指令能对8位的无符号数进行直接运算,借助溢出标志,可对带符号数进行补码运算;借助进位标志,可实现多精度的加、减运算,同时还可对压缩的BCD码进行运算,其运算功能较强。 算术指令用到的助记符共有8种:ADD、ADDC、INC、SUBB、DEC、DA 、MUL、DIV。 算术运算指令执行结果将影响进位标志(Cy),辅助进位标志(Ac)、溢出标志位(Ov)。 三、51单片机指令 加法指令普通加法指令 ADD

15、A,Rn ;A(A)+(Rn) ADD A,direct ;A(A)+(direct) ADD A,Ri ;A(A)+(Ri) ADD A,#data ;A(A)+ data 带进位的加法指令 ADDC A,Rn ;A(A)+(Rn)+(Cy) ADDC A,direct ;A(A)+(direct)+(Cy) ADDC A,Ri ;A(A)+(Ri)+(Cy) ADDC A,#data ;A(A)+ data+(Cy) 三、51单片机指令 加法指令增量指令 INC A ;A(A)+1 INC Rn ;Rn (Rn)+1 INC direct ;direct (direct)+1 INC Ri

16、 ;(Ri)(Ri)+1 INC DPTR ;DPTR (DPTR)+1 十进制调整指令 MOV A,#36H ADD A,#45H DA A 三、51单片机指令 减法指令带借位减法指令SUBB A,Rn ;A(A)(Rn)(Cy) SUBB A,direct ;A(A)(direct)(Cy) SUBB A,Ri ;A(A)(Ri)(Cy) SUBB A,#data ;A(A)data(Cy) 减1指令DEC A ;A(A)1 DEC Rn ;Rn(Rn)1 DEC direct ;direct(direct)1 DEC Ri ;(Ri)(Ri)1 三、51单片机指令 乘法指令 MULAB

17、除法指令 DIV AB 加、减、乘、除指令验证 绘制如下电路图 加、减、乘、除指令验证 编写程序,并生成hex文件减法程序: ORG 0000H CLR C MOV A,P1 MOV R0,P2 SUBB A,R0 MOV P3,A END加法程序: ORG 0000H MOV A,P1 MOV R0,P2 ADD A,R0 MOV P3,A END乘法程序: ORG 0000H MOV A,P1 MOV B,P2 MUL AB MOV P0,B MOV P3,A END除法程序: ORG 0000H MOV A,P1 MOV B,P2 DIV AB MOV P0,B MOV P3,A END

18、 加法指令验证结果10101010+01010101=? 减法指令验证结果11111111-10101010=? 乘法指令验证结果10101010*10101010=? 除法指令验证结果11111111/111=? 三、51单片机指令3)逻辑运算类指令(24条) 逻辑运算指令共有24条,分为简单逻辑操作指令、逻辑与指令、逻辑或指令和逻辑异或指令。逻辑运算指令用到的助记符有CLR、CPL、ANL、ORL、XRL、RL、RLC、RR、RRC。 简单逻辑操作指令 CLR A ;对累加器A清“0” CPL A ;对累加器A按位取反 RL A ;累加器A的内容向左循环移1位 RLC A ;累加器A的内容

19、带进位标志向左循环移1位 RR A ;累加器A的内容向右循环移1位 RRC A ;累加器A的内容带进位标志向右循环移1位 三、51单片机指令 逻辑与指令 ANL A,Rn ;A(A)(Rn) ANL A,direct ;A(A)(direct) ANL A,Ri ;A(A)(Ri) ANL A,#data ;A(A) data ANL direct,A ;direct(direct)(A) ANL direct,#data ;direct(direct) data 逻辑或指令 ORL 格式同上 逻辑异或指令 XRL 格式同上 逻辑指令验证 绘制如下电路图 逻辑指令验证 编写程序,并生成hex文

20、件或运算程序:ORG 0000HMOV A,P1ORL A,P2MOV P3,AEND与运算程序: ORG 0000H MOV A,P1 ANL A,P2 MOV P3,A END异或运算程序: ORG 0000HMOV A,P1XRL A,P2MOV P3,AEND同或运算程序: ORG 0000HMOV A,P1XRL A,P2CPL AMOV P3,AEND 与运算指令验证结果1111111110101010=? 或运算指令验证结果01010101 10101010=? 异或运算指令验证结果11111111 10101010=? 同或运算指令验证结果11111111 10101010=?

21、 三、51单片机指令4)控制转移类指令(17条) 控制转移指令共有17条,不包括按布尔变量控制程序转移指令。其中有64K范围的长调用、长转移指令;2KB范围的绝对调用和绝对转移指令;有全空间的长相对转移和一页范围内的短相对转移指令;还有多种条件转移指令。由于MCS-51提供了较丰富的控制转移指令,因此在编程上相当灵活方便。这类指令用到的助记符共有10种:AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、CJNE、DJNZ。 三、51单片机指令 绝对转移指令 AJMP addr11 实现2KB范围内的无条件跳转指令。目标地址与AJMP后一条指令的第一个字节必须在同一个2

22、KB区域的存储区域内。 相对转移指令 SJMP rel 转移范围为当前PC值的-128+127共256个单元。 长跳转指令 LJMP addr16 ;PC addr16 转移范围在64KB 程序存储器地址空间的任何地方。 散转指令 JMP A+DPTR ;PC (A)(DPTR) 三、51单片机指令 条件转移指令 依据累加器A的内容是否为0的条件转移指令。条件满足时转移(相当于一条相对转移指令),条件不满足时则顺序执行下面一条指令。 JZ rel ;(A)=0转移 JNZ rel ;(A)0转移 比较转移指令 比较前面两个操作数的大小,如果它们的值不相等则转移,如果它们的值相等则顺序执行。 C

23、JNE A,direct,rel;(A)(direct)转移 CJNE A,#data,rel;(A) data转移 CJNE Rn,#data,rel ;(Rn) data转移 CJNE Ri,#data,rel ;(Ri) data转移 三、51单片机指令 减1不为0转移指令 这两条指令把源操作数减1,结果回送到源操作数中去,如果结果不为0则转移。 DJNZ Rn,rel ;R(R)10转移 DJNZ direct,rel;direct (direct)10转移 绝对调用指令 ACALL addr11 这是一条2KB范围内的子程序调用指令 长调用指令 LCALL addr16 三、51单片

24、机指令 长调用指令 LCALL addr16这条指令无条件调用位于16位地址addr16的子程序。执行该指令时,先将PC+3以获得下条指令的首地址,并把它压入堆栈(先低字节后高字节),SP内容加2,然后将16位地址放入PC中,转去执行以该地址为入口的程序。LCALL指令可以调用64KB范围内任何地方的子程序。指令执行后不影响任何标志。 子程序返回指令 RET子程序返回指令是把栈顶相邻两个单元的内容弹出送到PC,SP的内容减2,程序返回PC值所指的指令处执行。RET指令通常安排在子程序的末尾,使程序能从子程序返回到主程序。 三、51单片机指令 中断返回指令 RETI这条指令的功能与RET指令相类

25、似。通常安排在中断服务程序的最后。 空操作指令 NOP;PC PC1空操作也是CPU控制指令,它没有使程序转移的功能。只消耗一个机器周期的时间。常用于程序的等待或时间的延迟。 控制调用类指令验证 绘制如下电路图 控制调用类指令验证 编写程序,并生成hex文件 ORG 0000HMAIN: CLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP MAIN DELAY: MOV R6,#10D1: MOV R5,#100D2: MOV R4,#250D3: NOP NOP DJNZ R4,D3 DJNZ R5,D2 DJNZ R6,D1 RET END 控制调用类指令验证结果 三、51单片机指令5)位操作指令(17条) 位操作指令的操作对象是内部RAM的位寻址区,即字节地址为20H2FH单元中连续的128位(位地址为00H7FH),以及特殊功能寄存器中可以进行位寻址的各位。位操作指令包括布尔变量的传送、逻辑运算、控制转移等指令,它共有17条指令,所用到的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论