欢迎来到天天文库
浏览记录
ID:38609257
大小:1.94 MB
页数:154页
时间:2019-06-16
《嵌入式系统入门-03-avr的指令与汇编系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、LOGO嵌入式系统入门第3章AVR的指令与汇编系统信息学院张忠杰embeddedstart@163.comTermyZhang@163.com嵌入式系统入门http://embeddedstart.blog.163.com/主要内容3.1ATmega16指令综述3.2算术和逻辑指令3.3跳转指令3.4数据传送指令3.5位操作和位测试指令3.6MCU控制指令3.7AVR汇编语言系统嵌入式系统入门AVR内核指令系统的特点1.16/32位定长指令AVR的一个指令字为16位或32位,其中大部分的指令为16位。2.流水线操作AVR采用流水线技术,在前一条指令执行的时候,就取
2、出现行的指令,然后以一个周期执行指令。3.大型快速存取寄存器组用32个通用工作寄存器代替了累加器,避免了传统结构中累加器和存储器之间数据传送造成的瓶颈现象。33.1ATmega16指令综述ATmega16共有131条指令,按功能可分为五大类,它们是:算术和逻辑运算指令(28条);比较和跳转指令(36条);数据传送指令(35条);位操作和位测试指令(28条);MCU控制指令(4条)。3.1.1指令格式以及三种表示方式指令格式是指指令码的结构形式。通常,指令可分为操作码和操作数两部分。AVR的指令的一般格式为:3.1.1指令格式以及三种表示方式指令的表示方式是指采用何
3、种形式描述指令,也是人们用于编写和阅读程序的基础。通常指令采用二进制、十六进制和助记符三种表示方式。指令的二进制表示形式,是一种可以直接为CPU识别和执行的形式,故称为指令的机器码或汇编语言的目标代码。指令的十六进制形式是二进制形式的变型,只是将二进制代码4位一组用十六进制的形式描述。3.1.1指令格式以及三种表示方式指令的助记符形式又称为指令的汇编形式或汇编语句,是一种用英文单词或缩写字母以及数字来表征指令功能的形式。这种形式不仅容易为人们识别和读写,也方便记忆和交流。由于CPU可以直接识别和执行的指令实际是二进制数据,因此不管使用十六进制的形式还是汇编形式构成
4、的程序,都需要通过人工或机器把它们翻译成二进制机器码的数据,才能下载到芯片中被CPU执行。3.1.2AVR指令系统中使用的符号在指令描述中,除了操作码采用了助记符表示外,还在指令的操作数的描述说明中采用了一些符号代码,后面对所使用符号的意义进行简单的说明。1.状态寄存器与标志位SREG:8位状态寄存器,其中每一位的定义为:C:进位标志位Z:结果为零标志位N:结果为负数标志位V:2的补码溢出标志位S:N⊕V,用于符号测试的标志位H:操作中产生半进位的标志位T:用于和BLD、BST指令进行位数据交换的位I:全局中断触发/禁止标志位2.寄存器和操作码Rd:目的(或源)寄
5、存器,取值为R0~R31或R16~R31(取决于指令)。Rr:源寄存器,取值为R0~R31。A:I/O寄存器,取值为0~63或0~31(取决于指令)。b:I/O寄存器中的指定位,常数(0~7)。s:状态寄存器SREG中的指定位,常数(0~7)。K:立即数,常数(0~255)。k:地址常数,取值范围取决于指令。q:地址偏移量常数(0~63)。X、Y、Z:地址指针寄存器(X=R27:R26;Y=R29:R28;Z=R31:R30)。3.堆栈STACK:作为返回地址和压栈寄存器的堆栈SP:堆栈STACK的指针3.1.3AVR指令的寻址方式和寻址空间指令给出参与运算数据的
6、方式称为寻址方式。AVR单片机指令操作数的寻址方式有以下几种:单寄存器直接寻址双寄存器直接寻址I/O寄存器直接寻址数据存储器直接寻址数据存储器间接寻址带后增量的数据存储器间接寻址带预减量的数据存储器间接寻址带位移的数据存储器间接寻址程序存储器取常量寻址程序存储器空间直接寻址程序存储器空间间接寻址程序相对寻址等1.单寄存器直接寻址由指令指定一个寄存器的内容作为操作数,在指令中给出寄存器的直接地址,这种寻址方式称为单寄存器直接寻址。单寄存器寻址的地址范围限制为通用工作寄存器组中的32个寄存器R0~R31,或后16个寄存器R16~R31(取决于不同指令)。例:INCRd
7、;操作:Rd←Rd+1。INCR5;将寄存器R5内容加1回放。2.双寄存器直接寻址双寄存器直接寻址方式与单寄存器直接寻址方式相似,它是将指令指出的两个寄存器Rd和Rr的内容作为操作数,而结果存放在Rd寄存器中。指令中同时给出两个寄存器的直接地址,这种寻址方式称为双寄存器直接寻址。双寄存器寻址的地址范围限制为通用工作寄存器组中的32个寄存器R0~R31,或后16个寄存器R16~R31,或后8个寄存器R16~R23(取决于不同指令)。例:ADDRd,Rr;操作:Rd←Rd+Rr。ADDR0,R1;将R0和R1寄存器内容相加,结果放回R0。3.I/O寄存器直接寻址由指令
8、指定一个I
此文档下载收益归作者所有