单片机学习第三章.ppt
《单片机学习第三章.ppt》由会员分享,可在线阅读,更多相关《单片机学习第三章.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章:第三章:指令系统指令系统本讲本讲重点:重点:寻址方式;寻址方式;MCS-51MCS-51指令集;指令集;13.13.1指令系统概述指令系统概述5151系列单片机指令集含有系列单片机指令集含有111111条指令条指令 每条每条指令在执行时要花去一定的指令在执行时要花去一定的时间时间,以机器,以机器周期为单位。按指令周期为单位。按指令执行时间执行时间分类:分类:单周期单周期(64(64条条););双周期双周期(45(45条条););4 4周期周期(2(2条条)按指令的按指令的功能功能分类,可分为分类,可分为5 5大类:大类:数据传送类(数据传送类(2929条);算术运算类(条);算术运算类
2、(2424条)条)逻辑运算及移位类(逻辑运算及移位类(2424);控制转移类();控制转移类(1717条)条)位操作类(位操作类(1717条)条)每每条指令在程序存储器条指令在程序存储器ROMROM中占据一定的中占据一定的空间空间,以字节为单位。按指令以字节为单位。按指令所占字节数所占字节数分类:分类:单字节单字节(49(49条条););双字节双字节(46(46条条););3 3字节字节(16(16条条)23.23.2 ASM-51ASM-51指令的格式指令的格式方括符方括符 表示可选项表示可选项标标号号代代表表指指令令所所在在地地址址,1-81-8个个字字母母/数数字字,“:”结尾结尾操作码
3、就是指令功能助记符,指令实体操作码就是指令功能助记符,指令实体目的操作数目的操作数源操作数源操作数注释,以注释,以“;”开头开头 标号标号:操作码操作码 目的操作数目的操作数,源操作数源操作数;注释注释 33.33.3 5151单片机指令的寻址方式单片机指令的寻址方式寄存器寻址寄存器寻址立即寻址立即寻址寄存器间接寻址寄存器间接寻址直接寻址直接寻址变址寻址变址寻址(基址寄存器基址寄存器+变址寄存器间接寻址变址寄存器间接寻址)相对寻址相对寻址位寻址位寻址寻址方式寻址方式:指令按地址获得操作数的方式:指令按地址获得操作数的方式七种寻址方式七种寻址方式,一条指令可能含多种寻址方式一条指令可能含多种寻址
4、方式4寄存器寻址寄存器寻址从寄存器中读取操作数或存放操作数进寄存器从寄存器中读取操作数或存放操作数进寄存器例:例:MOV AMOV A,B B ;(A A)(B B)MOV 30HMOV 30H,R0 R0 ;(;(30H30H)(R0R0)MOV AMOV A,R1 R1 ;(A A)(R1R1)寻址范围寻址范围:(1 1)4 4组通用工作寄存器区组通用工作寄存器区 共共3232个工作寄存器;个工作寄存器;R0-R7R0-R7(2 2)部分特殊功能寄存器)部分特殊功能寄存器5立即寻址立即寻址操作数直接就出现在指令中操作数直接就出现在指令中例:例:MOV AMOV A,#64H#64H;(A)
5、(A)立即数立即数 64H64H ADD A ADD A,#05H#05H;(A)(A)+(A)(A)+立即数立即数 05H05H注意注意:符号:符号“#”表明其后跟的是立即数表明其后跟的是立即数,立即数立即数就是数字量本身。就是数字量本身。6寄存器间接寻址寄存器间接寻址寄存器中的内容是一个地址,由该地址单元寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数寻址到所需的操作数注意注意:1 1)“间间接接”表表示示某某寄寄存存器器中中的的“内内容容”只只是是一一个个“单单元元地地址址”,这这个个地地址址单单元元中中存存放放的的数数据据才才是是要找的要找的“操作数操作数”。2 2)符符号号“
6、”表表示示“在在”,其其含含义义与与读读音音皆皆同同“atat”。例:例:MOV R1 MOV R1,#30H;(R1)#30H;(R1)立即数立即数30H 30H MOV R1 MOV R1,#30H;(R1)#30H;(R1)立即数立即数30H 30H MOV R1 MOV R1,#0FH;(30H)#0FH;(30H)立即数立即数0FH0FH MOV A MOV A,R1 ;(A)(30H)=#0FHR1 ;(A)(30H)=#0FH7直接寻址直接寻址指令中直接给出了操作数所在单元的地址或名称指令中直接给出了操作数所在单元的地址或名称 例:例:MOV R1MOV R1,1FH 1FH;(
7、R1)(R1)(1FH1FH)MOV 30HMOV 30H,4AH 4AH;(30H)(30H)(4AH4AH)在在本单片机中规定:访问特殊功能寄存器本单片机中规定:访问特殊功能寄存器SFRSFR只只能采用直接寻址方式能采用直接寻址方式。例如:。例如:MOV A,SP MOV A,SP ;(A)(SP)(A)(SP)MOV A,81H MOV A,81H ;(A)(SP)(A)(SP)MOV P1,#5AH MOV P1,#5AH ;(P1)(#5AH)(P1)(#5AH)MOV 90H,#5AH MOV 90H,#5AH ;(P1)(#5AH)(P1)(#5AH)MOV B,30H MOV
8、B,30H ;(B)(30H)(B)(30H)相同相同相同相同8在在本单片机中访问特殊功能寄存器本单片机中访问特殊功能寄存器SFRSFR只能采用直只能采用直接寻址方式的原因:接寻址方式的原因:SFRSFR分布在分布在80H80H0FFH0FFH范围内,范围内,而而5252系列单片机有系列单片机有256256字节的片内字节的片内RAM,RAM,其中的其中的80H80H0FFH0FFH的的RAMRAM与与SFRSFR所占地址重叠。所占地址重叠。MOV A,90H MOV A,90H 等效于等效于 MOV A,P1 MOV A,P1 属直接寻址属直接寻址 MOV A,R0 MOV A,R0 ;事先已
9、知事先已知 (R0)=#90H (R0)=#90H 执行的操作:执行的操作:A(90H)A(90H)属寄存器间接寻址属寄存器间接寻址,随意写的指令如:随意写的指令如:MOV A,85H MOV A,85H 则是非法的!则是非法的!于是规定:于是规定:8080H H0FFH0FFH范围内的范围内的RAMRAM只能用寄存器只能用寄存器间接寻址方式,而间接寻址方式,而SFRSFR只能用直接寻址方式。从而只能用直接寻址方式。从而解决了地址冲突的问题。例如:解决了地址冲突的问题。例如:9存储器配置存储器配置(片内(片内RAMRAM)n89C5189C51片内片内RAM 128RAM 128字节(字节(0
10、0H7FH00H7FH)n89C5289C52片内片内RAM 256RAM 256字节(字节(00H0FFH00H0FFH)00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HFFHFFH5252子系列才有子系列才有的的RAMRAM区区普通普通RAM区区位寻址区位寻址区工作寄存器区工作寄存器区SFR分布在分布在80H-FFH其中其中92个位个位可位寻址可位寻址80H80HFFHFFH89C5189C51 128128字节字节89C5289C52 256256字节字节只能直接寻址只能直接寻址只能寄存器间接寻址只能寄存器间接寻址10变址寻址变址寻址 也称为也称为:基
11、址寄存器基址寄存器+变址寄存器变址寄存器间接寻址间接寻址以以1616位的地址指针寄存器位的地址指针寄存器DPTRDPTR或或 1616位的位的PCPC寄存器为寄存器为基址寄存器基址寄存器,以,以累加器累加器 A A 为变址寄存器为变址寄存器,两者中的,两者中的“内容内容”形成一个形成一个1616位的位的“地址地址”,该,该“地址地址”所所指的存储单元中的内容才是操作数。指的存储单元中的内容才是操作数。例例:设:设:A A中已存有中已存有#A4H#A4H,DPTRDPTR中已存有中已存有#1234H#1234H MOVC A MOVC A,A+DPTRA+DPTR;(;(A A)(A)+(DPT
12、R)(A)+(DPTR)操作操作:将:将A4H+1234H=12D8HA4H+1234H=12D8H单元中的数放进累加器单元中的数放进累加器A A11相对寻址相对寻址当当前前PCPC值值加加上上指指令令中中规规定定的的偏偏移移量量 relrel,构构成成实实际际的操作数地址的操作数地址例例:SJMP SJMP rel rel 操作:跳转到的目的地址操作:跳转到的目的地址 =当前当前1616位位PCPC值值 +relrel注意注意:1 1)“当前当前PCPC值值”指程序中下一条指令所在的首地址,指程序中下一条指令所在的首地址,是一个是一个1616位数;位数;2 2)符符号号“relrel”表表示
13、示“偏偏移移量量”,是是一一个个带带符符号号的的单单字字 节数节数,范围是范围是:-128:-128+127(80H+127(80H7FH),7FH),在实际编程中,在实际编程中,“relrel”通常用标号代替通常用标号代替12位寻址位寻址指令中直接给出了操作数所在的位地址。指令中直接给出了操作数所在的位地址。例:例:CLR P1.0 CLR P1.0 ;(P1.0)0(P1.0)0 SETB ACC.7 SETB ACC.7 ;(ACC.7)1(ACC.7)1 CPL C CPL C ;(C)NOT(C)(C)NOT(C)注意注意:1 1)位地址里的数据只可能是一个)位地址里的数据只可能是一
14、个 0 0 或或 1 1 2 2)有的位地址十分明确)有的位地址十分明确,如如 P1.0,ACC.7P1.0,ACC.7等等,有的位地址则有的位地址则“不太明确不太明确”,如:,如:MOV AMOV A,17H;(A)(17H),17H17H;(A)(17H),17H是是字节地址字节地址 MOV ACC.0 MOV ACC.0,17H;(ACC.0)(17H),17H;(ACC.0)(17H),这里这里ACC.0ACC.0 是是位地址位地址所以该指令中的所以该指令中的17H17H是是2222H H单元的第单元的第7 7位位13n片内片内RAMRAM中有中有128128个位可个位可按位寻址的位,
15、位地按位寻址的位,位地址:址:00H00H7FH7FH分布在:分布在:20H20H2FH2FH单元;单元;n另外,在另外,在SFRSFR中还有中还有9292个位可按位寻址个位可按位寻址00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HFFHFFH52子系列才有子系列才有的的RAM区区普通普通RAM区区位寻址区位寻址区工作寄存器区工作寄存器区27H22H21H20H26H24H25H23H28H07 06 05 04 03 02 01 000F 0E 0D 0C 0B 0A 09 0817 16 15 14 13 12 11 101F 1E 1D 1C 1B 1
16、A 19 1827 26 25 24 23 22 21 202F 2E 2D 2C 2B 2A 29 2837 36 35 34 33 32 31 303F 3E 3D 3C 3B 3A 39 3847 46 45 44 43 42 41 402FH7F 7E 7D 7C 7B 7A 79 78位位地址地址总共总共128128个可个可按位按位寻址寻址的位的位单元地址单元地址D7 D6 D5 D4 D3 D2 D1 D0143.43.4 MCS-51MCS-51指令集指令集功能分五类,共功能分五类,共111111条指令条指令15MCS-51MCS-51指令集指令集(五大类功能)五大类功能)数据传
17、送类指令:数据传送类指令:(2929条)条)算术运算类指令:算术运算类指令:(2424条)条)逻辑运算及移位类指令:逻辑运算及移位类指令:(2424条)条)控制转移类指令:控制转移类指令:(1717条)条)位操作(布尔操作)类指令:(位操作(布尔操作)类指令:(1717条)条)16内部存储器间传送:内部存储器间传送:(MOVMOV1616条)条)外部数据存储器与累加器间传送外部数据存储器与累加器间传送:(MOVXMOVX4 4条)条)程序存储器向累加器传送:程序存储器向累加器传送:(MOVCMOVC2 2条)条)数据交换:(数据交换:(XCHXCH,XCHDXCHD,SWAPSWAP5 5条)
18、条)堆栈操作:堆栈操作:(PUSHPUSH,POPPOP2 2条)条)(一一)数据传送类指令(数据传送类指令(5 5种种/29/29条)条)17Acc 累加器累加器Direct 直接寻址直接寻址Ri 间接寻址间接寻址Rn 寄存器寄存器#data 立即数立即数RnRn:R0R0R7R7 RiRi:R0R0,R1R1#data#data:8 8位立即数位立即数#data16#data16:1616位立位立即数即数directdirect:直接地址直接地址relrel:8 8位带符号位带符号偏移量偏移量(一)数据传送类指令(5种/29条)内部存储器间传送指令内部存储器间传送指令 (16(16条条):
19、MOV MOV 类指令的操作方向总是后面的类指令的操作方向总是后面的操作数操作数 指向前面的操作数!指向前面的操作数!例例:MOV A:MOV A,30H 30H(A A)(30H30H)18数据传送类数据传送类指令指令(续)(续)外部数据存储器与累加器间传送外部数据存储器与累加器间传送 (4(4条条):):MOVXMOVX类指令可在累加器与以类指令可在累加器与以DPTRDPTR或或 RiRi所代表的所代表的外部外部 RAM RAM 之间进行数据传送。之间进行数据传送。例如例如:MOVX AMOVX A,DPTR DPTR(A)(A)(DPTR(DPTR)MOVX AMOVX A,Ri Ri
20、(A)(A)(RiRi)MOVX DPTR,A MOVX DPTR,A (DPTR(DPTR)(A)(A)MOVX MOVX RiRi,A ,A (RiRi)(A)(A)19程序存储器向累加器传送指令(程序存储器向累加器传送指令(2 2条):条):MOVC AMOVC A,A+DPTRA+DPTR MOVC A MOVC A,A+PC A+PC 通常称为查表指令,寻址方式属通常称为查表指令,寻址方式属:“基址寄存器基址寄存器 +变址寄存器变址寄存器间接寻址间接寻址”数据传送类数据传送类指令指令(续)(续)A+DPTRA+DPTR或或A+PCA+PC指向程序存储器中的某单元。拟指向程序存储器中的
21、某单元。拟传送给累加器传送给累加器ACC ACC 的数据就是程序中事先写进去的数据就是程序中事先写进去的表格数据。这些表格数据往往用伪指令的表格数据。这些表格数据往往用伪指令 DB,DW DB,DW 等定义在程序中。等定义在程序中。20数据传送类数据传送类指令指令(续)(续)数据交换指令数据交换指令(5(5条条):):XCH AXCH A,direct (direct (字节互换字节互换)XCH AXCH A,Ri Ri (字节互换字节互换)XCH AXCH A,Rn Rn (字节互换字节互换)(A A)(directdirect)或或(RiRi),或,或(RnRn)XCHD AXCHD A,
22、RiRi 累加器累加器 AccAcc的低的低4 4位与位与(RiRi)的低的低4 4位互换,位互换,各自的高各自的高4 4位不变位不变SWAP ASWAP A 累加器累加器 AccAcc的低的低4 4位与自身的高位与自身的高4 4位互换位互换21堆栈操作指令堆栈操作指令(2(2条条):):PUSHPUSH入栈指令入栈指令POP POP 出栈指令出栈指令堆栈区由特殊功能寄存器堆栈区由特殊功能寄存器堆栈指针堆栈指针SPSP 管理管理堆栈区可以安排在堆栈区可以安排在 RAMRAM区任意位置,一般不安区任意位置,一般不安排在工作寄存器区和可按位寻址的排在工作寄存器区和可按位寻址的RAMRAM区区,而是
23、放而是放在在RAMRAM区的靠后的位置区的靠后的位置堆栈总是指向栈顶堆栈总是指向栈顶通常通常PUSHPUSH与与POPPOP两条指令成对使用两条指令成对使用数据传送类数据传送类指令指令(续)(续)22例如:设例如:设(A)=7BH;(35H)=11H(A)=7BH;(35H)=11H 并且知道(并且知道(SPSP)60H60H PUSH ACC PUSH ACC ;(61H);(61H)#7BH#7BH PUSH 35H PUSH 35H ;(62H);(62H)(35H)(35H)即:即:(62H)(62H)#11H#11H POP ACC POP ACC ;(A);(A)(62H)(62H
24、)即:即:(A)A)#11H#11H POP 5AH POP 5AH ;(5AH);(5AH)(61H)(61H)即:即:(5AH)(5AH)#7BH#7BH23(二二)算术运算类指令(算术运算类指令(6 6种种/24/24条)条)加法运算:加法运算:(ADD(ADD4 4条条)带进位加法运算带进位加法运算:(ADDC:(ADDC4 4条条)带借位减法运算带借位减法运算:(SUBB:(SUBB4 4条条)加加1/1/减减1 1操作:操作:(INC(INC,DECDEC9 9条条)单字节乘单字节乘/除法运算除法运算:(:(MULMUL,DIVDIV2 2条条)十进制调整:十进制调整:(DA A(
25、DA A1 1条条)24(二二)算术运算类指令算术运算类指令(续)(续)加法运算:加法运算:(ADDADD4 4条)条)带进位加法运算带进位加法运算:(ADDCADDC4 4条)条)带借位减法运算:带借位减法运算:(SUBBSUBB4 4条)条)所有的加法所有的加法(ADD)(ADD)、带进位加法带进位加法(ADDC)(ADDC)、带借位减带借位减法法(SUBB)(SUBB)运算都是以运算都是以 A A为一个加数或被减数为一个加数或被减数,最终最终结果也存进结果也存进 A A。加法加法(ADD)(ADD)、带进位加法带进位加法(ADDC)(ADDC)以及带借位减法以及带借位减法(SUBB)(S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机学习 第三章 单片机 学习 第三
限制150内