内容一 51单片机汇编指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、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 ;direct1(direct2) MOV direct,@Ri ;direct((Ri)) MOV direct,#data ;direct#data MOV @Ri,A ;(Ri ) (A) MOV @Ri,direct ;(Ri)(direct) MOV @Ri,#data ;(Ri)data MOV DPTR,#data16 ;DPTRdata16
三、51单片机指令
• 程序存储器内容送累加器 MOVC
格式: MOVC [目的操作数],[源操作数] 功能:目的操作数(源操作数中的数据)
①程序存储器内容送累加器
MOVC MOVC A,@A+PC A,@A+DPTR
三、51单片机指令
• 堆栈操作指令(PUSH\POP)
格式: PUSH direct POP direct 单片机的内部RAM中,可以设定一个先进后出、后进先出的 区域,称其为堆栈。在特殊功能寄存器中有一个堆栈指针SP ,它指出栈顶的位置。进栈指令的功能是:首先将堆栈指针
0000H
DELAY: D1: D2:
;子程序返回
二、51单片机寻址方式
寻址方式:通常是指某一个CPU指令系统中规定的寻 找操作数所在地址的方式,或者说通过什么的方式找 到操作数。 立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 位寻址
二、51单片机寻址方式
立即数寻址
立即寻址方式是操作数包括在指令字节中,指令操作码后面 字节的内容就是操作数本身,其数值由程序员在编制程序时 指定,以指令字节的形式存放在程序存储器中。该操作数直 接参与操作,所以又叫立即数,用“#”号表示。立即数只能
内容一 51单片机汇编指令
通过本章学习,同学们掌握51单 片机汇编指令的用法,能够编写 简单的汇编程序,在此基础上深 刻理解51单片机的内部结构,并 能根据实际需要设计并实现简单 的51单片机控制系统。
2
一、51单片机指令格式
51汇编指令组成: 标号:操作码 目的操作数,源操作数 ;注释
ORG
START: SETB LCALL CLR LCALL LJMP MOV MOV MOV DJNZ DJNZ DJNZ RET END P1.0 DELAY P1.0 DELAY START R5, #20 R6, #20 R7, #250 R7, $ R6, D2 R5, D1 ;P1.0口置高电平 ;调用延时子程序 ;P1.0口置低电平 ;程序跳转到标号为START的地方继续执行 ;延时子程序D1: MOV R6,#20
原操作数所替代。
数据传送类指令用到的助记符有:MOV,MOVX,MOVC, XCH,XCHD,PUSH,POP,SWAP。
三、51单片机指令
• 内部数据传送类指令 MOV
格式: MOV [目的操作数],[源操作数] 功能:目的操作数(源操作数中的数据)
①以累加器为目的操作数的内部数据传送指令
MOV MOV MOV MOV A,Rn; A,direct; A,@Ri; A,#data; A(Rn) A(direct) A((Ri)) Adata
三、51单片机指令
• 加法指令
③增量指令 INC A ;A(A)+1 INC Rn ;Rn (Rn)+1 INC direct ;direct (direct)+1 INC @Ri ;(Ri)((Ri))+1 INC DPTR ;DPTR (DPTR)+1 ④十进制调整指令 MOV A,#36H ADD A,#45H DA A
三、51单片机指令
direct @Ri
A
Rn #data
三、51单片机指令
• 片外数据存储器数据传送指令 MOVX
格式: MOVX [目的操作数],[源操作数] 功能:目的操作数(源操作数中的数据)
①累加器A与外部数据存储器之间的传送指令
MOVX MOVX MOVX MOVX A,@DPTR A,@Ri @DPTR,A @Ri,A ;A(DPTR) ;A((Ri)) ;(DPTR)A ;(Ri) A
作为源操作数,不能当作目的操作数。
例如: MOV A,#52H ;A52H MOV DPTR,#5678H ;DPTR5678H
二、51单片机寻址方式
直接寻址
在指令中含有操作数的直接地址,该地址指出了参与操作的 数据所在的字节地址或位地址。直接寻址方式可以访问2种存 储空间:内部数据存储器的低128个字节单元(00H~7FH)和 80H~FFH中的(SFR)特殊功能寄存器。
;TR01 ;(00H)0 ;将57H位地址的内容传送到位累加器C ;将5FH位状态与进位位C相与,结果在
二、51单片机寻址方式
寻址方式 立即寻址 使用变量 #data 寻址空间 程序存储器(指令的常数部分) 片内RAM低128字节,特殊功能寄存器 SFR
直接寻址 寄存器寻址
寄存器间接寻址 变址寻址 相对寻址 位寻址
三、51单片机指令
按指令的功能,51指令系统可分为下列5类:
1)数据传送类指令(29条) 2)算术运算类指令(24条) 3)逻辑运算及移位类指令(24条) 4)位操作类指令(17条)
5)控制转移类指令(17条)
从指令长度看,单字节指令有49条,双字节指令有45条,三字 节指令有17条;从指令执行的时间来看,单周期指令有64条, 双周期指令有45条,只有乘法、除法两条指令的执行时间是4个 机器周期。
direct Rn,A,B,DPTR
@Ri,@DPTR
工作寄存器R0~R7,A,B,DPTR
片内RAM低128字节,片外RAM
@A+PC,@A+DPTR 程序存储器(数据表) PC + rel C,bit 程序存储器256字节范围
片内RAM的20H~2FH,特殊功能寄存 器可寻址位(字节地址能被8整除的SFR 中的各位)
算术指令用到的助记符共有8Hale Waihona Puke Baidu:ADD、ADDC、INC、
SUBB、DEC、DA 、MUL、DIV。 算术运算指令执行结果将影响进位标志(Cy),辅助进位标 志(Ac)、溢出标志位(Ov)。
三、51单片机指令
• 加法指令
①普通加法指令 ADD 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单片机指令
• 字节交换指令
①整字节交换指令 XCH A,Rn ;(A)(Rn) XCH A,direct ;(A)(direct) XCH A,@Ri ;(A)((Ri)) ②半字节交换指令 XCHD A,@Ri ③累加器高低半字节交换指令 SWAP A
Keil软件调试程序1
Keil软件调试程序2
使用R0,Rl或DPTR作为地址指针。寄存器间接寻址用符号
“@”表示。 例如: MOV A, @R0 ;A ((R0)) MOV A ,@R1 ;A ((R1))
二、51单片机寻址方式
例如: MOV DPTR,#3456H MOVX A,@DPTR ;DPTR3456H ;A ((DPTR))
#data16 表示16位立即数,即0000H~FFFFH
Rel
Bit (X) ←
带符号的8位偏移量(-128~+127)
位寻址区的直接寻址位 X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容 将 ← 后面的内容传送到前面去
三、51单片机指令
1)数据传送类指令(29条) 数据传送类指令一般的操作是把源操作数传送到指令所指定 的目标地址。指令执行后,源操作数保持不变,目的操作数为
例如:
MOV A,52H 加器A中。 MOV 50H,60H ;把片内RAM字节地址60H单元的内容送到 50H单元中。 ;把片内RAM字节地址52H单元的内容送累
INC 60H
;将地址60H单元中的内容自加1。
二、51单片机寻址方式
寄存器寻址
由指令指出某一个寄存器中的内容作为操作数,这种寻址方 式称为寄存器寻址。寄存器一般指累加器A和工作寄存器 R0~R7。 例如:
三、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
SP的内容加1,然后将直接地址所指出的内容送入SP所指出
的内部RAM单元;出栈指令的功能是:将SP所指出的内部 RAM单元的内容送入由直接地址所指出的字节单元,接着将 SP的内容减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单片机指令
• 乘法指令
MUL
DIV
AB
AB
• 除法指令
加、减、乘、除指令验证
• 绘制如下电路图
加、减、乘、除指令验证
• 编写程序,并生成hex文件
加法程序: ORG 0000H MOV A,P1 MOV R0,P2 ADD A,R0 MOV P3,A END
减法程序: ORG 0000H CLR C MOV A,P1 MOV R0,P2 SUBB A,R0 MOV P3,A END
用寄存器间接寻址方式可访问的存储空间 1、内部RAM低128单元 2、外部RAM 64K
二、51单片机寻址方式
位寻址
位操作指令能对内部RAM中的位寻址区(20H~2FH)和某 些有位地址的特殊功能寄存器进行位操作。也就是说可对位 地址空间的每个位进行位状态传送、状态控制、逻辑运算操 作。
例如: SETB TR0 CLR 00H MOV C,57H 中 ANL C,5FH C中
MOV A,Rn
作寄存器。 MOV Rn,A MOV B,A
;A(Rn) 其中n为0~7之一,Rn是工
;Rn(A) ;B(A)
二、51单片机寻址方式
寄存器间接寻址
寄存器间接寻址方式中,存放在寄存器中的内容不是操作数 ,而是操作数所在的存储器单元地址。寄存器间接寻址只能 使用寄存器R0或Rl作为地址指针,来寻址内部RAM(00H~ FFH)中的数据。寄存器间接寻址也适用于访问外部RAM,可
Keil软件调试程序3
三、51单片机指令
2)算术运算类指令(24条) 算术运算类指令包括加、减、乘、除4种基本算术运算指令, 这4种指令能对8位的无符号数进行直接运算,借助溢出标志,
可对带符号数进行补码运算;借助进位标志,可实现多精度的
加、减运算,同时还可对压缩的BCD码进行运算,其运算功能 较强。
三、51单片机指令
指令符号意义:
符 号 Rn Ri #data addr16 addr11 direct 含 义 表示当前选定寄存器组的工作寄存器R0~R7 表示作为间接寻址的地址指针R0~R1 表示8位立即数,即00H~FFH 表示16位地址,用于64K范围内寻址 表示11位地址,用于2K范围内寻址 8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址