1 / 20

51 单片机指令格式及指令系统

6. 51 单片机指令格式及指令系统. 本讲主要内容:. 6-1. 51 单片机汇编语言的指令格式 6-2. 指令表的查阅方法和指令功能的描述 6-3. 几种不同的寻址方法. 6-1. 51 单片机汇编语言的指令格式. 一个简单的彩灯设计 下图中的 8 个发光二极管代表 8 组彩灯,让它们按你的想法显示吧. 图 3-1 彩灯电路. 6-1. 51 单片机汇编语言的指令格式. 程序是如何进单片机的?. 开发软件. 编程器. 汇编语言程序. 6-1. 51 单片机汇编语言的指令格式. 51 单片机指令格式.

thane-beck
Télécharger la présentation

51 单片机指令格式及指令系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6 51单片机指令格式及指令系统

  2. 本讲主要内容: 6-1. 51单片机汇编语言的指令格式 6-2. 指令表的查阅方法和指令功能的描述 6-3. 几种不同的寻址方法 SiChuan Engineering Technical College-1959

  3. 6-1. 51单片机汇编语言的指令格式 • 一个简单的彩灯设计 下图中的8个发光二极管代表8组彩灯,让它们按你的想法显示吧 图3-1 彩灯电路 SiChuan Engineering Technical College-1959

  4. 6-1. 51单片机汇编语言的指令格式 程序是如何进单片机的? 开发软件 编程器 • 汇编语言程序 SiChuan Engineering Technical College-1959

  5. 6-1. 51单片机汇编语言的指令格式 • 51单片机指令格式 SiChuan Engineering Technical College-1959

  6. 6-1. 51单片机汇编语言的指令格式 • 汇编语言指令格式 [标号]: 操作码 [操作数] ;[注释] ↓ ↓ ↙ ↘ ↓ WAIT0 : JC TI, WAIT0 ;发送完一个字节吗? • 标号 又称为指令地址符号。对标号有如下规定: • 一般由1~8个ASCII字符组成,以字母开头,其余字符可以是字母、数字和其他特定字符。 • 不能使用助记符、伪指令或者寄存器的符号名称做标号。 • 与操作码之间用冒号分开,带方括号表示为可选项。 • 一个标号只能在程序中出现一次,不能重复出现。 • 操作码 是由助记符表示的字符串,它规定了指令要完成的具体操作。 • 操作数 是指参加操作的数据或数据的地址。 • 注 释 是为该条指令所做的说明,以便于阅读,中英文不限 ,用“;”和指令分开。 SiChuan Engineering Technical College-1959

  7. 6-1. 51单片机汇编语言的指令格式 分类方法 按指令占用的ROM 空间 按指令功能 按指令执行的时间 位操作类指令 数据传送类指令 算术运算类指令 逻辑运算类指令 控制转移类指令 单周期指令 单字节指令 双周期指令 双字节指令 三字节指令 四周期指令 • 51单片机汇编语言指令分类 SiChuan Engineering Technical College-1959

  8. 6-1. 51单片机汇编语言的指令格式 • 汇编指令及其注释中常用的符号 • Rn(n=0~7)------当前选中的工作寄存器组中的寄存器R0~R7之一 • Ri(i=0,1)------当前选中的工作寄存器组中的寄存器R0或R1 • @ ---------------间址寄存器前缀 • #data ------------8位立即数 • #data16-----------16位立即数 • direct------------片内低128个RAM单元地址及SFR地址(可用符号名称表示) • addr11------------11位目的地址 • addr16------------16位目的地址 • rel---------------补码形式表示的8位地址偏移量,值在-128~+127范围内 • bit---------------片内RAM位地址、SFR的位地址(可用符号或名称表示) • /-----------------位操作数的取反操作前缀 • (×)------------表示 × 地址单元或寄存器中的内容 • ((×))--------表示以 × 单元或寄存器内容为地址单元的内容 SiChuan Engineering Technical College-1959

  9. 6-2. 指令表的查阅 • 从指令表中可以得到的信息 • 指令名称——指令的书写规范 • 机器代码——指令在单片机中的存储内容 • 指令功能——指令的执行效果 • 指令的字节数——指令的长度(所占存储单元的个数) • 指令周期——指令的执行时间(以机器周期为单位) SiChuan Engineering Technical College-1959

  10. 6-2. 指令表的查阅 • 指令表的作用 • 用于修改指令中的语法错误。 例如:查找指令MOV R8,#30中的语法错误。 语法错误一般会出现在标号处(标号过长、标号名称重复)、操作码处(操作码使用不当、书写错误)、操作数处(操作数使用不当、书写错误)、符号错误等处。 本条指令中操作数R8是错误的,在指令表中词条指令的格式为: MOV Rn,#data,其中Rn代表R0~R7,并没有R8。 SiChuan Engineering Technical College-1959

  11. 6-2. 指令表的查阅 • 用于了解指令功能 例如:若CY=1,(A)=30H,(55H)=70H,问以下两条指令的执行效果一样吗? a)ADD A,55H; b)ADDC A,55H; 答:查阅指令表后可知: a)指令的功能为A (A)+(55H) b)指令的功能为A (A)+(55H)+CY 可见指令a为两个数相加,而指令b为三个数相加,而此时CY=1,故执行的效果不一样。 (A)=0A0H (A)=0A1H SiChuan Engineering Technical College-1959

  12. 6-2. 指令表的查阅 64H ××H 03H 42H 4500H PC (PC)+3,SP ( SP)+1,(SP) (PC)7~0, SP (SP)+1,(SP) (PC)8~15,PC addr16 例如:若(SP)=62H,问以下程序段中 4200H: LCALL DISPLAY 4203H: MOV 41H,#33 ………… 4500H: DISPLAY:MOV 40H,A ………… LCALL指令执行后 ( SP)= (62H)= (63H)= (64H)= (PC)= 查阅指令表后可知LCALL指令为子程序调用指令,其功能为: 此时,会将LCALL指令的下一条指令的首地址(4203H)放入堆栈中保存,以便子程序执行后返回正确的位置,然后程序转向DISPLAY(4500H)处执行。 SiChuan Engineering Technical College-1959

  13. 6-3. 寻址方式 • 立即寻址 例: MOV 30H,#00H;将立即数00H送给30H单元,即 30H←00H 在上面这条指令中,带下划线的操作数(在传送指令中称源 操作数)是一个立即数,即一个指定的常数,这种寻址方式 就称为立即寻址。 注意:立即数的前面必有“#”标志。 比如: ADD A,#0AFH ;A←(A)+AFH SiChuan Engineering Technical College-1959

  14. 6-3. 寻址方式 • 直接寻址 例: MOV A,30H;将内部RAM中30H单元内的数据 ;送给累加器A,即 A←(30H) 在上面这条指令中,带下划线的操作数(源操作数)是直接给出内部RAM中某个单元的地址或名称(特殊功能寄存器),这种寻址方式称为直接寻址。 比如: MOV 40H,A; 40H←(A) SUBB A,60H; A←(A)-(60H)-CY SiChuan Engineering Technical College-1959

  15. 6-3. 寻址方式 • 寄存器寻址 例: MOV A,R7;将通用寄存器R7中的数据送给A,即A←(R7) 在上面这条指令中,带下划线的操作数(源操作数)是当前工作寄存器组中某个寄存器,这种寻址方式称为寄存器寻址。 比如: XCH A,R1;累加器A和寄存器R1中的数互换 SiChuan Engineering Technical College-1959

  16. 6-3. 寻址方式 • 寄存器间接寻址 例: MOV R0,#3FH ;R0←3FH,立即寻址方式 MOV A,@R0;A←((R0)),即:A←(3FH) 在上面的第2条指令中,带下划线的操作数不是R0,而是以(R0)为地址,间接找到内部RAM中的3FH单元,将(3FH)送给A,这种寻址方式称为寄存器间接寻址。 可用R0、R1和DPTR作间址寄存器,访问片内RAM或片外64KB的RAM地址空间。 比如: MOV DPTR,#0CFA0H ;将十六位地址CFA0H赋给数据指针DPTR MOVX A,@DPTR;将片外RAM(CFA0H)单元内的数送给A SiChuan Engineering Technical College-1959

  17. 6-3. 寻址方式 • 变址寻址 例: MOVC A,@A+DPTR;将地址为(A)+(DPTR) 的ROM ;单元中的数送给A 在上面这条指令中,带下划线的操作数是以(DPTR)为基址,(A)为变址,将两者之和作为地址,找出该地址对应的ROM单元,再将该单元的数送给A,这种寻址方式称为变址寻址方式。MCS-51单片机中还有两条变址寻址指令: MOVC A,@A+PC JMP @A+DPTR SiChuan Engineering Technical College-1959

  18. 6-3. 寻址方式 • 相对寻址 例: CJNE A,#80H,BUDENG;如(A)≠80H,跳转到BUDENG JNC DAYU;如(A)>80H,跳转到DAYU …… BUDENG: SETB FLAG0 ;置位标志位FLAG0 …… DAYU: SETB FLAG1 ;置位标志位FLAG1 …… 在上面这个程序片段中,带下划线的操作数指明了程序跳转的目的位置,这个目的位置的PC相对于下一条程序语句的PC不得超出-128~+127字节的范围。 SiChuan Engineering Technical College-1959

  19. 6-3. 寻址方式 • 位寻址 例: MOV C,30H;将地址为30H的位的状态赋给进位位Cy SETB P1.0;将P1口(对应特殊功能寄存器P1) 的P1.0位置1 在上面这两条指令中,带下划线的操作数不是某个字节地址或某个数,而是内部RAM中某个可直接寻址位的地址或名称,是针对位(bit)进行的操作,这种寻址方式称为位寻址。在指令表中,凡用bit和C做操作数的指令都属此类,它主要用在位操作指令和部分条件转移指令中。 比如: ANL C,OV ;位C和溢出位OV相与,结果再赋给C,即 ;C←C∧OV CLR RI ;将串口接收中断位RI清0 SiChuan Engineering Technical College-1959

  20. 思考题 寻址方式: 位寻址 寻址方式: 相对寻址 寻址方式: 寄存器间接寻址 寻址方式: 立即寻址 寻址方式: 寄存器寻址 操作数错误,类型不匹配可改为: MOV A,30H 或 MOV 20H,C 操作数错误,可改为: MOV A,Rn;Rn:R0~R7 操作数错误,可改为: MOVC A,@A+PC 操作数错误,可改为: MOVX A,@R0 操作数错误,寄存器之间不可赋值,可改为: MOV A,R5 MOV R6,A • 结合指令表,观察以下几条指令,看看是否有语法错误,如有请改正,如无,请说明它属于哪种寻址方式: MOV A,R0 MOV A,C MOV A,@R1 ADD A,R8 MOVC A,@A+R0 CJNE A,50H,0FH MOV R6,R5 MOV A , #1FH MOVX A,@R2 MOV C,P1.0 SiChuan Engineering Technical College-1959

More Related