1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,北京航空航天大学出版社,2,指令系统及汇编语言程序设计,*,2,指令系统及汇编语言程序设计,教学目的,熟悉单片机的寻址方式,掌握指令系统中的常用指令的用法,了解汇编语言伪指令及其用法,熟悉汇编语言程序的三种基本结构,2,本章内容,寻址方式,指令系统,汇编语言指令格式,汇编语言程序设计概述,3,2.1,寻址方式,指令的机器代码由操作码和操作数组成。其中操作码规定了指令的性质和功能,操作数说明参与操作的数据或该数据所存放的地址。,AT89,系列单片机指令系统的寻址方式有,7,种,寄存器寻址、直接寻址、立即寻址、
2、寄存器间接寻址、变址寻址、相对寻址和位寻址。,寻址方式,寄存器寻址,寄存器寻址方式以指令中给出的某一寄存器的内容作为操作数。可以实现寄存器寻址操作的寄存器包括寄存器组,R0R7,,累加器,ACC,,寄存器,B,,数据指针,DPTR,和进位,Cy,等。,直接寻址,直接寻址方式在指令中直接给出操作数所在存储单元的地址,该地址指出了参与运算或传送的数据所在的字节单元或位的地址。直接寻址方式中操作数存储的空间有以下,3,种:,特殊功能寄存器,SFR,;,片内,RAM,的低,128B(00H7FH),;,位地址空间。,2.1,寻址方式,5,立即寻址,立即寻址方式在指令中直接给出参与操作的常数,操作码后面
3、紧跟,1,个或,2,个字节的操作数,(,称为立即数,),。立即寻址时操作数存放于程序存储器中,不占用内部,RAM,单元。在采用立即寻址的指令中立即数前面必须加上“”号标识,可以是一个,8,位或,16,位的二进制常数,也可以用十进制或十六进制表示。,寄存器间接寻址,寄存器间接寻址方式以指令中指定寄存器的内容作为地址,而该地址单元的内容才是操作数。这是一种二次寻址方式,所以称为寄存器间接寻址。程序执行分两步完成:首先根据指令得到寄存器的内容,即操作数的地址;然后根据地址找到所需要的操作数,并完成相应的操作。,寻址方式,2.1,寻址方式,6,变址寻址(基址寄存器,+,变址寄存器间接寻址),变址寻址指
4、令由基址寄存器和变址寄存器组成,,16,位寄存器,DPTR(,数据指针,),或,PC,(程序计数器)作为基址寄存器,,8,位累加器,A,作为变址寄存器。,相对寻址,相对寻址主要是针对跳转指令而言的。对于跳转指令,转去的目标指令的地址是通过正在执行的指令地址来确定的,即以当前程序计数器,PC,值为基准,加上指令中给定的偏移量,rel,所得结果而形成实际的转移地址。,位寻址,AT89C52,片内,RAM,有两个区域可以进行位寻址:一是,20H2FH,的,16,个单元共,128,位的位地址;二是字节地址为,8,的倍数的,12,个特殊功能寄存器,共,92,个位地址。,寻址方式,2.1,寻址方式,7,A
5、T89C52,单片机的寻址方式多种,总的来说有以下几个原则:,对程序存储器只能采用立即寻址和变址寻址方式;,对特殊功能寄存器空间只能采用直接寻址方式,不能采用寄存器间接寻址方式;,内部数据存储器高,128B,只能采用寄存器间接寻址方式,不能采用直接寻址方式;,内部数据存储器低,128B,既能采用寄存器间接寻址方式,又能采用直接寻址方式;,外部扩展数据存储器只能采用,MOVX,指令访问。,寻址方式,2.1,寻址方式,8,2.2,指令系统,数据传送指令(,29,条),算术运算指令(,24,条),逻辑运算指令(,24,条),位操作类指令(,17,条),控制转移类指令(,17,条),数据传送指令,数据
6、传送指令操作可以在累加器,A,、工作寄存器,R0R7,、内部数据存储器、外部数据存储器和程序存储器之间进行。,指令系统,2.2,指令系统,10,数据传送指令,以累加器,A,为目的操作数的指令,,MOV(Move,),以寄存器,Rn,为目的操作数的指令,以直接地址为目的操作数的指令,以间接地址为目的操作数的指令,16,位数据传送指令,查表指令,,MOVC,(,Move Code),累加器,A,与片外,RAM,数据传送指令,,MOVX(Move,External RAM),堆栈操作指令,,PUSH,,,POP,数据交换指令,,XCH(Exchange,),,,XCHD(Exchange,Low-o
7、rder Digit),,,SWAP,指令系统,2.2,指令系统,11,数据传送指令,例,2.5,共阴极数码管对应的显示代码程序。,ORG0000HMOVA,,,30H,;,PC=0000,,双字节指令,MOVA,,,#80H,;,PC=0002,,双字节指令,MOVC A,,,A+PC,;,PC=0004,,双字节指令 ;,PC=0006 0RG 0086H SEGTAB,:,DB 3FH,,,06H,,,5BH,,,4FH,,,66H,;对应于字符,0,,,l,,,2,,,3,,,4 DB 6DH,,,7DH,,,07H,,,7FH,,,67H,;对应于字符,5,,,6,,,7,,,8,,
8、9,指令系统,2.2,指令系统,12,算术运算指令,算术运算指令包括加、减、乘、除基本四则运算和加,1(,增量,),、减,1(,减量,),运算。除加,1,和减,1,指令外,算术运算指令影响进位,Cy,、半进位,Ac,、溢出位,Ov,三个标志位。,1,不带进位的加法指令,,ADD,2,带,Cy,进位的加法指令,ADDC,和带,Cy,的减法指令,SUBB,3,加,l,指令,INC,和减,1,指令,DEC,4,十进制调整指令,,DA,5,乘法指令,,MUL,6,除法指令,,DIV,指令系统,2.2,指令系统,13,逻辑运算指令,逻辑运算指令包括清,0,,求反、移位、与、或、异或等操作。操作助记符:
9、CLR,、,CPL,、,RL,、,RLC,、,RR,、,RRC,、,ANL,、,ORL,、,XRL,。,1,逻辑与指令,,ANL,2,逻辑或指令,,ORL,3,逻辑异或指令,,XRL,4,累加器清,0,和取反指令,,CLR,,,CPL,5,移位指令,,RL,(,Rotate Left,),,RLC(Rotate,Left With Carry Flag),,,RR(Rotate,right),,,RRC(Rotate,Right With Carry Flag),指令系统,14,位(布尔)操作类指令,AT89C52,有,1,个布尔处理机,它具有一套处理位变量的指令集,它以进位标志,Cy,作为
10、累加器,C,,以片内,RAM,地址,20H,2FH,单元中的,128,位和地址为,8,的倍数的,SFR,的位地址单元作为操作数,进行位变量的传送、修改和逻辑操作等。,1,位传送指令,,MOV,2,位清,0,,置,1,,取反指令,,CLR,,,SETB,(,Set Bit,),,CPL,3,位运算指令,,ANL,,,ORL,4,位条件转移指令,,JC,,,JNC,,,JB,,,JNB,,,JBC,指令系统,2.2,指令系统,15,控制转移指令,程序在执行过程中,有时因为操作的需要,不能按顺序逐条执行指令,而需要改变程序的运行方向,完成这些操作需要利用控制转移类指令。,1,无条件转移指令,,AJM
11、P,,,LJMP,,,SJMP,,,JMP,2,条件转移指令,累加器,A,判零转移指令,,JZ,,,JNZ,比较转移指令,,CJNE,减一条件转移指令,,DJNZ,3,子程序调用和返回指令,调用指令,,ACALL,返回指令,,RET,RETI,4,空操作指令,指令系统,2.2,指令系统,16,2.3,汇编语言指令格式,汇编语言执行指令格式,汇编伪指令,汇编语言执行指令格式,标号:,操作码,操作数,1,,,操作数,2,;注释,标号代表程序的起始地址、程序名称或转移的目标地址,由用户定义的符号组成。操作码与操作数应按规定要求书写,操作码是指令的核心,不可缺少。操作码和操作数之间必须用空格分隔,操作
12、数与操作数之间必须用逗号“,”,分隔。注释是为了提高程序的可读性对指令作的说明,注释前应加上分号“;”。,汇编语言指令格式,2.3,汇编语言指令格式,18,汇编伪指令,1,定位伪指令,,ORG,2,结束汇编伪指令,,END,3,数据说明伪指令,定义字节伪指令,,DB,定义字伪指令,,DW,定义存储空间伪指令,,DS,4,赋值伪指令,,EQU,5,数据地址赋值伪指令,,DATA,6,位地址赋值伪指令,,BIT,汇编语言指令格式,2.3,汇编语言指令格式,19,2.4,汇编语言程序设计概述,汇编语言的特点,汇编语言程序设计的步骤,汇编语言程序的基本结构,汇编语言的特点,用汇编语言编写的程序效率高,
13、占用存储空间小,运行速度快;,汇编语言是面向计算机的;,汇编语言程序能够直接管理和控制硬件设备;,汇编语言缺乏通用性,程序不易移植。,汇编语言程序设计概述,2.4,汇编语言程序设计概述,21,汇编语言程序设计的步骤,建立数学模型,确定算法,制定程序流程图,确定数据结构,写出源程序,上机调试程序,汇编语言程序设计概述,2.4,汇编语言程序设计概述,22,汇编语言程序的基本结构,顺序结构,分支结构,单分支结构,多分支结构,循环结构,汇编语言程序设计概述,2.4,汇编语言程序设计概述,23,汇编语言程序的基本结构,循环结构程序举例,例,2.13 AT89C52,的晶振为,12MHz,,设计,10ms,延时程序。,解:,12MHz,晶振的机器周期为,1,,可用双重循环写出延时程序。根据指令的执行周期计算延迟时间。,ORG0000HDEL:MOV R7,#40 ;,单周期,DEL1:MOV R6,#125 ;,单周期,DEL2:DJNZ R6,DEL2 ;,双周期,DJNZ R7,DEL1 ;,双周期,RET,汇编语言程序设计概述,2.4,汇编语言程序设计概述,24,本章小结,熟悉单片机的寻址方式,掌握指令系统中的常用指令的用法,了解汇编语言伪指令及其用法,熟悉汇编语言程序的三种基本结构,25,






