- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DPJ第三章(AVR指令系统)
第三章 AVR单片机指令系统 §3. 1 指令格式 语句行举例: §3. 2 寻址方式 AVR 单片机寻址方式 一、单寄存器直接寻址 二、双寄存器直接寻址 三、I/O寄存器直接寻址 四、数据存储器直接寻址 五、数据存储器间接寻址 六、带后增量的数据存储器间接寻址 七、带预减量数据存储器间接寻址 八、带位移的数据存储器间接寻址 九、从程序存储器取常数寻址 十、程序间接寻址 十一、程序相对寻址 §3. 3 伪指令和表达式 一、存储器类型定义伪指令(不带参数) 二、ORG——设置程序、数据在段中的起始位置 三、数据定义伪指令 四、符号定义伪指令 五、定义被汇编的器件 表达式 表达式--函 数 表达式--运算符 * 基本概念:指令系统、机器语言指令、汇编语言指令 AVR单片机指令系统是RISC结构的精简指令集。 AVR单片机目前用得比较多器件有118条指令。 大多数指令的执行时间为单个时钟周期。 主要内容:指令格式、寻址方式、伪指令、具体指令的分类讲解。 指令分类: 算术和逻辑指令(25) ;转移指令(31) ;数据传送指令(31) ; 位指令和位测试指令 (31)。 能对位、半字节、字节和双字节数据进行各种操作。 指令的组成:操作码和操作数 如果是两个操作数,目的操作数在前,源操作数在后。例:Mov r17,r18; r17← r18 汇编语言源文件是由指令和伪指令组成的ASCII字符文件 。 一、语句(程序输入行)的四种形式: (1)【标号】伪指令【操作数】【注释】 (2)【标号】指令【操作数】【注释】 (3)注释 (4)空行 括号内的项是任选的 Label:.EQU Var1=100 ;置Var1 等于100 伪指令 .EQU Var2=200 ;置Var2 等于200 here: rjmp here ;上一条为无限循环指令 二、常用符号 Rd:R0~R31 或R16~R31(取决于指令); Rr:R0~R31; b 、S 、p 、 K、 k、 q:常数或常数表达式; 概念:指令给出参与运算的数据的方式。 主要是:寄存器、I/O寄存器、数据存储器、程序存储器,转移指令目标地址等的计算。(还有立即数) AVR 单片机指令操作数的寻址方式有以下几种:单寄存器直接寻址、 双寄存器直接寻址、I/O寄存器直接寻址、数据存储器直接寻址、数据存储器间接寻址、带后增量的数据存储器间接寻址、带预减量的数据存储器间接寻址、带位移的数据存储器间接寻址、从程序存储器取常数寻址、程序间接寻址和程序相对寻址。 立即数寻址; 寄存器寻址:单寄存器直接寻址、 双寄存器直接寻址; I/O寄存器:直接寻址; 数据存储器寻址:直接寻址、间接寻址、带后增量的间接寻址、带预减量的间接寻址、带位移的间接寻址; 从程序存储器取常数寻址; 转移指令目标地址的寻址:程序间接寻址、程序相对寻址。 由指令指出一个寄存器的内容作为操作数,机器码中给出该寄存器的直接地址,这种寻址方式称为单寄存器直接寻址。 例:INC Rd ; 操作:Rd←Rd+1 ; 机器码:1001 010d dddd 0011 可对R0~R31中任意寄存器增1,不同寄存器只需改变机器码中5位地址码,若INC R5,则机器码中的5个d取00101,机器码即为$9453。 由指令指出两个寄存器的内容作为操作数,机器码中给出该两个寄存器的直接地址,这种寻址方式称为双寄存器直接寻址。 例:ADD Rd , Rr ; 操作:Rd←Rd+Rr ; 机器码:0000 11rd dddd rrrr 可对R0~R31中任意两个寄存器相加,这两个寄存器的各5位地址包含在机器码中。 指令可以直接对I/O 寄存器进行操作,I/O 寄存器的直接地址包含在机器码中。 例:IN Rd, P ; P 是 I/O 寄存器的直接地址。 操作:Rd←P ; 机器码:1001 0ppd dddd pppp 64个I/O寄存器,6位地址P 32个寄存器,5位地址d。 例如:IN R5,$3E;(即把SPH输入到R5中) 机器码为$B65C。 根据SRAM存储器的直接地址( 16位地址)存取数据,为双字指令。 例:LDS Rd, K ; K是SRAM存储器的直接地址。 操作:Rd←(K) ; 机器码:1001 000d dddd 0000 KKKK KKKK KKKK KKKK 例如:LDS R18,$100 ;(即把SRAM地址为$100的内容传送到R18中), 机器码:$9120 0100 由某一个16位寄存器的内容作为操作数的地址,该寻址方式称为寄存器间接寻址,用于对SRAM存储器存取操作,称为数据存储
文档评论(0)