第二讲:指令与编程 本讲重点: 寻址方式 MCS-51指令集; 伪指令; 汇编语言与简单程序设计. 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 第二讲:指令与编程 本讲重点: 寻址方式; MCS-51指令集; 伪指令; 汇编语言与简单程序设计
第三章指令系统及程序设计(P.43) 51系列单片机指令集含有111条指令 每条指令在程序存储器ROM中占据一定的空间, 以字节为单位。按指令所占字数类 单字节(49条)双字节(46条)3字节(16条) 每条指令在执行时要花去一定的时,以机器 周期为单位。按指令热行分类: 单周期(64条)双周期(45条)4周期(2条) ←按指令的功能分类,可分为5大类 数据传送类(29条);算术运算类(24条) 逻辑运算及移位类(24);控制转移类(17条) 位操作类(17条) 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 第三章 指令系统及程序设计(P.43) 51系列单片机指令集含有111条指令 每条指令在执行时要花去一定的时间,以机器 周期为单位。按指令执行时间分类: 单周期(64条);双周期(45条);4周期(2条) 按指令的功能分类,可分为5大类: 数据传送类(29条);算术运算类(24条) 逻辑运算及移位类(24);控制转移类(17条) 位操作类(17条) 每条指令在程序存储器ROM中占据一定的空间, 以字节为单位。按指令所占字节数分类: 单字节(49条);双字节(46条);3字节(16条)
ASM-51指令的格式(P.44) [标号:]操作码[目的操作数][,源操作数][;注释] ◆方括符[表示可选项 ◆标号代表指令所在地址,1-8个字母数字,“:” 结尾 ◆操作码就是指令功能助记符,指令实体 目的操作数 源操作数 注释,以“;”开头 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 ASM-51指令的格式(P.44) 方括符[ ]表示可选项 标号代表指令所在地址,1-8个字母/数字, “:” 结尾 操作码就是指令功能助记符,指令实体 目的操作数 源操作数 注释,以“;”开头 [标号:]操作码 [目的操作数][,源操作数][;注释]
51单片机指令的寻址方式(P.45) 寻址方式:指令按地址获得操作数的方式 七种寻址方式一条指令可能含多种寻址方式 寄存器寻址 ◆立即寻址 ◆寄存器向接寻址 ◆直接寻址 变址寻址(基址寄存器+变址寄存器间接寻址) 相对寻址 ◆位寻址 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 51单片机指令的寻址方式(P.45) 寄存器寻址 立即寻址 寄存器间接寻址 直接寻址 变址寻址(基址寄存器+变址寄存器间接寻址) 相对寻址 位寻址 寻址方式:指令按地址获得操作数的方式 七种寻址方式,一条指令可能含多种寻址方式
寄存器寻址(P45) 从寄存器中读取操作数或存放操作数进寄存器 例:MoVA,B;(A)←(B) MoV30H,R0;(30H)←(R0) MovA,R1:(A)←(R1) 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 寄存器寻址——(P.45) 从寄存器中读取操作数或存放操作数进寄存器 例:MOV A,B ; (A) ←(B) MOV 30H,R0 ;(30H)←(R0) MOV A,R1 ; (A) ←(R1)
立即寻址—(P45) 操作数直接就出现在指令中 例:MoVA,#64H;(A)←立即数64H ADDA,#05H;(A)←(A)+立即数05H 注意:符号“#表明其后跟的是立即数, 立即数就是数字量本身。 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 立即寻址——(P.45) 操作数直接就出现在指令中 例:MOV A,#64H ;(A)← 立即数 64H ADD A,#05H ;(A)←(A)+立即数 05H 注意:符号“#”表明其后跟的是立即数, 立即数——就是数字量本身
寄存器间接寻址—(P46) 寄存器中的内容是一个地址,由该地址单元 寻址到所需的操作数 例:[MovR1,#30H;(R1)←立即数30H] MoV@R1,#FH;(30H)←立即数0FH MOV A,@RI A<((((((30)=#OFH 注意: 1)“间接”表示某寄存器中的“内容”只是一个 单元地址”,这个地址单元中存放的数据才是 要找的“操作数 2)符号“@表示“在.”,其含义与读音皆同 at 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 寄存器间接寻址——(P.46) 寄存器中的内容是一个地址,由该地址单元 寻址到所需的操作数 注意: 1)“间接”表示某寄存器中的“内容”只是一个 “单元地址” ,这个地址单元中存放的数据才是 要找的“操作数” 。 2)符号“@”表示“在… ” ,其含义与读音皆同 “at” 。 例:[ MOV R1 MOV ,##30H ;(R1)← 30H ;(R1)← 立即数30H ] MOV @R1,#0FH ;(30H)←立即数0FH MOV A,@R1 ;(A)←((30H))=#0FH
直接寻址—(P46) 指令中直接给出了操作数所在单元的地址或名称 例:MovR1,1FH;(R1)←(1FH) MOV30H, 4AH 30H*( 4AH) 在本单片机中规定:访问特殊功能寄存器SFR 只能采用直接寻址方式。例如: MOV A SP (A)←(SP) 响 A,81H (A)←(sP) Mov。 #5AH;(P1)←(#5AH MOV 90H,#5AH;(P1)←(#5AH) 弱 B,30H;(B)←(30H) SFR的地址见P33表 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 直接寻址——(P.46) 指令中直接给出了操作数所在单元的地址或名称 例:MOV R1,1FH ;(R1) ←(1FH) MOV 30H,4AH ;(30H)←(4AH) 在本单片机中规定:访问特殊功能寄存器SFR 只能采用直接寻址方式。例如: MOV A, SP ; (A) ←(SP) MOV A, 81H ; (A) ←(SP) MOV P1, #5AH ; (P1)←(#5AH) MOV 90H,#5AH ; (P1)←(#5AH) MOV B, 30H ; (B) ←(30H) SFR的地址见 P.33表 相同 相同
在本单片机中访问特殊功能寄存器SFR只能采用直 接寻址方式的原因:SFR分布在80H~0FFH范围 内,而52系列单片机有256字节的片内RAM其中 的80H~0FFH的RAM与SFR所占地址重叠。 于是规定:80H~0FFH范围内的RAM只能用寄 存器间接寻址方式,而SFR只能用直接寻址方式。 从而解决了地址冲突的问题。例如 大MoVA,90H等效于MoVA,P1属直接寻 址 大MoVA,@R0;[事先已知(R0) #90H 执行的操作:A←(90H) 属寄存器间接寻址,大随意写的指令如:MoV A,85H则是非法的! 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 在本单片机中访问特殊功能寄存器SFR只能采用直 接寻址方式的原因:SFR分布在80H~0FFH范围 内,而52系列单片机有256字节的片内RAM,其中 的80H~0FFH的RAM与SFR所占地址重叠。 MOV A, 90H 等效于 MOV A, P1 属直接寻 址 MOV A, @R0 ;[事先已知 (R0) = #90H ] 执行的操作:A ←(90H) 属寄存器间接寻址, 随意写的指令如:MOV A, 85H 则是非法的! 于是规定: 80H~0FFH范围内的RAM只能用寄 存器间接寻址方式,而SFR只能用直接寻址方式。 从而解决了地址冲突的问题。例如:
存储器配置(片内RAM 89c51片内RAM128字节(00H-7FH) 89c52片内RAM256字节(00H-0FFH) 只能寄存器间接寻址 FFH FFH SFR分布在 52子系列才有 80H-FFH 的RAM区 其中92个位 89c52 80H 80HL可位寻址 7FH 256字节 普通RAM区 89c51 30H 128字节2FH 只能直接寻址 位寻址区 工作寄存器区 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 存储器配置(片内RAM) ⚫ 89C51片内RAM 128字节(00H—7FH) ⚫ 89C52片内RAM 256字节(00H—0FFH) 00H 20H 2FH 7FH 1FH 30H 80H FFH 52子系列才有 的RAM区 普通RAM区 位寻址区 工作寄存器区 SFR分布在 80H-FFH 其中92个位 可位寻址 80H FFH 89C51 128字节 89C52 256字节 只能直接寻址 只能寄存器间接寻址