《指令系统及汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《指令系统及汇编语言程序设计.ppt(25页珍藏版)》请在三一办公上搜索。
1、2 指令系统及汇编语言程序设计,2,教学目的,熟悉单片机的寻址方式掌握指令系统中的常用指令的用法了解汇编语言伪指令及其用法熟悉汇编语言程序的三种基本结构,3,本章内容,寻址方式指令系统汇编语言指令格式汇编语言程序设计概述,2.1 寻址方式,指令的机器代码由操作码和操作数组成。其中操作码规定了指令的性质和功能,操作数说明参与操作的数据或该数据所存放的地址。AT89系列单片机指令系统的寻址方式有7种,寄存器寻址、直接寻址、立即寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。,5,寻址方式,寄存器寻址寄存器寻址方式以指令中给出的某一寄存器的内容作为操作数。可以实现寄存器寻址操作的寄存器包括寄存器组
2、R0R7,累加器ACC,寄存器B,数据指针DPTR和进位Cy等。直接寻址直接寻址方式在指令中直接给出操作数所在存储单元的地址,该地址指出了参与运算或传送的数据所在的字节单元或位的地址。直接寻址方式中操作数存储的空间有以下3种:特殊功能寄存器SFR;片内RAM的低128B(00H7FH);位地址空间。,2.1 寻址方式,6,立即寻址立即寻址方式在指令中直接给出参与操作的常数,操作码后面紧跟1个或2个字节的操作数(称为立即数)。立即寻址时操作数存放于程序存储器中,不占用内部RAM单元。在采用立即寻址的指令中立即数前面必须加上“”号标识,可以是一个8位或16位的二进制常数,也可以用十进制或十六进制表
3、示。寄存器间接寻址寄存器间接寻址方式以指令中指定寄存器的内容作为地址,而该地址单元的内容才是操作数。这是一种二次寻址方式,所以称为寄存器间接寻址。程序执行分两步完成:首先根据指令得到寄存器的内容,即操作数的地址;然后根据地址找到所需要的操作数,并完成相应的操作。,寻址方式,2.1 寻址方式,7,变址寻址(基址寄存器+变址寄存器间接寻址)变址寻址指令由基址寄存器和变址寄存器组成,16位寄存器DPTR(数据指针)或PC(程序计数器)作为基址寄存器,8位累加器A作为变址寄存器。相对寻址 相对寻址主要是针对跳转指令而言的。对于跳转指令,转去的目标指令的地址是通过正在执行的指令地址来确定的,即以当前程序
4、计数器PC值为基准,加上指令中给定的偏移量rel所得结果而形成实际的转移地址。位寻址 AT89C52片内RAM有两个区域可以进行位寻址:一是20H2FH的16个单元共128位的位地址;二是字节地址为8的倍数的12个特殊功能寄存器,共92个位地址。,寻址方式,2.1 寻址方式,8,AT89C52单片机的寻址方式多种,总的来说有以下几个原则:对程序存储器只能采用立即寻址和变址寻址方式;对特殊功能寄存器空间只能采用直接寻址方式,不能采用寄存器间接寻址方式;内部数据存储器高128B只能采用寄存器间接寻址方式,不能采用直接寻址方式;内部数据存储器低128B既能采用寄存器间接寻址方式,又能采用直接寻址方式
5、;外部扩展数据存储器只能采用MOVX指令访问。,寻址方式,2.1 寻址方式,2.2 指令系统,数据传送指令(29条)算术运算指令(24条)逻辑运算指令(24条)位操作类指令(17条)控制转移类指令(17条),10,数据传送指令数据传送指令操作可以在累加器A、工作寄存器R0R7、内部数据存储器、外部数据存储器和程序存储器之间进行。,指令系统,2.2 指令系统,11,数据传送指令以累加器A为目的操作数的指令,MOV(Move)以寄存器Rn为目的操作数的指令 以直接地址为目的操作数的指令 以间接地址为目的操作数的指令16位数据传送指令查表指令,MOVC(Move Code)累加器A与片外RAM数据传
6、送指令,MOVX(Move External RAM)堆栈操作指令,PUSH,POP数据交换指令,XCH(Exchange),XCHD(Exchange Low-order Digit),SWAP,指令系统,2.2 指令系统,12,数据传送指令例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,
7、7FH,67H;对应于字符5,6,7,8,9,指令系统,2.2 指令系统,13,算术运算指令算术运算指令包括加、减、乘、除基本四则运算和加1(增量)、减1(减量)运算。除加1和减1指令外,算术运算指令影响进位Cy、半进位Ac、溢出位Ov三个标志位。1不带进位的加法指令,ADD2带Cy进位的加法指令ADDC和带Cy的减法指令SUBB 3加l指令INC 和减1指令DEC4十进制调整指令,DA 5乘法指令,MUL 6除法指令,DIV,指令系统,2.2 指令系统,14,逻辑运算指令逻辑运算指令包括清0,求反、移位、与、或、异或等操作。操作助记符:CLR、CPL、RL、RLC、RR、RRC、ANL、OR
8、L、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),指令系统,15,位(布尔)操作类指令AT89C52有1个布尔处理机,它具有一套处理位变量的指令集,它以进位标志Cy作为累加器C,以片内RAM地址20H2FH单元中的128位和地址为8的倍数的SFR的位地址单元作为操作数,进行位变量的传送、修改和逻辑操作等。1位传送指令
9、,MOV 2位清0,置1,取反指令,CLR,SETB(Set Bit),CPL3位运算指令,ANL,ORL4位条件转移指令,JC,JNC,JB,JNB,JBC,指令系统,2.2 指令系统,16,控制转移指令程序在执行过程中,有时因为操作的需要,不能按顺序逐条执行指令,而需要改变程序的运行方向,完成这些操作需要利用控制转移类指令。1无条件转移指令,AJMP,LJMP,SJMP,JMP 2条件转移指令累加器A判零转移指令,JZ,JNZ比较转移指令,CJNE 减一条件转移指令,DJNZ3子程序调用和返回指令调用指令,ACALL 返回指令,RET,RETI4空操作指令,指令系统,2.2 指令系统,2.
10、3 汇编语言指令格式,汇编语言执行指令格式汇编伪指令,18,汇编语言执行指令格式 标号:操作码操作数1,操作数2;注释 标号代表程序的起始地址、程序名称或转移的目标地址,由用户定义的符号组成。操作码与操作数应按规定要求书写,操作码是指令的核心,不可缺少。操作码和操作数之间必须用空格分隔,操作数与操作数之间必须用逗号“,”分隔。注释是为了提高程序的可读性对指令作的说明,注释前应加上分号“;”。,汇编语言指令格式,2.3 汇编语言指令格式,19,汇编伪指令1定位伪指令,ORG2结束汇编伪指令,END 3数据说明伪指令定义字节伪指令,DB定义字伪指令,DW 定义存储空间伪指令,DS 4赋值伪指令,E
11、QU5数据地址赋值伪指令,DATA6位地址赋值伪指令,BIT,汇编语言指令格式,2.3 汇编语言指令格式,2.4 汇编语言程序设计概述,汇编语言的特点汇编语言程序设计的步骤汇编语言程序的基本结构,21,汇编语言的特点用汇编语言编写的程序效率高,占用存储空间小,运行速度快;汇编语言是面向计算机的;汇编语言程序能够直接管理和控制硬件设备;汇编语言缺乏通用性,程序不易移植。,汇编语言程序设计概述,2.4 汇编语言程序设计概述,22,汇编语言程序设计的步骤建立数学模型 确定算法制定程序流程图确定数据结构写出源程序上机调试程序,汇编语言程序设计概述,2.4 汇编语言程序设计概述,23,汇编语言程序的基本
12、结构顺序结构 分支结构单分支结构多分支结构循环结构,汇编语言程序设计概述,2.4 汇编语言程序设计概述,24,汇编语言程序的基本结构循环结构程序举例例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 汇编语言程序设计概述,25,本章小结,熟悉单片机的寻址方式掌握指令系统中的常用指令的用法了解汇编语言伪指令及其用法熟悉汇编语言程序的三种基本结构,