版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 ARM汇编伪指令与伪操作2、伪操作:为完成汇编程序做各种准备工作,只在汇编过程中起作用,一旦汇编结束,它的作用也随之结束。3、宏指令:是一段独立的程序代码,可插在源程序中。与子程序相似,但有本质不同。1、伪指令:在汇编时将被合适的指令代替。伪操作、宏指令一般与编译器有关,常用ARM编译开发环境有2种:GNU(基于Embest IDE环境)和ADS(ARM公司提供)目前常用的编译环境有2种:1. ADS/SDT、RealView MDK等ARM公司推出的开发工具2. GNU ARM开发工具1. ADS/SDT、RealView MDK等ARM公司推出的开发工具ADS由ARM公司推出,使用
2、了CodeWarrior公司的编译器。针对ARM资源配置为用户提供了在 CodeWarrior IDE 集成环境下配置各种ARM 开发工具的能力。 以ARM为目标平台的工程创建向导,可以使用户以此为基础,快速创建ARM和Thumb工程。 ARM 将Keil 公司收购之后,正式推出了针对ARM 微控制器的开发工具RealView Microcontroller Development Kit ( 简称Real View MDK 或者MDK) ,它将ARM 开发工具RealView Development Suite (简称RVDS) 的编译器RVCT 与Keil的工程管理、调试仿真工具集成在一起
3、,是一款非常强大的ARM 微控制器开发工具。 2. GNU ARM开发工具GNU是“GNUs Not Unix”的递归缩写。在1983年9月27日由Richard Stallman公开发起GNU计划,它的目标是创建一套完全自由的操作系统。 GNU格式ARM汇编语言程序主要是面对在ARM平台上移植嵌入式Linux操作系统,GNU组织开发的基于ARM平台的编译工具有主要由GNU的汇编器as,交叉汇编器gcc和连接器ld组成。61 汇编语言伪指令伪指令是ARM处理器支持的汇编语言程序里的特殊助记符,它不在处理器运行期间由机器执行,只是在汇编时将被合适的机器指令代替成ARM或Thumb指令,从而实现真
4、正的指令操作。 ARM伪指令有四条,分别为ADR伪指令、ADRL伪指令、LDR伪指令、NOP伪指令。ARM伪指令大范围的地址读取 LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。LDRcond register,= expr | label_exprLDR伪指令格式指令执行的条件码加载的目标寄存器基于PC的地址表达式或外部表达式注意:1.从指令位置到文字池的偏
5、移量必须小于4KB;2.与ARM指令的LDR相比,伪指令的LDR的参数有“=”号。ARM伪指令大范围的地址读取 LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。应用示例(加载常量):LDR R2, =0 xFF0 ;MOV R2, #0 xFF0LDR R0, =0 xFF000000 ;MOV R0, #0 xFF000000LDR R1, =0 xFFFF
6、FFFE ;MVN R1, #0 x1ARM伪指令大范围的地址读取 LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。应用示例(加载地址): . LDR R1,=InitStack .InitStack MOV R0, LR .使用伪指令将程序标号InitStack的地址存入R1ARM伪指令大范围的地址读取 LDR伪指令用于加载32位的立即数或一个地址值到指定寄
7、存器。在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。应用示例(加载地址):编译后的反汇编代码: . LDR R1,=InitStack .InitStack MOV R0, LR . .0 x60 LDR R1,0 xb4 .0 x64 MOV R0, LR .0 xb4 DCD 0 x64使用伪指令将程序标号InitStack的地址存入R1地址程序代码ARM伪指令大范围的地址读取 LDR伪指令用于加载32位的立即数
8、或一个地址值到指定寄存器。在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。应用示例(加载地址):编译后的反汇编代码: . LDR R1,=InitStack .InitStack MOV R0, LR . .0 x60 LDR R1,0 xb4 .0 x64 MOV R0, LR .0 xb4 DCD 0 x64使用伪指令将程序标号InitStack的地址存入R1LDR伪指令被汇编成一条LDR指令,并在文字池中定义了一
9、个常量,该常量为InitStack标号的地址ARM伪指令中等范围的地址读取 ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址 。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。ADRLcond register,exprADRL伪指令格式指令执行的条件码加载的目标寄存器地址表达式 地址表达式expr的取指范围:当地址值是字节对齐时,其取指范围为-64K64K;当地址值是字对齐时,其取指范围为-256K256K;ARM伪指令中等范围的地址读取 ADRL伪指令将
10、基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址 。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。 . ADRL R0,Delay .Delay MOV R0,r14 .应用示例(源程序):使用伪指令将程序标号Delay的地址存入R0ARM伪指令中等范围的地址读取 ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址 。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令
11、实现,则产生错误,编译失败。 . ADRL R0,Delay .Delay MOV R0,r14 .应用示例(源程序): .0 x20 ADD r1,pc,#400 x24 ADD r1,r1,#FF00 .0 xFF68 MOV r0,r14 .编译后的反汇编代码:使用伪指令将程序标号Delay的地址存入R0地址程序代码ARM伪指令中等范围的地址读取 ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址 。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。 .
12、ADRL R0,Delay .Delay MOV R0,r14 .应用示例(源程序): . 0 x20 ADD r1,pc,#400 x24 ADD r1,r1,#FF00 .0 xFF68 MOV r0,r14 .编译后的反汇编代码:使用伪指令将程序标号Delay的地址存入R0ADRL伪指令被汇编成两条指令ARM伪指令小范围的地址读取 ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败
13、。ADRcond register,exprADR伪指令格式指令执行的条件码加载的目标寄存器地址表达式 地址表达式expr的取指范围:当地址值是字节对齐时,其取指范围为-255255;当地址值是字对齐时,其取指范围为-10201020;ARM伪指令小范围的地址读取 ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。 . ADR R0,Delay .Delay MOV R0,r14 .应
14、用示例(源程序):使用伪指令将程序标号Delay的地址存入R0 .0 x20 ADD r1,pc,#0 x3c . .0 x64 MOV r0,r14 .ARM伪指令小范围的地址读取 ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。 . ADR R1,Delay .Delay MOV R0,r14 .应用示例(源程序):编译后的反汇编代码:使用伪指令将程序标号Delay的地址存入R0
15、地址程序代码ARM伪指令小范围的地址读取 ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。 . ADR R0,Delay .Delay MOV R0,r14 .应用示例(源程序): .0 x20 ADD r1,pc,#0 x3c . .0 x64 MOV r0,r14 .编译后的反汇编代码:使用伪指令将程序标号Delay的地址存入R0ADR伪指令被汇编成一条指令ARM伪指令小范围的地
16、址读取 ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。 应用示例2(查表): ADR R0,DISP_TAB; 加载转换表地址 LDRB R1,R0,R2; 使用R2作为参数,进行查表 DISP_TAB DCB 0 xC0,0 xF9,0 xA4,0 xB0,0 x99, 0 x92,0 x82,0 xF8ARM伪指令空操作伪指令 NOP伪指令在汇编时将会被代替成ARM中的空操作,
17、比如可能是“MOV R0,R0”指令等。NOP可用于延时操作。NOPNOP伪指令格式应用示例(延时子程序): mov R1,#0 x1234Delay NOP;空操作 NOP NOP SUBS R1,R1,#1;循环次数减一 BNE Delay;如果循环没有结束,跳转Delay继续 MOV PC,LR;子程序返回62ARM汇编语言伪操作伪操作(Directive)是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。伪操作只是汇编过程中起作用,一旦汇编结束,伪操作也就随之消失。63 ARM汇编伪操作
18、ARM公司推出的开发工具所支持的汇编伪操作:符号定义伪操作数据定义伪操作汇编信息报告控制伪操作汇编代码控制伪操作文件包含伪操作指令集类型标识伪操作其他功能伪操作符号定义伪操作 语法格式功能LCLAvariable 定义一个局部算术变量并将其初始化为0LCLL variable定义一个局部逻辑变量并将其初始化为FALSELCLSvariable定义一个局部字符串变量并将其初始化为空串GBLAvariable 定义一个全局算术变量并将其初始化为0GBLLvariable定义一个全局逻辑变量并将其初始化为FALSEGBLSvariable定义一个全局字符串变量并将其初始化为空串variable_a
19、SETA expr_a给一个全局或局部算术变量赋值variable_l SETL expr_l给一个全局或局部逻辑变量赋值variable_s SETS expr_s给一个全局或局部字符串变量赋值举例如下: GBLA Test1 ;定义一个全局的数字变量Test1 SETA 0 xaa ;将该变量赋值为0 xaa GBLL Test2 ;定义一个全局的逻辑变量Test2 SETL TRUE ;将该变量赋值为真 GBLS Test3 ;定义一个全局的字符串变量Test3 SETS “Testing” ;将该变量赋值为“Testing” 举例如下: LCLA Test4 ;声明一个局部的数字变量T
20、est4 SETA 0 xaa ;将该变量赋值为0 xaa LCLL Test5 ;声明一个局部的逻辑变量Test5 SETL TRUE ;将该变量赋值为真 LCLS Test6 ;定义一个局部的字符串变量Test6 SETS “Testing” ;将该变量赋值为“Testing” 符号定义伪操作 语法格式功能name RLIST registers_list为一个通用寄存器列表定义名称name SN expr为一个单精度的VFP寄存器定义名称,单精度寄存器编号范围为031name DN expr为一个双精度的VFP寄存器定义名称,双精度寄存器编号范围为015name FN expr为一个FP
21、A浮点寄存器定义名称,浮点寄存器编号范围为07name CP expr为一个协处理器定义名称,协处理器编号范围为015name CN expr为一个协处理器的寄存器定义名称,协处理器的寄存器编号范围为015符号定义伪操作注意事项用伪操作声明的全局或局部变量名必须在整个程序范围内是唯一的。用伪操作对变量赋值前必须先声明变量。用RLIST定义的寄存器列表名,可以在LDM/STM中使用。在使用DN伪操作时,双精度VFP寄存器D0D15是汇编器预先定义的,用户不能再使用。在使用SN伪操作时,单精度VFP寄存器S0S31是汇编器预先定义的,用户不能再使用。在使用FN伪操作时,FPA浮点寄存器F0F7是汇
22、编器预先定义的,用户不能再使用。在使用CP伪操作时,协处理器P0P15是汇编器预先定义的,用户不能再使用。在使用CN伪操作时,协处理器的寄存器C0C15是汇编器预先定义的,用户不能再使用。 ARM汇编器对ARM的寄存器进行了预定义,所有的寄存器和协处理器名都是大小写敏感的。预定义的寄存器如下:预定义变量1R0R15和r0r15;a1a4(参数、结果或临时寄存器,与r0r3同义);v1v8(变量寄存器,与r4r11同义);sb和SB(静态基址寄存器,与r9同义);sl和SL(堆栈限制寄存器,与r10同义);fp和FP(帧指针,与r11同义);预定义变量2ip和IP(过程调用中间临时寄存器,与r1
23、2同义);sp和SP(堆栈指针,与r13同义);lr和LR(链接寄存器,与r14同义);pc和PC(程序计数器,与r15同义);cpsr和CPSR(程序状态寄存器);spsr和SPSR(程序状态寄存器);f0f7和F0F7(FPA寄存器);s0s31和S0S31(VFP单精度寄存器);d0d15和D0D15(VFP双精度寄存器);p0p15(协处理器015);c0c15(协处理器寄存器015)。 内置变量ARM汇编器所定义的内置变量如下表1所示。值得注意的是内置变量的设置不能用SETA、SETL或SETS等指示符来设置,只能用于表达式或条件语句。例如:IF ARCHITECTURE = “4T
24、”变量含义PC或.当前指令的地址VAR或存储区位置计数器的当前值TRUE逻辑常量真FALSE逻辑常量假OPT当前设置列表选项值,OPT用来保存当前列表选项,改变选项值,恢复它的原始值CONFIG如果汇编器汇编ARM代码,则值为32;如果汇编器汇编Thumb代码,则值为16ENDIAN如果汇编器在大端模式下,则值为big;如果汇编器在小端模式下,则值为little表1 内置变量CODESIZE如果汇编器汇编ARM代码,则值为32;如果汇编器汇编Thumb代码,则值为16,与CONFIG同义CPU选定的CPU名,缺省时为ARM7TDMIFPU选定的FPU名,缺省时为SoftVFPARCHITECT
25、URE选定的ARM体系结构的值;3,3M,4,4T和4TxMPCSTOREOFFSETSTR pc,或STM Rb,PC指令的地址和PC存储值之间的偏移量ARMASM_VERSION或| ads $ version |ARM汇编器的版本号,为整数表1 内置变量(续)数据定义伪操作 数据定义伪操作一般用于为特定的数据分配存储单元,也可以完成已分配存储单元的初始化 。数据定义伪操作语法格式功能labelDCBexpr, expr其中:expr是-128255之间的数字或字符串分配一片连续的字节存储单元并用expr初始化,字节数由expr的个数决定。“DCB”可以用“=”代替。labelDCWexp
26、r, expr 其中:expr是-3276865535之间的数字表达式或已定义的变量分配一片连续的半字存储单元并用expr初始化,半字数由expr的个数决定。(要求半字对齐)labelDCWUexpr, expr 其中:expr是-3276865535之间的数字表达式或已定义的变量分配一片连续的半字存储单元并用expr初始化,半字数由expr的个数决定。(不要求半字对齐)以上三条中的label:是可选的程序标号;数据定义伪操作语法格式功能labelDCDexpr, expr 其中:expr为数字表达式或已定义的变量分配一片连续的字存储单元并用expr初始化,字数由expr的个数决定。“DCD”
27、可以用“&”代替。(要求字对齐)labelDCDUexpr, expr 其中:expr为数字表达式或已定义的变量分配一片连续的字存储单元并用expr初始化,字数由expr的个数决定。(不要求字对齐)以上三条中的label:是可选的程序标号;数据定义伪操作语法格式功能labelDCQ-expr, -expr 其中:expr为数字或表达式,其数值必须是整数。如果前没有“-”号,取值范围为0264-1;如果前有“-”号,取值范围为0263-1分配一片连续的双字存储单元并用expr初始化,字数等于expr个数的2倍。(要求字对齐)labelDCQU-expr, -expr 其中:expr为数字或表达式
28、,其数值必须是整数。如果前没有“-”号,取值范围为0264-1;如果前有“-”号,取值范围为0263-1分配一片连续的双字存储单元并用expr初始化,字数等于expr个数的2倍。(不要求字对齐)以上三条中的label:是可选的程序标号;数据定义伪操作语法格式功能labelDCFSfpliteral, fpliteral 其中fpliteral单精度浮点表达式,取值范围:1.17549435e-383.4028234e+38。分配一片连续的单精度浮点数存储单元并用fpliteral初始化,每个浮点数占一个字单元,分配的字数由fpliteral的个数决定。(要求字对齐)labelDCFSUfpli
29、teral, fpliteral 其中fpliteral单精度浮点表达式,取值范围:1.17549435e-383.4028234e+38。分配一片连续的单精度浮点数存储单元并用fpliteral初始化,每个浮点数占一个字单元,分配的字数由fpliteral的个数决定。(不要求字对齐)以上三条中的label:是可选的程序标号;数据定义伪操作语法格式功能labelDCFDfpliteral, fpliteral 其中fpliteral单精度浮点表达式,取值范围:2.22507385850720138e-308 1.7976931348623157e+308分配一片连续的双精度浮点数存储单元并用f
30、pliteral初始化,每个浮点数占两个字单元,分配的字数等于fpliteral个数的2倍。(要求字对齐)labelDCFDUfpliteral, fpliteral 其中fpliteral单精度浮点表达式,取值范围: 2.22507385850720138e-308 1.7976931348623157e+308分配一片连续的双精度浮点数存储单元并用fpliteral初始化,每个浮点数占两个字单元,分配的字数等于fpliteral个数的2倍。(不要求字对齐)以上三条中的label:是可选的程序标号;声明数据缓冲池LTORG功能:在使用LDR伪指令时,要在适当的位置加入LTROG声明数据缓冲池
31、,这样就会把要加载的数据保存到缓存池中,再使用ARM加载指令读出,如果没有使用LTROG声明数据缓冲池,则汇编器会在程序末尾自动声明。语法格式:LTROG分配存储空间SPACE功能:用于分配一片连续的存储区域并初始化为0。其中,表达式为要分配的字节数。SPACE 也可用“”代替。 语法格式:label SPACE expr 其中:label为可选的程序标号; expr为分配的字节数。使用示例:AREA Example, CODE, READONLY start BL func1 func1 ; code LDR r1,=0 x55555555 ; code MOV pc,lr LTORG da
32、ta SPACE 4200 ;从当前位置开始分配连续4200字 节的存储单元并初始化为0END定义结构化内存表首地址MAP功能:用于定义一个结构化的内存表的首地址。MAP 也可用“”代替。表达式可以为程序中的标号或数学表达式;基址寄存器为可选项:当基址寄存器选项不存在时,表达式的值即为内存表的首地址,当该选项存在时,内存表的首地址为表达式的值与基址寄存器的和。语法格式:MAP expr,base_register其中:结构化内存表的首址为expr与base_register之和MAP 伪指令通常与FIELD 伪指令配合使用来定义结构化的内存表。定义结构化内存表数据域FIELD功能:用于定义一个
33、结构化内存表中的数据域。FILED 也可用“#”代替。语法格式:labelFIELD expr其中:label为可选的程序标号,当指定这一选项时,label的值为当前内存表的位置计数器的值;expr为当前数据域在内存表中所占的字节数。FIELD 伪指令常与MAP 伪指令配合使用来定义结构化的内存表:注意:MAP 和FIELD 伪指令仅用于定义数据结构,并不实际分配存储单元。 MAP 伪指令定义内存表的首地址;FIELD 伪指令定义内存表中的各个数据域,并可以为每个数据域指定一个标号供其他的指令引用。举例如下:MAP 0 x100 ;定义结构化内存表首地址的值为0 x100。 A FIELD 1
34、6 ;定义A的长度为16字节,位置为0 x100 B FIELD 32 ;定义B的长度为32字节,位置为0 x110 S FIELD 256 ;定义S的长度为256字节,位置为0 x130 汇编代码控制伪操作 汇编控制伪操作用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条: IF、ELSE、ENDIF WHILE、WEND MACRO、MEND MEXIT IF条件编译伪操作语法格式:IF logical_expression程序代码段AELSE程序代码段BENDIF当IF 后面的逻辑表达式为真,则执行指令序列1,否则执行指令序列2。其中,ELSE 及指令序列2 可以没有。此时,当
35、IF 后面的逻辑表达式为真,则执行指令序列1,否则继续执行后面的指令。 IF、ELSE、ENDIF 伪指令可以嵌套使用。举例如下:GBLL Test IF Test = TRUE 指令序列1 ELSE 指令序列2 ENDIF WHILE条件编译伪操作语法格式:WHILElogical_expression程序代码段WEND当WHILE 后面的逻辑表达式为真,则执行指令序列,该指令序列执行完毕后,再判断逻辑表达式的值,若为真则继续执行,一直到逻辑表达式的值为假。 WHILE、WEND 伪指令可以嵌套使用。GBLA Counter Counter SETA 3 WHILE Counter 10 指
36、令序列 WEND MACRO宏定义伪操作语法格式:MACRO$labelmacroname$parameter,$ parameter程序代码段MENDMACRO、MEND伪指令可以将一段代码定义为一个整体,称为宏指令。宏指令可以使用一个或多个参数,当宏指令被展开时,这些参数被相应的值替换。MACRO、MEND 伪指令可以嵌套使用。 ; macro definition MACRO ; start macro definition $label xmac $p1,$p2 ; code $label.loop1 ; code ; code BGE $label.loop1$label.loop2
37、 ; code BL $p1 BGT $label.loop2 ; code ADR $p2 ; code MEND ; end macro definition ; macro definition MACRO ; start macro definition $label xmac $p1,$p2 ; code $label.loop1 ; code ; code BGE $label.loop1$label.loop2 ; code BL $p1 BGT $label.loop2 ; code ADR $p2 ; code MEND ; end macro definition ; ma
38、cro invocation abc xmac subr1,de ; invoke macro ; codeabcloop1 ; code ; code BGE abcloop1 abcloop2 ; code BL subr1 BGT abcloop2 ; code ADR de ; code 其他常用的伪指令AREA 指令指示汇编器汇编新的代码段或数据段。 段是不可分的已命名独立代码或数据块,由链接器处理。 AREA sectionname,attr,attr. sectionname 段指定的名称,以非字母字符开头的名称必须包含在竖杠内,否则会生成缺失段名的错误。 ,attr表示该段的相关属性,多个属性用逗号分隔,常用属性如下:AREA Init, CODE, READONLY ; 定义Init为代码段,属性为只读AREA RamData, DAT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村级饮水长效管护方案
- 村委废弃桌椅处理方案
- 材料与加工工艺课程设计
- 家政外派合同模板
- 调查问卷模板完整版
- 分包合同范本6篇
- 电子商务论文3篇(含目录)
- 飞英语怎么写
- 2024年5G网络建设与运营服务合作协议
- 隧道工程土石方开挖方案
- 室上性心动过速的鉴别诊断课件
- 化工石油工程项目管道安装技术教材课件
- 近代科学革命课件
- 二年级上册美术课件-10.感觉肌理 |苏少版 (共14张PPT)
- 轻创业、赢未来培训教学课件
- 三年级 上册科学 课件-2.4 哺乳动物 |湘教版(一起)(共23张PPT)
- 三年级检讨书100字(5篇)
- 四年级上册美术教案-第10课 黑白灰 苏少版
- 乐山市市中区2022-2023学年度上期期中调研考试八年级生物试题及答案
- 《出塞》优秀课件
- 《铁道概论》考试复习题库400题(含答案)
评论
0/150
提交评论