指令系统与程序设计.ppt_第1页
指令系统与程序设计.ppt_第2页
指令系统与程序设计.ppt_第3页
指令系统与程序设计.ppt_第4页
指令系统与程序设计.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机汇编语言及其指令系统,学习要求 了解MCS-51汇编语言指令的形式,掌握指令的格式。 掌握MCS-51单片机指令的寻址方式 掌握MCS-51汇编语言指令的分类及其使用。,指令系统概述,汇编语言的指令格式? 标号:操作码助记符 (目的操作数),(源操作数);注释,2.1 寻址方式,寻址方式,就是指如何找到存放被操作数据的位置(地址)的方法。,立即寻址,由指令直接给出操作数:8位和16位。数值前加“#”表示,MOV A,#30H,速递快信,直接寻址,指令直接给出操作数地址的寻址方式。,MOV A,3AH,XXH,寄存器寻址,以通用寄存器的内容为操作数的寻址方式。 注:A和B既是通用寄存器,又

2、是具有直接地址的特殊功能寄存器。,寄存器,MOV A,R1,寄存器间接寻址,以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。,XXH,MOV A,R1,可寻址内部RAM128B/外部RAM,寻址DPTR,变址寻址,由基址寄存器PC或DPTR加上偏移量寄存器A中内容之和形成操作数地址的寻址方式 变址寻址只能对程序存储器中的数据作寻址操作,因此只有读操作而无写操作,基址寄存器 1000H,变址寄存器,A,1000H+30H,1030H,30,65,相对寻址,以当前PC的内容为基址,加上指令给出的相对偏移量形成新的PC值的寻址方式,2000H+2H+28H,rel是有符号的8位二进制数,用

3、补码表示。相对偏移在127128字节单元之间,源地址,目的地址,rel,转移指令本身字节数,位寻址,对位地址中的内容作位操作的寻址方式 位寻址只能对有位地址的空间(20H-2FH和SFR的可寻址位)作寻址操作。,0,MOV C,37H,0,寻址空间,2.2 分类指令系统,MCS-51单片机共有111条指令,按功能分类,可分为5大类: 数据传送类指令(共29条) 算术操作类指令(共24条) 逻辑操作类指令(共24条) 控制程序转移类指令(共17条) 布尔变量操作类指令(共17条),2.2.1 数据传送类指令,累加器A,直接地址 direct,立即数 #data,寄存器 R0R7,寄存器间接 R0

4、、R1,数据指针 DPTR,入、出栈 SP,入,出,位累加器C,1,1,传送:把源地址单元的内容传输到目的地址单元中去,源地址单元内容不变 数据传送指令不影响标志位 1. 以A为目的操作数 MOV A,dir MOV A,#data MOV A,Rn MOV A,Ri 例:R120H,(20H)55H, 指令 MOV A,R1 ;执行后,A55H,2. 以Rn为目的操作数 MOV Rn,dir MOV Rn,#data MOV Rn,A 例: (40H)30H,指令 MOV R7,40H 执行后, R730H,3. 以直接地址为目的操作数 MOV dir1,dir2 MOV dir,#data

5、 MOV dir,A MOV dir,Rn MOV dir,Ri 例:R0=50H,(50H)=10H, 指令 MOV 35H, R0 执行后,(35H)10H,4. 以寄存器间接地址为目的操作数 MOV Ri,dir MOV Ri,#data MOV Ri,A 5. 查表指令(读程序存储器) MOVC A,(A+DPTR) MOVC A,(A+PC) 例:A20H,DPTR2000H, 指令 MOVC A,(A+DPTR) 执行后,程序存储器2020H单元中的内容送入A。,6. 访问外部数据RAM MOVX DPTR,A MOVX A,DPTR MOVX A,Ri MOVX Ri,A 例:D

6、PTR2000H, 外部RAM中(2000H)=18H 指令 MOVX A, DPTR ; 执行后,A18H 例:P210H,R150H,A64H, 指令 MOVX R1,A 执行后,外部RAM中(1050H)64H 7. 堆栈操作指令 入栈PUSH dir 出栈POP dir,8. 交换指令 (1)字节交换 XCH A,Rn XCH A,Ri XCH A,dir (2)半字节交换 XCHD A,Ri (3)累加器A低4位与高4位交换 SWAP A 例:A=80H, R0=32H, (32H)=FFH, 指令 XCHD A, R0; 执行后, A=8FH, (32H)=F0H 例:A35H,

7、指令 SWAP A ; 执行后, A=53H 9. 16位数据传送指令 MOV DPTR,#data16,2.2.2 算术操作指令,执行加、减、乘、除运算。有些算术指令执行的结果将使Cy,Ac,OV置位或复位,并影响累加器A的P 1. 加法指令 (1)不带进位加法指令 ADD A,#data ADD A,dir ADD A,Rn ADD A,Ri,1)对标志位的影响: Cy:若D7有进位,则置1; AC:若D3有进位,则置1; OV:CyCs=1,则置1 2)溢出规律: 无符号数: 若Cy=1,则溢出 有符号数: 若OV=1, 则溢出,(3)加1指令 INC A INC dir INC Ri

8、INC Rn INC DPTR 除INC A会影响P外,其余均不影响各标志位,(2)带进位加法指令 ADDC A,dir ADDC A,#data ADDC A,Rn ADDC A,Ri 例:A的内容为C3H,R0的内容为AAH,Cy1。 指令 ADDC A,R0 执行后,A=6EH, Ac=0, Cy=1, OV=1,2. 减法指令 (1)带借位减法指令 SUBB A,dir SUBB A,#data SUBB A,Rn SUBB A,Ri 例: A=0C9H, R1=54H, Cy=1, 指令SUBB A, R1 执行后,A74H, Cy=0, OV=1 (2)减1指令 DEC A DEC

9、 dir DEC Ri DEC Rn 不影响各标志位,3. 二十进制调整指令 DA A ;把A中按二进制相加后的结果调整成按BCD数相加的结果 例: A=56BCD, B=67BCD, 执行指令 ADDC A, B DA A 结果,A=23BCD,Cy=1 4. 乘法指令 MUL A, B 例:A50H, B0A0H, 指令 MUL A, B 执行后,A00H, B32H, OV=1, Cy=0 5. 除法指令 DIV A, B 例:A0FBH, B12H, 指令DIV A, B执行后 , A0DH(商), B11H(余数), OV=0, Cy=0,2.2.3 逻辑操作指令,1. 逻辑与 AN

10、L A,dir ANL A,#data ANL A,Rn ANL A,Ri ANL dir,A ANL dir,#data 可用于清“0”,2. 逻辑或 ORL A,dir ORL A,#data ORL A,Rn ORL A,Ri ORL dir,A ORL dir,#data 可用于置位,3. 逻辑异或 “求反” XRL A,dir XRL A,#data XRL A,Rn XRL A,Ri XRL dir,A XRL dir,#data,4. 求反 CPL A ; A中的内容按位取反 5. 清0 CLR A ;A中的各位均为0,6. 循环移位 RL A ;累加器A中的内容循环左移一位 R

11、R A ;累加器A中的内容循环右移一位 RLC A ;A中内容连同进位Cy循环左移一位 RRC A ;A中内容连同进位Cy循环右移一位,影响标志的指令,2.2.4 布尔变量操作,布尔处理器中,进位标志C相当于一般CPU中的累加器,通过C完成位的传送和逻辑运算 位地址范围:20H-2FH和SFR中的可寻址位 位地址的表达: 例PSW中的位5 直接地址方式:0D5H 点操作符方式:PSW.5 位名称方式:F0 用户定义名方式:伪指令 bit USER bit F0定义后,允许用USER代替F0,1. 位求反指令 CPL C CPL bit,2. 清0指令 CLR C ;0C CLR bit ;0b

12、it 3. 置位指令 SETB C ;1C SETB bit;1bit,4. 位逻辑“与” ANL C,bit ;(Cy) (Cy)(bit) ANL C,/bit ;(Cy) (Cy)(bit 5. 位逻辑“或” ORL C,bit ;(Cy) (Cy)(bit) ORL C,/bit ;(Cy) (Cy)(bit),6. 位传送指令 MOV C,bit ;(bit) C MOV bit,C ;C (bit) 7. 位控制转移指令以位的状态作为实现程序转移的判断条件: ()判布尔累加器Cy的转移指令 JC rel 若(Cy)=1, 则(PC)(PC)+2 + rel,即转移 若(Cy)=0,

13、 则(PC)(PC)+2, 即顺序执行 JNC rel 若(Cy)=0,则(PC)(PC)+2 + rel,即转移 若(Cy)=1,则(PC)(PC)+2 ,即顺序执行 注:执行该指令时,不改变进位位Cy的值。,(2)判位变量转移指令 JB bit,rel 若(bit)=1,则(PC)(PC)+3+ rel,即转移 若(bit)=0,则(PC)(PC)+3,即顺序执行 JNB bit,rel 若(bit)=0,则(PC)(PC)+3+rel,即转移 若(bit)=1,则(PC)(PC)+3,即顺序执行 (3)判位变量为1转移并清零指令 JBC bit,rel 若(bit)=0,则(PC)(PC

14、)+3; 若(bit)=1,则(PC)(PC)+3+rel,且(bit)0 注:执行该指令后,bit位值为0。,2.2.5 控制程序转移类指令,1. 子程序调用及返回指令 (1)绝对调用指令 ACALL addr11 不改变原PC的高5位,仅把11位地址addr11送入PC的低11位,以此确定子程序的入口地址。 实现在2K地址范围内的子程序调用。 64K程序ROM被分成32个基本2K地址范围。须保证紧接ACALL指令后面的那一条指令的第一字节与被调用子程序的入口地址在同一2K范围内,否则将不能使用ACALL指令实现这种调用。,(2)长调用指令 LCALL addr16 64K程序ROM全范围子

15、程序调用指令 子程序的入口地址可在64K地址空间中的任一处 (3)子程序返回指令 RET (4)中断返回指令 RETI RETI指令不能用RET代替 2. 空操作 NOP ;(PC)+1(PC) CPU不作任何操作;占用一个机器周期 可用于等待、延时,3. 无条件转移指令 (1)长转移 LJMP addr16 64K程序存储器空间的全范围转移指令 (2)绝对转移 AJMP addr11 2K地址范围内的转移指令 对转移目的地址的要求同ACALL (3)短转移指令 SJMP rel ;(PC)+ 2 + rel (PC) 一页地址范围内的相对转移指令。 转移范围为-126D+129D,(4)间接

16、转移指令 JMP A+DPTR ; (A)+(DPTR)(PC) 不影响A和DPTR原内容,不影响标志位 4. 条件转移指令 (1)累加器判零条件转移指令 JZ rel 若A=00H, 则(PC)+ 2 + rel(PC),程序转移 若A00H, 则(PC)+ 2 (PC), 程序顺序执行 JNZ rel 若A00H, 则(PC)+ 2 + rel(PC),程序转移 若A=00H,则(PC)+ 2 (PC), 程序顺序执行,(2)两数不等转移指令 CJNE A,dir,rel CJNE A,#data,rel CJNE Rn, #data,rel CJNE Ri,#data,rel 若目的操作

17、数=源操作数, 则(PC)+ 3(PC) 若目的操作数源操作数, 则 0 (Cy),(PC)+3+rel(PC) 若目的操作数源操作数, 则 1 (Cy),(PC)+3+rel(PC),(3)减1条件转移指令 DJNZ Rn,rel ;Rn-1Rn 若Rn0,则(PC)+2+rel(PC),程序转移 若Rn0,则(PC)+ 2(PC),程序顺序执行 DJNZ dir,rel ;(dir)-1dir 若(dir)0,则(PC)+3+rel(PC),程序转移 若(dir)0,则(PC)+3l(PC),程序顺序执行,2.3 伪指令,协助汇编,不产生相对应的操作码 1.常量 数值常量:N进制数,ASC

18、II码如A 符号常量:由EQU定义,赋值伪指令 给标号变量(AA)赋以数值或变量(R3) 例AA EQU R3 2.标号 指令标号 标号:操作码助记符 (目的操作数),(源操作数),数据标号:使用伪指令DB和DW定义常数和变量 DB DW 把项或项表的数值存入从标号开始的连续单元中; DB的项是一个字节; DW的项是一个字(两个字节),主要用来定义地址 存放在程序ROM中,位置计数器LC,“$”:记录当前汇编地址 3.ORG:汇编起始地址定位伪指令 用来规定目的程序的起始地址 ORG nn ;nn为十进制或十六进制数 4. END:汇编程序结束伪指令 用在程序的末尾,表示程序结束,ORG003

19、0H CLEAR: MOVR0, #00H MOVDPTR, #7000H CLEAR1: CLR A MOVX DPTR, A INCDPTR INCR0 CJNER0, #00H, CLEAR1 SJMPCLEAR END,ORG 0070H PWORD: MOV DPTR, #7000H MOVX A,DPTR ANL A, #0FH SWAP A MOV B, A INC DPTR MOVX A,DPTR ANL A, #0FH ORL A, B INC DPTR MOVX DPTR, A END,2.4. 指令的时序 单片机以晶体振荡器的振荡周期(外部引入的时钟周期)为最小的时序单位

20、 以外接晶振为12MHz为例 振荡周期1/fosc=1/12MHz=0.0833us 状态周期2/fosc=2/12MHz=0.167us 机器周期12/fosc=12/12MHz=1us 指令周期(1-4)机器周期1-4 us,第3章 程序设计的基本技术,汇编语言:用助记符表示指令系统 源程序:汇编语言编写的程序 源程序经过“汇编”翻译成目标程序 设计步骤: 分析问题,确定算法或解题思想 根据算法或解题思路确定运算步骤和顺序,绘制流程图和结构图 分配存储空间和工作单元; 编制程序; 程序静态检查,上机调试。,3.1 顺序程序,顺序执行, 无分支或跳转,MOV A, 40H SWAP A AN

21、L A, #0FH MOV B, #10 MUL AB ANL 40H, #0FH ADD A, 40H MOV 40H, A,MOV A, 21H ADD A, 23H DA A MOV 26H, A MOV A, 20H ADDC A, 22H DA A MOV 25H, A CLR A RLC A MOV 24H, A,查表指令: MOVC A, (A+DPTR) MOVC A, (A+PC) 例:设变量放在片内RAM 20H单元,其取值范围为00H, 01H, 02H, 03H, 04H, 05H,要求编制一段查表程序,查出变量的平方值,并放入片内RAM 21H单元。 MAIN: MO

22、V DPTR,#0500H MOV A,20H MOVC A,(DPTR+A) MOV 21H,A SJMP $ TAB EQU 0500H TAB: DB 00H, 01H, 04H, 09H, 10H, 19H,3.2 分支程序,含有转移指令: JZ, JNZ, JC, JNC, JB, JNB, JBC , CJNE, LJMP, AJMP, SJMP,JMP,MAIN:MOV A,30H JZ NEXT ANL A,80H JZ ED MOV A,#05H ADD A,30H MOV 30H,A SJMP ED NEXT:MOV 30H,#20H ED: SJMP $,例:设变量X以补

23、码的形式存放在片内RAM 30H单元。编制程序,根据X的大小求出Y,并放回原单元。,JNB ACC.7, ED,ADD A, #5,例 内部RAM40H和41H单元中各有一无符号数,比较其大小,将大数存放于内部RAM60H单元中,小数存放于内部RAM61H单元,如两数相等,则分别送往这两个单元,MOV A, 40H MOV 61H, 41H CJNE A, 41H, $+3 JNC AGEQ XCH A, 61H AGEQ: MOV 60H, A SJMP $ END,3.3 循环程序,例1: MOV 23H, #0AH CLR A LOOP: ADD A, 23H DJNZ 23H, LOO

24、P SJMP $,减1非0转移指令:DJNZ,例2: MOV 40H, #DATA AGAIN: NOP NOP DJNZ 40H, AGAIN,例:将内部数据RAM中20H3FH单元的内容传送到外部数据存储器,起始单元地址为2000H。 MAIN:MOV R0,#20H MOV DPTR,#2000H MOV R1,#20H LOOP:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R1,LOOP SJMP $,例: MOV R3,#64H DELAY:MOV R2,#0FAH LOOP: NOP NOP DJNZ R2,LOOP DJNZ R3,DELA

25、Y SJMP $,3.4 子程序及其调用程序,注意: 子程序占用的存储单元和寄存器。内容先入栈保护,后出栈恢复。 入口参数和出口参数。调用之前要按照子程序的要求设置好入口参数。 参数的传递。子程序可以从指定的地址单元或寄存器获得调用程序的数据参数,经过调用后得到的数据可输出到指定的地址单元或寄存器,从而实现两者之间的参数传递。 可递归性与可重入性。可递归性是指子程序可以调用自己,可重入性是指一个子程序可以同时被多个程序调用。,例:通过调用子程序实现延时100ms,设单片机晶振频率为12MHz。 MAIN: PUSH PSW MOV PSW,#08H MOV R3,#64H LCALL DELAY POP PSW SJMP $ DELAY:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论