chapter4ARM7TDMI汇编语言程序设计.pptx
《chapter4ARM7TDMI汇编语言程序设计.pptx》由会员分享,可在线阅读,更多相关《chapter4ARM7TDMI汇编语言程序设计.pptx(64页珍藏版)》请在咨信网上搜索。
1、page2024/8/10 周六西安邮电学院 计算机系1第第4 4章章ARM7TDMIARM7TDMI汇编语言汇编语言程序设计程序设计page西安邮电学院 计算机系22024/8/10 周六第4章 目录q1.汇编语言的基本概念q2.ARM汇编程序的组成与结构q3.汇编语言程序设计的基本方法q4.汇编语言和C语言交叉编程page西安邮电学院 计算机系32024/8/10 周六第4章 目录q1.汇编语言的基本概念q2.ARM汇编程序的组成与结构q3.汇编语言程序设计的基本方法q4.汇编语言和C语言交叉编程page西安邮电学院 计算机系42024/8/10 周六4.1 汇编语言的基本概念 u语言语言
2、 -信息的传播载体。信息的传播载体。u计计算算机机语语言言 -计计算算机机可可以以识识别别、理理解解的的语言。语言。计算机语言的用途计算机语言的用途 :描述操作和数据。描述操作和数据。数据-用于描述问题模型;操作-用于描述问题处理方法和步骤;page西安邮电学院 计算机系52024/8/10 周六4.1 汇编语言的基本概念 程程序序设设计计语语言言是是专专门门为为计计算算机机编编程程所所配配置置的的语语言言。它它们们按按照照形形式式与与功功能能的的不不同同可可分分为为三三类,即机器语言、汇编语言和高级语言。类,即机器语言、汇编语言和高级语言。1.1.机器语言机器语言 机机器器语语言言(Mach
3、ine Machine LanguageLanguage)是是由由0 0和和1 1二二进进制制代代码码表表示示和和存存储储的的指指令令与与数数据据。它它的的特特点点是是能能被被机机器器直直接接识识别别与与执执行行;程程序序所所占占内内存存空空间间较较少少。其其缺缺点点是是难难认认、难难记记、难难编编、易错。易错。page西安邮电学院 计算机系62024/8/10 周六2.2.汇编语言汇编语言 汇编语言(汇编语言(Assembly LanguageAssembly Language)是一种面向物理)是一种面向物理层操作的计算机语言,是一种采用助记符表示指令的层操作的计算机语言,是一种采用助记符表
4、示指令的程序设计语言;程序设计语言;汇编语言中使用汇编语言中使用助记符助记符来表示指令的操作码和操作来表示指令的操作码和操作数,用数,用标号或符号标号或符号代表地址、常量或变量。代表地址、常量或变量。从机器角度看:汇编语言是一种面向物理层操作的计算机语言。不同的处理器类型,具有不同的汇编语言。使用汇编语言编写程序能够直接利用硬件系统的特性(如寄存器、标志、中断系统等),可直接对位、字节、字寄存器或存储单元、I/O端口进行处理,同时也能直接使用CPU指令系统提供的各种寻址方式,编制出高质量的程序,这样的程序不但占用内存空间少,而且执行速度快。page西安邮电学院 计算机系72024/8/10 周
5、六2.汇编语言汇编语言-源程序示例 AREA Init,CODE,READONLY ENTRYStart LDR R0,=0 x40000500 MOV R1,#0 x55 STR R1,R0 LDR R0,=0 x40000504 MOV R1,#0 xAA STR R1,R0 ENDpage西安邮电学院 计算机系82024/8/10 周六2.汇编语言汇编语言-上机过程 设计、编辑汇编语言源程序;汇编、连接、下载到目标系统;调试运行;page西安邮电学院 计算机系92024/8/10 周六3.高级语言高级语言 高级语言(高级语言(High Level LanguageHigh Level L
6、anguage)是脱离)是脱离具体机器(即独立于机器)的通用语言,不依具体机器(即独立于机器)的通用语言,不依赖于特定计算机的结构与指令系统。赖于特定计算机的结构与指令系统。page西安邮电学院 计算机系102024/8/10 周六第4章 目录q1.汇编语言的基本概念q2.ARM汇编程序的组成与结构q3.汇编语言程序设计的基本方法q4.汇编语言和C语言交叉编程page西安邮电学院 计算机系112024/8/10 周六4.2 ARM汇编程序的组成与结构;文件名:文件名:TEST1.S;功能:实现字符串拷贝功能功能:实现字符串拷贝功能;说明:使用说明:使用ARMulate软件仿真调试软件仿真调试
7、AREAExample1,CODE,READONLY ;声明代码段声明代码段Example1 num EQU 20 ;设置拷贝字的个数设置拷贝字的个数 ENTRY ;标识程序入口标识程序入口 CODE32 ;声明声明32位位ARM指令指令STARTLDRR0,=src ;R0指向源数据块指向源数据块LDRR1,=dst ;R1指向目的数据块指向目的数据块MOVR2,#num ;R2需要拷贝的数据个数需要拷贝的数据个数 wordcopyLDRR3,R0,#4;从源数据块中取一个字,放入从源数据块中取一个字,放入R3中,中,;R0=R0+4STRR3,R1,#4;将将R3中的数据存入中的数据存入R
8、1指向的存储指向的存储;单元中,单元中,R1=R1+4SUBSR2,R2,#1;R2计数器减计数器减1BNEwordcopy;如果如果R2不为不为0,则转向,则转向wordcopy处处使用“;”进行注释标号顶格写程序代码段page西安邮电学院 计算机系122024/8/10 周六stopMOVR0,#0 x18;程序运行结束返回编译器调试环境程序运行结束返回编译器调试环境LDRR1,=0 x20026SWI0 x123456 AREA BlockData,DATA,READWRITE;数据段的名字数据段的名字BlockDataSrcDCD1,2,3,4,5,6,7,8,1,2,3,4,5,6,
9、7,8,1,2,3,4DstDCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0AREA|.extra|,NOINIT,READWRITE;未初始数据段的名字未初始数据段的名字.extradataSPACE1024END;文件结束文件结束 声明文件结束page西安邮电学院 计算机系132024/8/10 周六4.2 ARM汇编程序的组成与结构 u段:ARM汇编程序由段组成(程序段、数据段);段是由汇编器伪指令AREA定义的相对独立程序块;段的属性:READONLY(只读)或READWRITE(读写)分别用于定义一个代码段或数据段;page西安邮电学院 计算机系1
10、42024/8/10 周六4.2 ARM汇编程序的组成与结构 u标识符(标号):(用途)用来表示指令的地址、数据的地址、变量、过程名和常量;(组成)标号是一个自行设计的字母数字串,通常以字母开头,由字母、数字、下划线等组成;(注意1)标号不能与寄存器名、指令助记符、伪指令(操作)助记符等“关键字”同名;(注意2)标号必须在一行的开头书写,不能留空格;page西安邮电学院 计算机系152024/8/10 周六4.2.1 汇编器伪指令 nARM汇编语言程序中,有一些特殊的指令助记符,称为汇编器伪指令。它们无论表示形式或其在程序中所处的位置,都与指令相似,但二者之间有着重要的区别。指令是供CPU执行
11、的操作命令,每条指令对应CPU的一种特定操作,在用户代码运行期间执行;而汇编器伪指令是供汇编器处理的命令,在汇编过程中由汇编器进行处理,例如定义数据、分配存储区、定义段、定义宏等;汇编以后,汇编器伪指令不产生与之对应的目标代码。page西安邮电学院 计算机系162024/8/10 周六4.2.1 汇编器伪指令AREACODE16、CODE32ENTRYENDEQUDCB、DCW、DCDSPACELTORGALIGNpage西安邮电学院 计算机系172024/8/10 周六4.2.1 汇编器伪指令-AREA用途:段声明;格式:AREA,其中:段名-用户定义的标识符;段属性-CODE/DATA读写
12、属性-READONLY/READWRITEpage西安邮电学院 计算机系182024/8/10 周六;文件名:文件名:TEST1.S;功能:实现字符串拷贝功能功能:实现字符串拷贝功能;说明:使用说明:使用ARMulate软件仿真调试软件仿真调试 AREAExample1,CODE,READONLY ;声明代码段声明代码段Example1 num EQU 20 ;设置拷贝字的个数设置拷贝字的个数 ENTRY ;标识程序入口标识程序入口 CODE32 ;声明声明32位位ARM指令指令STARTLDRR0,=src ;R0指向源数据块指向源数据块LDRR1,=dst ;R1指向目的数据块指向目的数据
13、块MOVR2,#num ;R2需要拷贝的数据个数需要拷贝的数据个数 wordcopyLDRR3,R0,#4;从源数据块中取一个字,放入从源数据块中取一个字,放入R3中,中,;R0=R0+4STRR3,R1,#4;将将R3中的数据存入中的数据存入R1指向的存储指向的存储;单元中,单元中,R1=R1+4SUBSR2,R2,#1;R2计数器减计数器减1BNEwordcopy;如果如果R2不为不为0,则转向,则转向wordcopy处处page西安邮电学院 计算机系192024/8/10 周六stopMOVR0,#0 x18;程序运行结束返回编译器调试环境程序运行结束返回编译器调试环境LDRR1,=0
14、x20026SWI0 x123456 AREA BlockData,DATA,READWRITE;数据段的名字数据段的名字BlockDataSrcDCD1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4DstDCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0AREA|.extra|,NOINIT,READWRITE;未初始数据段的名字未初始数据段的名字.extradataSPACE1024END;文件结束文件结束 page西安邮电学院 计算机系202024/8/10 周六4.2.1 汇编器伪指令-CODE16/32用途:声明后续行是
15、16位的Thumb或是32位的ARM指令;格式:CODE16(CODE32)代码示例:code16 add r0,r1 ;Thumb指令 code32 add r0,r1 ;ARM指令page西安邮电学院 计算机系212024/8/10 周六;文件名:文件名:TEST1.S;功能:实现字符串拷贝功能功能:实现字符串拷贝功能;说明:使用说明:使用ARMulate软件仿真调试软件仿真调试 AREAExample1,CODE,READONLY ;声明代码段声明代码段Example1 num EQU 20 ;设置拷贝字的个数设置拷贝字的个数 ENTRY ;标识程序入口标识程序入口 CODE32 ;声明
16、声明32位位ARM指令指令STARTLDRR0,=src ;R0指向源数据块指向源数据块LDRR1,=dst ;R1指向目的数据块指向目的数据块MOVR2,#num ;R2需要拷贝的数据个数需要拷贝的数据个数 wordcopyLDRR3,R0,#4;从源数据块中取一个字,放入从源数据块中取一个字,放入R3中,中,;R0=R0+4STRR3,R1,#4;将将R3中的数据存入中的数据存入R1指向的存储指向的存储;单元中,单元中,R1=R1+4SUBSR2,R2,#1;R2计数器减计数器减1BNEwordcopy;如果如果R2不为不为0,则转向,则转向wordcopy处处page西安邮电学院 计算机
17、系222024/8/10 周六4.2.1 汇编器伪指令-ENTRY用途:声明程序的入口,编译程 序会把这个入口的地址定义为系统复位后的程序的起始点;格式:ENTRY代码示例:AREA Init,CODE,READONLY ENTRY CODE32Start LDR R0,=0 x40000500 LDR R1,#0 xFF STR R1,R0 ENDpage西安邮电学院 计算机系232024/8/10 周六4.2.1 汇编器伪指令-END用途:声明汇编源程序的结束(末行);格式:END代码示例:AREA Init,CODE,READONLY ENTRYCODE32Start LDR R0,=0
18、 x3FF5000 LDR R1,#0 xFF STR R1,R0 ENDpage西安邮电学院 计算机系242024/8/10 周六4.2.1 汇编器伪指令-EQU用途:声明程序的入口;格式:EQU代码示例:AREA Init,CODE,READONLYZQL_V EQU 0 x40000500 ENTRYCODE32Start LDR R0,=ZQL_V LDR R1,#0 xFF STR R1,R0 ENDpage西安邮电学院 计算机系252024/8/10 周六4.2.1 汇编器伪指令-DCB用途:在程序存储区预存字节数据;格式:DCB 代码示例:AREA Init,CODE,READO
19、NLYZQL_DB DCB 0 x01,0 x04,0 x09,0 x10,0 x19 ENTRYCODE32Start LDR R0,=ZQL_DB LDR R2,R0,R1 END备注:DCB也可用“=”代替;page西安邮电学院 计算机系262024/8/10 周六4.2.1 汇编器伪指令-DCW用途:在程序存储区预存半字数据(2B);格式:DCW 代码示例:AREA Init,CODE,READONLYZQL_DW DCW 0 x01,0 x04,0 x09,0 x10,0 x19 ENTRYCODE32Start LDR R0,=ZQL_DW LDR R2,R0,R1,LSL#1 E
20、ND备注:DCW预存的数据在存储器中半字对齐存放;page西安邮电学院 计算机系272024/8/10 周六4.2.1 汇编器伪指令-DCD用途:在程序存储区预存字数据(4B);格式:DCD 代码示例:AREA Init,CODE,READONLYZQL_DD DCD 0 x01,0 x04,0 x09,0 x10,0 x19 ENTRYCODE32Start LDR R0,=ZQL_DD LDR R2,R0,R1,LSL#2 END备注:DCD预存的数据在存储器中字对齐存放;DCD也可用“&”代替;page西安邮电学院 计算机系282024/8/10 周六4.2.1 汇编器伪指令-SPACE
21、用途:在存储区预留初值为0 x00的空间;格式:SPACE 代码示例:AREA Init,CODE,READONLYZQL_DD DCD 0 x01,0 x04,0 x09,0 x10,0 x19 ENTRYCODE32Start LDR R0,=ZQL_DD LDR R2,R0,R1,LSL#2 Buff SPACE 4096 ENDpage西安邮电学院 计算机系292024/8/10 周六4.2.1 汇编器伪指令-LTORG用途:声明一个文字池的位置;格式:LTORG文字池的起源与应用:用于预存放任何32bit的数据常量,供LDR加载指令使用,实现对任意立即数的访问;解释:立即数包含在32
22、bit的指令码中,必须是8位图立即数,这就限制了立即数的取值;ARM汇编语言提供了LDR加载指令附加文字池的方法,文字池中可以存放任意的32bit数,LDR加载指令相对寻址文字池,以实现对任意立即数的访问。page西安邮电学院 计算机系302024/8/10 周六汇编过程中,汇编器会默认地在每一个程序段的末尾填加一个文字池。需要注意的是,文字池不能远离文字池使用者(LDR指令),因为LDR指令的寻址范围是指令位置的前后4KB。如果用户程序比较大,则可能使程序段的末尾超出4KB范围,此时需要在程序中的适当位置,使用LTORG伪指令显式声明文字池。一般总可以在LDR伪指令前后4KB的范围内找到分支
23、指令,文字池可声明在分支(B)指令之后的紧邻位置,不会影响代码的正常执行,因为B指令总是会将程序的执行转移到其它地方的。page西安邮电学院 计算机系312024/8/10 周六u缺省文字池缺省文字池AREA default,CODE,READONLYENTRYCODE32startLDRR1,=0 xABCDEFLDRR2,=0 x101ADDR3,R1,R2B ;汇编器默认的文字池位置 ;常数0 xABCDEF、0 x101即存放于此END 地址 机器指令码 汇编指令 注释start0 xe59f1008ldrr1,0 x00008010;=#0 x00abcdef000080040 xe
24、59f2008ldrr2,0 x00008014;=#0 x00000101000080080 xe0813002addr3,r1,r20000800c0 xeafffffeb0 x800c;(start+0 xc)000080100 x00abcdefdcd0 x00abcdef.000080140 x00000101dcd0 x00000101.page西安邮电学院 计算机系322024/8/10 周六u自定义文字池AREA default,CODE,READONLYENTRYCODE32startLDR R1,=0 xABCDEF ;文字池使用处LDR R2,=0 x101ADDR3,R
25、1,R2B branch ;其它汇编代码branch ;其它汇编代码other SPACE 4096END ;默认文字池位置超远!?汇编器缺省文字池位于程序段的末尾,如果程序段较长,这个缺省的文字池和LDR指令的距离有可能超出了4KB,那么LDR指令不能正确加载数据。AREA default,CODE,READONLYENTRYCODE32startLDR R1,=0 xABCDEF ;文字池使用者LDR R2,=0 x101ADD R3,R1,R2B branchLTORG;显示声明文字池位置显示声明文字池位置;其它汇编代码branch;其它汇编代码other SPACE 4096ENDst
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- chapter4ARM7TDMI 汇编语言 程序设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。