中国高校课件下载中心 》 教学资源 》 大学文库

《ARM原理与设计》课程教学资源(PPT课件讲稿)Lecture 04 Cortex M3指令集

文档信息
资源类别:文库
文档格式:PPTX
文档页数:118
文件大小:2.49MB
团购合买:点击进入团购
内容简介
• Cortex-M3指令集简介 • 汇编语言基础 • 数据传输指令 • 数据处理指令 • 条件转移指令 • 一些有用的新指令 • 子过程 • 内积计算 • 卷积计算
刷新页面文档预览

Lecture04: Cortex M3指令集 Refer to Chapter 4 in the reference book ARM Cortex-M3权威指南

Refer to Chapter 4 in the reference book “ARM Cortex-M3权威指南” Lecture 04: Cortex M3指令集

目录 Cortex-M3指令集简介 汇编语言基础 数据传输指令 数据处理指令 条件转移指令 些有用的新指令 子过程 内积计算 卷积计算

目录 • Cortex-M3指令集简介 • 汇编语言基础 • 数据传输指令 • 数据处理指令 • 条件转移指令 • 一些有用的新指令 • 子过程 • 内积计算 • 卷积计算

Cortex-M3指令集简介 Cortex-M3开始使用32位 Thumb-2指令集,摒弃了32位 的ARM指令,但同时又兼容16位的 Thumb指令,方便程序 员编程的同时,又提高了代码的执行效率。需要注意的是: Cortex-M3并不支持所有的 Thumb-2指令,仅仅是其的一个 子集。 3196 smaller Up to a 38% ncrease in Code density

Cortex-M3指令集简介 Cortex-M3开始使用32位Thumb-2指令集,摒弃了32位 的ARM指令,但同时又兼容16位的Thumb指令,方便程序 员编程的同时,又提高了代码的执行效率。需要注意的是: Cortex-M3并不支持所有的Thumb-2指令,仅仅是其的一个 子集

目录 Cortex-M3指令集简介 汇编语言基础 数据传输指令 数据处理指令 条件转移指令 些有用的新指令 子过程 内积计算 卷积计算

目录 • Cortex-M3指令集简介 • 汇编语言基础 • 数据传输指令 • 数据处理指令 • 条件转移指令 • 一些有用的新指令 • 子过程 • 内积计算 • 卷积计算

汇编语言基础 汇编指令的最典型书写模式如下所示: 标号 操作码操作数1,操作数2,…;注释。 其中,标号是可选的,如果有,它必须顶格写。标号的作用是让汇编器 来计算程序转移的地址。 操作码是指令的助记符,它的前面必须至少有一个空白符,通常使用 “TAB”键来产生。操作码后面往往跟着若干个操作数,而且第一个操作数, 通常都是指令执行结果的存储地。不同指令需要不同数目的操作数,并且对 操作数的语法要求也不同

汇编语言基础 汇编指令的最典型书写模式如下所示: 其中,标号是可选的,如果有,它必须顶格写。标号的作用是让汇编器 来计算程序转移的地址。 操作码是指令的助记符,它的前面必须至少有一个空白符,通常使用 “TAB”键来产生。操作码后面往往跟着若干个操作数,而且第一个操作数, 通常都是指令执行结果的存储地。不同指令需要不同数目的操作数,并且对 操作数的语法要求也不同

汇编语言基础 注释均以“;”开头,它的有无不影响汇编操作,只是给程序员看的,能让 程序更易理解。 例如:MOVR0,#x12;R0<0×12 还可以使用EQU指示字来定义常数,注意需要顶格写。例如 NVIC IRQ SETENO EQU OXE000E100 NVIC IRQ0 ENABLE EQU OX1 LDRR0,=NC_| RQ SETEN0;在这里的LDR是个伪指令, 它会被汇编器转换成 ;一条“相对PC的加载指令” MOVR1,#NVC|RQ0 ENABLE;把立即数传送到指令中 STR R1, [ROI ;R0=R1,执行完此指令后 RQ#0被使能

汇编语言基础 注释均以“;”开头,它的有无不影响汇编操作,只是给程序员看的,能让 程序更易理解。 例如:MOV R0, #0x12 ; R0 <- 0x12 还可以使用EQU指示字来定义常数,注意需要顶格写。例如: NVIC_IRQ_SETEN0 EQU 0xE000E100 NVIC_IRQ0_ENABLE EQU 0x1 … LDR R0, =NVIC_IRQ_SETEN0 ;在这里的LDR 是个伪指令, ;它会被汇编器转换成 ;一条“相对PC 的加载指令” MOV R1, #NVIC_IRQ0_ENABLE ; 把立即数传送到指令中 STR R1, [R0] ; *R0=R1,执行完此指令后 ;IRQ #0 被使能

汇编语言基础 可以使用DCB来定义一串字节常数——允许以字符串的形式表达,还可以使用 DCⅥ来定义一串16位整数以及DCD来定义一串32位整数。它们最常被用来在 代码中书写表格。例如: LDR R3. =MY NUMBER. R3=MY NUMBER LDR R4, [R3 R4=*R3 LDR RO =HELLO TEXT: R0= HELLO TEXT BL Print Text 呼叫 PrintText以显示字符串,R0传递参 数 MY NUMBER DCD0X12345678 HELLO TEXT DCB" Hellion”,0 请注意:不同汇编器的指示字和语法都可以不同

汇编语言基础 可以使用DCB 来定义一串字节常数——允许以字符串的形式表达,还可以使用 DCW来定义一串16位整数以及DCD 来定义一串32 位整数。它们最常被用来在 代码中书写表格。例如: LDR R3, =MY_NUMBER ; R3= MY_NUMBER LDR R4, [R3] ; R4= *R3 … LDR R0, =HELLO_TEXT ; R0= HELLO_TEXT BL PrintText ; 呼叫PrintText 以显示字符串,R0 传递参 数 … MY_NUMBER DCD 0x12345678 HELLO_TEXT DCB ”Hello\n”,0 请注意:不同汇编器的指示字和语法都可以不同

汇编语言基础 后缀 在ARM处理器中,指令可以带有后缀,如下表所示: 后缀名 含义 要求更新APSR中的标志s,例如 ADDS RO,R1;根据加法的结果更新APSR中的标志 EQ, NE, LT, GT等有条件地执行指令。EQ=Euga,NE= Not Equa,r= Less than,GT= Greater Than。还有若干个其它的条件。例如: BEQ 仅当EQ满足时转移 但是条件后缀的使用是有限制的,只有转移指令(B指令)才可以随意使 用。而对于其他的指令, Cortex-M3引入了-THEN指令块,在这个指令块中 才可以加入后缀。I-THEN块由指令定义,同时S后缀还可以和条件后缀 起使用,共有15种不同的条件后缀,如下表所示:

汇编语言基础 后缀: 在ARM处理器中,指令可以带有后缀,如下表所示: 但是条件后缀的使用是有限制的,只有转移指令(B指令)才可以随意使 用。而对于其他的指令,Cortex-M3引入了IF-THEN指令块,在这个指令块中 才可以加入后缀。IF-THEN块由IT指令定义,同时S后缀还可以和条件后缀一 起使用,共有15种不同的条件后缀,如下表所示:

汇编语言基础 表中的标志位后续介绍。 符号条件 关系到的标志位 EQ 相等(EQua1) Z==1 NE 不等( NotEqua1) Z==0 CS/HS进位 Carryset 无符号数高于或相同 CC/Lo未进位( Carryclear) 无符号数低于 M工 负数( MInus) N==1 非负数 VS 溢出 V==1 VC 未溢出 V==0 H工 无符号数大于 C==1&&Z==0 LS 无符号数小于等于 C==0 带符号数大于等于 工T 带符号数小于 NI=v 带符号数大于 Z==0&&N==V LE 带符号数小于等于 Z==1||N!=V AL 总是

汇编语言基础 表中的标志位后续介绍

汇编语言基础 常用的伪指令 AREA段名属性1,属性2, AREA伪指令用于定义一个代码段或数据段。其中,段名若以数字开头,则该段名 需用“括起来,如1test。 属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。常用的 属性如下: CODE属性:用于定义代码段,默认为 READONLY。 DATA属性:用于定义数据段,默认为 READWR|TE。 READONLY属性:指定本段为只读,代码段默认为 READONLY。 READWRITE属性:指定本段为可读可写,数据段的默认属性为 READWRITE。 一 ALIGN属性:使用方式为ALGN表达式。在默认时,ELF(可执行连接文件) 的代码段和数据段是按字对齐的,表达式的取值范围为0~31,相应的对齐方式为 2表达式次方。 一定义一个通用的段,不包含任何的用户代码和数据。各源文件中同 COMMON属 性:该属性名的 COMMON段共享同一段存储单元。 一个汇编语言程序至少要包含一个段,当程序太长时,也可以将程序分为多 个代码段和数据段。 例如: aREa nit,CODE, READONLY;定义了一个代码段,段名为lnt,属性为只读 指令序列 END 程序结束

汇编语言基础 常用的伪指令 AREA 段名 属性1,属性2,…… AREA伪指令用于定义一个代码段或数据段。其中,段名若以数字开头,则该段名 需用“|”括起来,如|1_test|。 属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。常用的 属性如下: — CODE属性:用于定义代码段,默认为READONLY。 — DATA属性:用于定义数据段,默认为READWRITE。 — READONLY属性:指定本段为只读,代码段默认为READONLY。 — READWRITE属性:指定本段为可读可写,数据段的默认属性为READWRITE。 — ALIGN属性:使用方式为ALIGN 表达式。在默认时,ELF(可执行连接文件) 的代码段和数据段是按字对齐的,表达式的取值范围为0~31,相应的对齐方式为 2表达式次方。 —定义一个通用的段,不包含任何的用户代码和数据。各源文件中同COMMON属 性:该属性名的COMMON段共享同一段存储单元。 一个汇编语言程序至少要包含一个段,当程序太长时,也可以将程序分为多 个代码段和数据段。 例如: AREA Init,CODE,READONLY ;定义了一个代码段,段名为Init,属性为只读 …… ;指令序列 END ;程序结束

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档