极客工场:参观成都车展时,我很难选择
06-18
1.前言 1.看一个程序: AREATigerJohn,CODE,READONLY;声明代码段 CODE32;将其声明为32位ARM指令 ENTRY;声明程序条目 STARTMOVR0, #0 MOV R1 ,#1 ADD R1, R1,R0 BSTART END 2。
使用 ”;”在 ARM 汇编器中进行注释。
二。
汇编语言程序格式 一个完整的ARM汇编由两部分组成:声明和实际代码段。
1。
声明:程序之前必须声明 1>应该声明什么 l声明代码段: 使用AREA指令定义段,并解释所定义段的相关属性 (描述段的名称和段的属性) l 声明 ARM 指令: 使用 CODE32 或 CODE16 声明程序是 32 位 ARM 指令或 16 位 Thumb 指令。
l声明程序入口:使用ENTRY指令来标识程序的入口点。
2>这三句话缺一不可。
3>程序完成后,使用END指令宣告程序结束。
每个汇编段必须有一个END指令来指示代码段的结束。
2。
段 1> 在ARM 汇编语言程序中,代码以程序段为单位进行组织。
段是具有特定名称的相对独立的指令或数据序列。
2> 段的分类 ?代码段:代码段的内容是执行代码 ?数据段:数据段存放代码运行时所需要的数据。
注:一个汇编器至少有一个代码段。
如果程序较长,可以分为多个代码段和数据段。
多个段在程序编译和链接时最终形成一个可执行的映像文件。
3>该段具有以下属性 ?READONLY ?READWRITE 三。
汇编语言语句格式 [LABEL]OPERATION[OPERAND][;COMMENT] 标签字段操作助记符字段操作数字段注释字段 1.标签域(LABLE) 1> 标签域用于表示指令、变量、过程名称、数据地址和常量的地址。
2> 标签是您可以自己命名的标识符。
语句标签可以是大小写字母混合,通常以字母开头,由字母、数字、下划线等组成。
3>语句标签不能与寄存器名、指令助记符、伪指令同名- 指令(操作)助记符,或变量名。
4>语句标签必须写在行首,不留空格。
2. 操作助记符字段(OPERATION) 1> 操作助记符字段可以是指令、伪操作、宏指令或伪指令的助记符。
2>ARM 汇编器区分大小写。
在汇编语言编程中,每条指令的助记符可以全部大写,也可以全部小写,但不允许在一条指令中混合使用大小写。
3>所有指令不能写在行首。
指令前面必须有一个空格,然后再写指令。
4>指令助记符与后面的操作数或操作寄存器之间必须有空格,且中间不能使用逗号。
3。
操作数域(OPERAND) 操作数域代表运算的对象。
操作数可以是常量、变量、标签、寄存器名称或表达式。
不同的对象必须用逗号“,”分隔。
四。
ARM指令集格式 操作码{}{S},{,} 1。
中的项目是必需的,{} 中的项目是可选的。
2.opcode代表指令助记符。
cond:表示执行条件。
S:表示是否影响CPSR寄存器的值。
Rd:目标寄存器。
Rn:代表第一个操作数的寄存器。
operand2:代表第二个操作数。
3。
“operand2”的形式如下: 1>#immed_8r:常量表达式 eg:MOVR0,#1 ADDR0,R1,#0X0F 2>Rm:寄存器形式。
即寄存器模式下,操作数为寄存器的值。
eg:MOVPC,R0 ADDR1,R1,R2 3>Rm,shift:寄存器移位模式。
当Rm值不变时,使用寄存器的移位结果作为操作数。
?ASR #n:表示算术右移n位。
?LSR#n:表示逻辑右移n位。
?ROR #n:表示右移n位。

?RRX#n:循环右移n位并扩展。
?LSL#n:逻辑左移 n 位。
3。
使用条件代码“cond”可以实现高效的逻辑运算,提高代码的效率。
?所有ARM指令都可以有条件地执行。
?Thumb指令只有B(跳转)指令,具有条件执行功能。
注:如果执行时没有指示条件码,则默认为无条件(AL)执行。
5。
汇编程序中常用的符号 在汇编语言编程中,经常使用各种符号来表示变量、常量和地址 ?符号由大小写字母、数字和下划线组成。
?符号区分大小写。
具有相同名称的大写和小写符号将被编译器视为两个不同的符号。
?符号在其作用域内必须是唯一的,即在其作用域内不能存在同名的符号。
?自定义符号名称不能与系统保留字相同。
符号名称不应与指令或指示名称相同。
1。
程序中的变量: 1>ARM汇编器支持的变量包括数值变量、逻辑变量和字符串变量 2>在ARM汇编器编程中,可以使用GBLA、GBLL、GBLS伪定义声明全局变量,使用LCLA、LCLL和LCLS来声明局部变量,并可以使用SETA、SETL和SETS来初始化它们。
2。
程序中的常量 1>ARM汇编器支持的常量包括数字常量、逻辑常量和字符串常量。
3。
程序中的变量替换 1> 程序中的变量可以通过替换操作变为常量。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-06
06-18
06-18
06-17
06-18
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现