《ARM原理与设计》课程教学资源(PPT课件讲稿)Lecture 04 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 ;程序结束
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 西安电子科技大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第八章 中断系统与可编程中断控制器8259A.pptx
- 《软件工程》课程教学资源(PPT课件讲稿)需求分析.ppt
- 《Data Warehousing & Data Mining》课程教学资源(PPT讲稿)Ch 2 Discovering Association Rules.ppt
- Microsoft .NET(PPT课件讲稿)Being Objects and A Glimpse into Coding.pptx
- 《PHP程序设计》教学资源(PPT课件讲稿)项目二 网站用户中心.ppt
- 《信息技术基础》课程教学资源(PPT课件)信息技术基础知识的内容.ppt
- 广西外国语学院:《计算机网络》课程教学资源(PPT课件讲稿)第9章 DHCP协议(任课教师:卢豫开).ppt
- 《机器学习》课程教学资源(PPT课件讲稿)第十二章 计算学习理论 Machine Learning.pptx
- 西安交通大学:《网络与信息安全》课程PPT教学课件(网络入侵与防范)第四章 口令破解与防御技术.ppt
- 上海交通大学:《Multicore Architecture and Parallel Computing》课程教学资源(PPT课件讲稿)Lecture 9 MapReduce.pptx
- 河南中医药大学(河南中医学院):《计算机网络》课程教学资源(PPT课件讲稿)第三章 数据链路层.pptx
- 《多媒体教学软件设计》课程教学资源(PPT课件讲稿)第4章 多媒体教学软件的图文演示设计.ppt
- 四川大学:《计算机操作系统 Operating System Principles》课程教学资源(PPT课件讲稿)第9章 文件管理.ppt
- 南京航空航天大学:《数据结构》课程教学资源(PPT课件讲稿)第十章 排序.ppt
- 西安电子科技大学:《信息系统安全》课程教学资源(PPT课件讲稿)第二章 安全控制原理.ppt
- 《C程序设计》课程电子教案(PPT课件讲稿)第四章 数组和结构.ppt
- 北京航空航天大学:Graph Search & Social Networks.pptx
- 《数字图像处理 Digital Image Processing》课程教学资源(各章要求及必做题参考答案).pdf
- Online Minimum Matching in Real-Time Spatial Data:Experiments and Analysis.pptx
- 中国科学技术大学:《并行算法实践》课程教学资源(PPT课件讲稿)上篇 并行程序设计导论 单元II 并行程序编程指南 第七章 OpenMP编程指南.ppt
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第一章 概述.ppt
- 上海交通大学:《计算机控制技术》课程教学资源(PPT课件)第一章 计算机控制系统概述 Computer Control Technology.ppt
- 3D computer vision techniques v.4b2 1.ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第六章 中断 §6.1 中断的概念 §6.2 单片机的中断系统及其管理.ppt
- 《人工智能导论》课程教学资源(PPT课件讲稿)群智能(Swarm Intelligence).ppt
- 《计算机网络与互联网 Computer Networks and Internets》课程电子教案(PPT课件讲稿)Part IV 局域网 Local Area Networks(LANs).ppt
- 《计算机网络》课程电子教案(PPT课件讲稿)第2章 数据通信与广域网技术.ppt
- 西安电子科技大学:《信息系统安全》课程教学资源(PPT课件讲稿)第三章 信息安全保障体系、第四章 物理安全.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第四章 电子表格系统Excel 2003.ppt
- 南京大学:Decidability、Complexity(P、NP、NPC)、Reduce(P NP NPC).pptx
- 香港浸会大学:《Data Communications and Networking》课程教学资源(PPT讲稿)Chapter 3 Data Transmission.ppt
- 《算法设计》课程教学资源(PPT课件讲稿)Lecture 6 Graph Traversal.ppt
- 《计算机原理及应用》课程教学资源(PPT课件讲稿)第8章 单片机的存储器的扩展.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)第6章 IP路由.ppt
- 《计算机仿真技术》课程电子教案(PPT教学课件)第一章 绪论.ppt
- 上海交通大学:《挖掘海量数据集 Mining Massive Datasets》课程教学资源(PPT讲稿)Lecture 07 链接分析 Link Analysis.ppt
- 香港中文大学:《Probability and Statistics for Engineers》课程教学资源(PPT课件讲稿)Chapter 09 Classical Staistical Inference.pptx
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第6章 数字量输入输出接口(主讲:桂小林).ppt
- 《软件工程》课程教学资源(PPT课件)Lecture 6 设计概念和原则 Design Concepts and Principles.ppt
- 《网络编程实用教程》课程教学资源(PPT课件讲稿)第2章 套接字网络编程基础.ppt