单片机应用技术 项目一 循环彩灯装置 第5讲 MCS-51单片机指令系统及指令格式 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系
单片机应用技术 本讲主要内容 1. 51单片机汇编语言的指令系统 2. 51单片机汇编语言的指令格式 3. 指令表的查阅方法和指令功能的描述 4. 几种不同的寻址方法
单片机应用技术 1. 51单片机汇编语言的指令系统 51单片机汇编语言指令分类 分类方法 按指令占用的ROM 空间 双字节指令 单字节指令 三字节指令 按指令功能 控制转移类指令 逻辑运算类指令 位操作类指令 算术运算类指令 数据传送类指令 按指令执行的时间 双周期指令 单周期指令 四周期指令
单片机应用技术 1. 51单片机汇编语言的指令系统 MCS-51的指令系统按节数分为:单字节指令49条;双字节指令46条;三字节指令16条.
单片机应用技术 2. 51单片机汇编语言的指令格式 图3-1循环灯硬件连接电路 一个简单的循环灯实例 2. 51单片机汇编语言的指令格式 一个简单的循环灯实例 下图中的8个发光二极管代表8个彩灯,让我们看看是如何实现的. 图3-1循环灯硬件连接电路
单片机应用技术 2. 51单片机汇编语言的指令格式 为什么 机器码 汇编语言程序 7401 F590 790A 7AC8 7B7E DBFE 2. 51单片机汇编语言的指令格式 机器码 汇编语言程序 7401 F590 790A 7AC8 7B7E DBFE DAFA D9F6 23 024202 STAT: MOV A , #01H ;高电平对应的发光二极管亮 LOOP: MOV P1, A 从P1口输出到发光二极管 MOV R1, #10 DEL1: MOV R2 , #200 DEL2: MOV R3, #126 DEL3: DJNZ R3, DEL3 DJNZ R2, DEL2 DJNZ R1, DEL1 RL A LJMP LOOP ;左移一位,下一个发光二极管亮 END 为什么
单片机应用技术 2. 51单片机汇编语言的指令格式 汇编语言指令格式 [标号]: 操作码 [目的操作数] [源操作数] ;[注释] ↓ ↓ ↓ ↓ ↓ LOOP :MOVX A , @DPTR ;将外部RAM单元内容送到A 标号 又称为指令地址符号。对标号有如下规定: 一般由1~8个ASCII字符组成,以字母开头,其余字符可以是字母、数字和其他特定字符。 不能使用助记符、伪指令或者寄存器的符号名称做标号。 与操作码之间用冒号分开,带方括号表示为可选项。 一个标号只能在程序中出现一次,不能重复出现。 操作码 是由助记符表示的字符串,它规定了指令要完成的具体操作。 操作数 指令操作的对象 .操作数分为目的操作数(上例累加器A)和源操作数(. 上例中的@DPTR).目的操作数和源操作数的书写顺序不能颠倒. 注 释 对指令功能的说明,以便于阅读, 符号“;”后面的内容为注释。
单片机应用技术 2. 51单片机汇编语言的指令格式 汇编指令及其注释中常用的符号 Rn------选中当前的工作寄存器区中的寄存器R0~R7之一 @ Ri------选中当前的工作寄存器组中的寄存器R0或R1,间接寻址前缀符号 direct------直接地址,一个内部RAM单元地址或SFR地址. #data ------------8位或16位常数,也称立即数. #为立即数前缀标志符号 addr11------------11位目的地址 addr16------------16位目的地址 rel---------------8位地址偏移量,值在-128~+127范围内 bit---------------位地址.SFR的位地址(可用符号或名称表示) /-----------------位操作前缀,表示该位内容求反 (×)------------表示以×为地址单元中内容 ((×))--------表示以×为地址单元中内容为地址的单元中的内容
单片机应用技术 3. 指令表的查阅 从指令表中可以得到的信息 类型——确定是何种功能的指令 指令——确定指令的书写规范 机器码——指令在单片机中的存储内容 功能注释——指令的执行效果 指令的字节数——指令的长度(所占存储单元的个数) 指令周期——指令的执行时间(以机器周期为单位)
单片机应用技术 3. 指令表的查阅 根据指令表可快速找出程序中的语法错误 例如:数据交换指令 XCH R1,R2 中的语法错误。 语法错误一般会出现在标号处(标号过长、标号名称重复)、操作码处(操作码使用不当、书写错误)、操作数处(操作数使用不当、书写错误)、符号错误等处。 本条指令中目的操作数R1是错误的,在指令表中词条指令的格式为: XCH A,Rn 数据交换指令中目的操作数必须是A
单片机应用技术 3. 指令表的查阅 利用指令表可快速了解指令功能 例如:执行指令: XRL P1, #00110001B 结果如何 00110001B相异 或 , 结果使: P1.5 P1.4 P1.0的 输出取反, 其它位不变.
单片机应用技术 4. 寻址方式 立即寻址 例: MOV A,#10H ;将立即数10H送给A累加器,即 (A)←10H 在上面这条指令中,带下划线的操作数是一个立即数,即一个指定的 常数,这种寻址方式就称为立即寻址。 注意:立即数的前面必有“#”标志。 比如: ADD A,#0AFH ;A←(A)+AFH
单片机应用技术 4. 寻址方式 直接寻址 例: MOV A,36H ;将内部RAM中36H单元内的数据 送到累加器A中,即 A←(36H) 在上面这条指令中,带下划线的操作数是所在存储单元的地址,这 种寻址方式称为直接寻址。直接寻址方式中操作数所在存储器的空间有板有3种: (1)内部数据存储器的128个字节单元(内部数据存储器地址00H~7FH) (2)位地址空间. (3)特殊功能寄存器,特殊功能寄存器只能用直接寻址方式进行访问.
单片机应用技术 4. 寻址方式 寄存器寻址(Rn) 例: MOV A,R3 ;将通用寄存器R3中的数据送给A,即A←(R3) 在上面这条指令中,带下划线的操作数(源操作数)是当前工作寄存器区 的某个寄存器,这种寻址方式称为寄存器寻址。 比如: XCH A,R1 ;累加器A和寄存器R1中的数互换 ADD A, R2 ; 累加器A和寄存器R2中的数相加
单片机应用技术 4. 寻址方式 间接寻址 例: MOV R0, #30H MOV A,@R0 ;以R0中的内容作为操作数的地址.A ←((R0)). 在上面的指令中,带下划线的不是R0,而是以(R0)为地址,间接找到内部RAM中的30H单元,将(30H)送给A,这种寻址方式称为寄存器间接寻址。 可用R0、R1和DPTR作间址寄存器,访问片内RAM或片外64KB的RAM地址空间。 比如: MOV DPTR,#0CFA0H ;将十六位地址CFA0H赋给数据指针DPTR MOVX A,@DPTR ;将片外RAM(CFA0H)单元内的数送给A
单片机应用技术 4. 寻址方式 基址加变址寻址 例: MOVC A,@A+DPTR ;将地址为(A)+(DPTR) 的ROM 在上面这条指令中,带下划线的操作数是以(DPTR)为基址,(A)为变址,将两者之和作为地址,找出该地址对应的ROM单元,再将该单元的数送给A,这种寻址方式称为基址加变址寻址方式。MCS-51单片机中还有两条变址寻址指令: MOVC A, @A+PC MOVC A, @A+DPTR
单片机应用技术 4. 寻址方式 相对寻址 例:CJNE A,#80H,BUDENG ;如(A)≠80H,跳转到BUDENG JNC DAYU ;如(A)>80H,跳转到DAYU …… BUDENG: SETB FLAG0 ;置位标志位FLAG0 DAYU: SETB FLAG1 ;置位标志位FLAG1 在上面这个程序片段中,带下划线的操作数指明了程序跳转的目的位置,这个目的位置的PC相对于下一条程序语句的PC不得超出-128~+127字节的范围。
单片机应用技术 4.寻址方式 特定寄存器寻址 例:INC A ; 累加器内容加1. INC DPTR ; 数据指针DPTR的内容加1. 累加器A和数据指针DPTR这两个使用最频繁的寄存器又称为特定寄存器, 故称特定寄存器寻址.