College of Computer Science & Technology

Slides:



Advertisements
Similar presentations
天水圍的體育設施.
Advertisements

证券市场基础知识真题.
第9章 DNS服务器的配置与管理 DNS的基本概念 DNS的测试 DNS服务器的动态更新 Windows Server 2003网络操作系统
动态网站开发 【HTTP与网络基础】 李博杰
教育的理想和教育家成长 成都.
第9章 ARM汇编语言程序设计基础.
NEUSOFT Institute of information Technology .ChengDu
企劃撰寫.
第 2 章 初探 C++.
第一章 计算机基础知识 计算机的发展简史 1 计算机软件系统 6 计算机的定义和分类 2 微型计算机的组成 7 计算机的特点和用途 3
课程改革:培养学 生的独立人格 ——中学校长《课程改革 与校长担当》论坛的讲话 郭振有
我国的宗教政策 第七课第三框.
通用简约型论文答辩模板 无锡科技职业学院 答辩人:XXX 指导老师: XXX 20XX年X月 XX学院XX专业 20XX年毕业答辩
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
教师队伍 冷传莉 课程负责人 冷传莉,女,1969年8月生,汉族,山东省蓬莱人,中共党员,教授,贵州大学法学院副院长,硕士生导师,武汉大学法学院民商法博士研究生。 兼任贵州大学民法经济法研究所所长,中国法学会民法学、商法学研究会全国理事,贵州省人民政府行政复议委员会委员,贵州省社科院法学研究所和贵州省社科院民商法研究中心特聘法学研究员,贵州省企业法制研究院副院长,贵阳市人民政府法律顾问,贵阳仲裁研究会副会长,贵阳仲裁委员会资深仲裁员,贵阳法制频道法律顾问。
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
CH.2 Introduction to Microprocessor-Based Control
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
微处理器设计1 刘鹏 College of ISEE Zhejiang University
課程名稱:程式設計 授課老師:________
Visual Basic 6.0 學習範本 第三章 基本資料型態.
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
OpenMP简介和开发教程 广州创龙电子科技有限公司
嵌入式系统讲义 第3章 ARM指令系统 周国运
第五讲 数据的分组、合并与转换.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
第3章 變數、資料型別與運算子.
程式語言 -Visual Basic 變數、常數與資料型態.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
5 Computer Organization (計算機組織).
電腦基本概念 張森 高階 適合程度 初學.
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
Matlab M檔案 方煒 台大生機系.
College of Computer Science & Technology
第4章 汇编语言程序设计 汇编语言源程序格式 汇编语言上机过程 汇编语言与C语言混合编程技术.
第六章 基于ARM的嵌入式程序设计.
Chapter 2 Basic Elements of Fortran
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
新觀念的 VB6 教本 第 6 章 資料型別.
期中考试成绩分布 《程序设计》-2017年秋.
第二章 Java语言基础.
CPU结构和功能.
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
(第2版).
第六章 安全衛生工作守則 6-1 前 言  6-2 訂定依據相關法令規定  6-3 工作守則製作程序及製作前應注意事項  6-4 如何訂定適合需要之安全衛生工作守則  6-5 結 論.
(第2版).
進階 WWW 程式設計 -- PHP 語言結構 靜宜大學資訊管理學系 蔡奇偉副教授 2003
第六次全国人口普查 近期数据处理工作部署 夏雨春 2010年12月28日.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
ARM及Thumb指令集 (练习).
数据块中的数据存储 目录 页 目标 …… 数据存储区 … ……… 数据块 (DB) … STEP 7数据类型概述 STEP 7基本数据类型
Speaker: Liu Yu-Jiun Date: 2009/4/29
中国科学技术大学计算机系 陈香兰 2013Fall 第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 2013Fall.
第3章 ARM微處理器的指令集.
ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
北投溫泉博物館 建築特色 ★小組成員:高103林孟璇、林念儀、施妤柔★.
Oop8 function函式.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
微處理機 Microprocessor (100上)
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
▲重合的概念 ▲對應頂點、對應邊、對應角 ▲全等的記法 ▲全等性質 ▲三角形全等性質
College of Computer Science & Technology
临界区问题的硬件指令解决方案 (Synchronization Hardware)
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Presentation transcript:

College of Computer Science & Technology 第三章 ARM汇编编程 College of Computer Science & Technology

ARM汇编语言伪指令(Directives) 鲁东大学 LUDONG UNIVERSITY 什么是伪指令: 由汇编器提供的指令,指导汇编程序对代码进行汇编,辅助编程人员进行汇编编程 机器指令(Instructions) 运行期间由机器执行 伪指令(Directives,Pseudo)-由汇编器处理 ①汇编语言指示符-指示汇编器进行相应的操作 ② 操作伪指令-汇编器汇编成对应机器指令

伪指令举例 AREA ThumbSub, CODE, READONLY ENTRY CODE32 ;ARM header 鲁东大学 LUDONG UNIVERSITY AREA ThumbSub, CODE, READONLY ENTRY CODE32 ;ARM header ADR r0, start + 1 CODE16 ;Thumb. start MOV r0, #10 doadd MOV pc, lr END

ARM汇编语言伪指令 杂项伪指令 符号定义伪指令 数据定义伪指令 操作伪指令 汇编控制伪指令 报告伪指令 鲁东大学 LUDONG UNIVERSITY 杂项伪指令 符号定义伪指令 数据定义伪指令 操作伪指令 汇编控制伪指令 报告伪指令

符号定义伪指令 GBLA, GBLL, GBLS LCLA, LCLL, LCLS SETA, SETL,SETS 鲁东大学 LUDONG UNIVERSITY 符号定义指令(Symbol definition directives):用于定义ARM汇编程序中的变量(实为常量),可进行重新赋值。 GBLA, GBLL, GBLS LCLA, LCLL, LCLS SETA, SETL,SETS

GBLA, GBLL, GBLS 全局变量声明 -- 声明一个全局的算术、逻辑和串变量 Directives Variable Type 鲁东大学 LUDONG UNIVERSITY GBLA, GBLL, GBLS -- 声明一个全局的算术、逻辑和串变量 有效作用范围:The scope of the variable is limited to the source file that contains it. Directives Variable Type Initial Value GBLA arithmetic GBLL logical {FALSE} GBLS string ""

SETA, SETL, SETS 变量赋值 --给一个算术、逻辑、串变量赋值 Example: GLBA a GLBS abc 鲁东大学 LUDONG UNIVERSITY SETA, SETL, SETS --给一个算术、逻辑、串变量赋值 Example: GLBA a GLBS abc GLBS def a SETA 256*256 abc SETS "this string contains only one "" double quote" def SETS "this string contains only one $$ dollar symbol"

VersionString SETS "Version 1.0" Example 鲁东大学 LUDONG UNIVERSITY GBLA VersionNumber VersionNumber SETA 21 GBLL Debug Debug SETL {TRUE} GBLS VersionString VersionString SETS "Version 1.0"

LCLA, LCLL, LCLS 局部变量声明 --声明一个局部的算术、逻辑、串变量 Directives Variable Type 鲁东大学 LUDONG UNIVERSITY LCLA, LCLL, LCLS --声明一个局部的算术、逻辑、串变量 有效作用范围:The scope of the variable is limited to a particular macro that contains it. Directives Variable Type Initial Value LCLA arithmetic LCLL logical {FALSE} LCLS string ""

$label message $a ;Macro prototype line Example 鲁东大学 LUDONG UNIVERSITY MACRO ; Declare a macro $label message $a ;Macro prototype line LCLS err ; Declare local string variable err SETS "error no: " ; Set value of err MEND

数据定义伪指令 SPACE DCB DCD, DCDU MAP, FIELD 鲁东大学 LUDONG UNIVERSITY 数据定义指令(Data definition directives):用于进行数据空间分配。 SPACE DCB DCD, DCDU MAP, FIELD

SPACE The SPACE directive reserves a zeroed block of memory. 鲁东大学 LUDONG UNIVERSITY The SPACE directive reserves a zeroed block of memory. 分配一块内存单元,并用0初始化。 Example AREA MyData, DATA, READWRITE data1 SPACE 255 ; defines 255 bytes of zeroed store

DCB 鲁东大学 LUDONG UNIVERSITY The DCB directive allocates one or more bytes of memory, and defines the initial values of the memory. 分配一段字节内存单元,并用伪指令中的expr初始化。 Syntax:{label} DCB expr {,expr}... Example DISPTAB DCB 0x33,0x43,0x76 ERRSTR DCB “Send data is error!”,0

DCD,DCDU 鲁东大学 LUDONG UNIVERSITY The DCD directive allocates one or more words of memory, aligned on 4-byte boundaries. DCDU is the same, except that the memory alignment is arbitrary. 分配一段字内存单元,并用伪指令中的expr初始化。 DCD分配的内存单元需要字对齐,而DCDU则不需要 Syntax:{label} DCD{U} expr {,expr}...

Example for DCD,DCDU 鲁东大学 LUDONG UNIVERSITY

字对齐和非字对齐 DCB 255 ; Now misaligned ... data3 DCDU 20 data3 DCD 20 鲁东大学 LUDONG UNIVERSITY DCB 255 ; Now misaligned ... data3 DCDU 20 data3 DCD 20

directive sets the origin of a storage map to a specified address. MAP,FIELD 鲁东大学 LUDONG UNIVERSITY MAP directive sets the origin of a storage map to a specified address. 将内存区(表)的首地址映射到一个指定地址 ^ is a synonym (同义词)for MAP. Syntax MAP expr{,base-register} Example MAP 0,r9 MAP 0xff,r9 ^ 0,r9

Example MAP,FIELD FIELD # is a synonym for FIELD. Syntax MAP 0,r9 鲁东大学 LUDONG UNIVERSITY FIELD directive describes space within a storage map that has been defined using the MAP directive. # is a synonym for FIELD. Syntax {label} FIELD expr Example MAP 0,r9 Integer FIELD 4 Lab FIELD 4 LDR r0,Lab

MAP,FIELD-EXAMPLE StartOfMyTable EQU 0x1000 MAP 0x1000 Integer FIELD 4 鲁东大学 LUDONG UNIVERSITY StartOfMyTable EQU 0x1000 MAP 0x1000 Integer FIELD 4 Integer2 FIELD 4 String FIELD 100 Array FIELD 128 BitMask FIELD 4 对于结构化表结构的存,取操作 MOV r1,#1 LDR r0,=Integer STR r1,[r0] LDR r2,[r0]

操作伪指令-pseudoinstruction 鲁东大学 LUDONG UNIVERSITY Pseudo Instruction-编译器将编译为ARM机器指令,与Directive Instuction不同。 ADR ADRL LDR NOP

ADR ADR-小范围地址读取指令 SYNAX ADR 寄存器号,表达式 地址相对于PC的偏移量,在-511B~512B的范围内。 鲁东大学 LUDONG UNIVERSITY ADR-小范围地址读取指令 SYNAX ADR 寄存器号,表达式 地址相对于PC的偏移量,在-511B~512B的范围内。 使用的标号必须是本段内定义的,不能使用导入的全局标号。 EXAMPLE: ADR r0,GotoThumb+1 BX r0 … CODE16 GotoThumb ADD r0,r1

ADR伪指令通常会被汇编器翻译成一条语句 向前-sub rn,pc,#xxx ADRL会翻译成两条。 鲁东大学 LUDONG UNIVERSITY ADRL-中范围地址读取指令 可以加载的最大地址范围在±128KB的范围 与ADR相同,只能加载本段定义的标号地址 ADRL与ADR的区别 ADR伪指令通常会被汇编器翻译成一条语句 向前-sub rn,pc,#xxx 向后-add rn,pc,#xxx ADRL会翻译成两条。

ADR-ADRL区别说明 鲁东大学 LUDONG UNIVERSITY 8位补码,加边界对齐

LDR-用于加载32位的立即数/地址到目的寄存器 SYNTAX ARM伪指令-操作伪指令(2) 鲁东大学 LUDONG UNIVERSITY LDR-用于加载32位的立即数/地址到目的寄存器 SYNTAX LDR 寄存器号,=立即数/地址标号表达式 EXAMPLE LDR r0,=0x12345678 LDR r0,=GotoThumb+10 区别:LDR r0,[r1] NOP-空操作,用于延时和预留存储空间