好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

在ARM处理器汇编伪指令.doc

15页
  • 卖家[上传人]:206****923
  • 文档编号:91379483
  • 上传时间:2019-06-27
  • 文档格式:DOC
  • 文档大小:102.52KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 在ARM处理器汇编语言程序设计里,有一些特殊的指令助记符这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊的指令助记符为伪指令,它们所完成的操作称为伪操作伪指令在源程序中的作用是为完成汇编程序做各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了在ARM处理器的汇编程序中,大体有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令及其他伪指令伪操作符可以分为以下几类1)数据定义伪操作符数据定义伪操作符主要包括LTORG、MAP、DCB、FIELD、SPACE、DCQ、DCW等,主要用于数据表定义、文字池定义、数据空间分配等常用的有DCB/DCQ/DCW分配一段字节/双字/字内存单元,并且将它们初始化2)符号定义伪操作符符号定义伪操作符包括GBLA、GBLL、GBLS、LCLA、CN、CP、DN、FN、RLIST、SETA等,用于定义ARM汇编程序的变量,对变量进行赋值,以及定义寄存器名称等其中用于全局变量声明的GBLA、GBLL、GBLS和局部变量声明的LCAL、LCLL、LCLS伪指令较为常用3)报告伪操作符报告伪操作符包括ASSERT、INFO、OPT等,主要用于汇编报告等。

      其中比较常用的有ASSERT,表示断言错误4)条件汇编伪操作符条件汇编伪操作符包括IF、ELSE、ENDIF、WHIL、WEND、MACRO、MEND等,主要用于条件汇编、宏定义、重复汇编控制等操作5)杂项伪操作符杂项伪操作符包括AREA、ALIGN、ENTRY、EQU、EXPORT、GLOBAL、IMPORT、CODE16、CODE32等这些伪指令在汇编程序设计中较为常用,如段定义、入口点设置等伪指令常用的伪指令主要有以下几条AREA:用来定义段;ALIGN:用来设定边界对齐;CODE16/CODE32:用来指定指令集;ENTRY:指定程序入口;END:汇编结束 在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成 1 V* ?: A2 c1 L% r' m' B a" j% I9 U 在 ARM 的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。

      2 v3 w5 X$ G4 E. L: a1 r B n- J" j- J' Z p 符号定义( Symbol Definition )伪指令 符号定义伪指令用于定义 ARM 汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作 Y! |# q" F! /& x$ x 常见的符号定义伪指令有如下几种: — 用于定义全局变量的 GBLA 、 GBLL 和 GBLS CEDN论坛& V) {7 M, d' S' _ — 用于定义局部变量的 LCLA 、 LCLL 和 LCLS — 用于对变量赋值的 SETA 、 SETL 、 SETS — 为通用寄存器列表定义名称的 RLIST ?7 x; t; I4 h* ` 1、 GBLA、GBLL 和GBLS / q: X* X- W' v5 [3 v2 {4 Q 语法格式: 6 K, E9 M, s9 i5 U GBLA ( GBLL 或 GBLS ) 全局变量名 GBLA 、 GBLL 和 GBLS 伪指令用于定义一个 ARM 程序中的全局变量,并将其初始化。

      其中: GBLA 伪指令用于定义一个全局的数字变量,并初始化为 0 ; % /6 M+ b/ U% W+ b" U3 F GBLL 伪指令用于定义一个全局的逻辑变量,并初始化为 F (假); : E! r/ ~0 / o) ] GBLS 伪指令用于定义一个全局的字符串变量,并初始化为空; 由于以上三条伪指令用于定义全局变量,因此在整个程序范围内变量名必须唯一 使用示例: GBLA Test1 ;定义一个全局的数字变量,变量名为 Test1 0 _: m2 v& L4 G3 b; L C Test1 SETA 0xaa ;将该变量赋值为 0xaa GBLL Test2 ;定义一个全局的逻辑变量,变量名为 Test2 s% ^3 /8 U& R% G Test2 SETL {TRUE} ;将该变量赋值为真 GBLS Test3 ;定义一个全局的字符串变量,变量名为 Test3 - {( Q a* c* S* P, z% B Test3 SETS “ Testing ” ;将该变量赋值为 “ Testing ” 2、 LCLA、LCLL 和LCLS 语法格式: : e6 E2 F7 V! O* C0 H3 / LCLA ( LCLL 或 LCLS ) 局部变量名 $ p% F+ J! s( @, E$ @ LCLA 、 LCLL 和 LCLS 伪指令用于定义一个 ARM 程序中的局部变量,并将其初始化。

      其中: LCLA 伪指令用于定义一个局部的数字变量,并初始化为 0 ; 1 K3 ~* I. C4 F* I! ?7 L: f7 X, N LCLL 伪指令用于定义一个局部的逻辑变量,并初始化为 F (假); LCLS 伪指令用于定义一个局部的字符串变量,并初始化为空; 0 K5 v( |# f6 u 以上三条伪指令用于声明局部变量,在其作用范围内变量名必须唯一 使用示例: LCLA Test4 ;声明一个局部的数字变量,变量名为 Test4 2 k3 K5 R4 w | k h7 c) E! L Test3 SETA 0xaa ;将该变量赋值为 0xaa LCLL Test5 ;声明一个局部的逻辑变量,变量名为 Test5 % P9 /$ [/ y% t& f Test4 SETL {TRUE} ;将该变量赋值为真 . T! z) p# /. i5 ~ LCLS Test6 ;定义一个局部的字符串变量,变量名为 Test6 + n0 /1 n" X/ O$ @: [ Test6 SETS “ Testing ” ;将该变量赋值为 “ Testing ” , }7 @% v2 s$ Z' C; H8 W 3、 SETA、SETL 和SETS 语法格式: 5 T2 A/ M" F* A+ S. ~3 p4 /$ I8 n8 o 变量名 SETA ( SETL 或 SETS ) 表达式 1 U' L% w, B/ A+ R0 M' S: _ 伪指令 SETA 、 SETL 、 SETS 用于给一个已经定义的全局变量或局部变量赋值。

      X8 q$ C0 {7 n& N SETA 伪指令用于给一个数学变量赋值; 3 @6 y, Y' B5 t8 K9 M1 [) [6 /& U4 B SETL 伪指令用于给一个逻辑变量赋值; 6 o5 M. J6 Y2 y; l& Q( v SETS 伪指令用于给一个字符串变量赋值; 4 {) t" u0 ~0 N1 /7 Q2 k2 p 其中,变量名为已经定义过的全局变量或局部变量,表达式为将要赋给变量的值 使用示例: LCLA Test3 ;声明一个局部的数字变量,变量名为 Test3 & z, s/ k7 C9 h/ f4 | Test3 SETA 0xaa ;将该变量赋值为 0xaa ' k, M" s# K, Q ~% t LCLL Test4 ;声明一个局部的逻辑变量,变量名为 Test4 Test4 SETL {TRUE} ;将该变量赋值为真 CEDN论坛/ ~' @" E2 m* M( P 4 、 RLIST 语法格式: 名称 RLIST { 寄存器列表 } CEDN论坛% b P2 a8 g7 i% ? RLIST 伪指令可用于对一个通用寄存器列表定义名称,使用该伪指令定义的名称可在 ARM 指令 LDM/STM 中使用。

      在 LDM/STM 指令中,列表中的寄存器访问次序为根据寄存器的编号由低到高,而与列表中的寄存器排列次序无关 CEDN论坛6 }+ W$ u* c& c7 o8 a 使用示例: RegList RLIST {R0-R5 , R8 , R10} ;将寄存器列表名称定义为 RegList ,可在 ARM 指令 LDM/STM中通过该名称访问寄存器列表 / i6 `/ X: R+ w# s' F; A) L 数据定义( Data Definition )伪指令 数据定义伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化 常见的数据定义伪指令有如下几种: — DCB 用于分配一片连续的字节存储单元并用指定的数据初始化 ' B) Y r6 A, W — DCW ( DCWU ) 用于分配一片连续的半字存储单元并用指定的数据初始化 1 V6 |1 L1 F' /: w — DCD ( DCDU ) 用于分配一片连续的字存储单元并用指定的数据初始化 — DCFD ( DCFDU )用于为双精度的浮点数分配一片连续的字存储单元并用指定的数据初始 化。

      2 c! J/ f% z/ ` — DCFS ( DCFSU ) 用于为单精度的浮点数分配一片连续的字存储单元并用指定的数据初 - g' Z8 U, m# R/ q 始化 - /! f" f6 M A( M8 M) | — DCQ ( DCQU ) 用于分配一片以 8 字节为单位的连续的存储单元并用指定的数据初始 化 — SPACE 用于分配一片连续的存储单元 CEDN论坛* `+ a2 @8 y3 M! d3 c, b5 q- N+ j — MAP 用于定义一个结构化的内存表首地址 — FIELD 用于定义一个结构化的内存表的数据域 5 E2 ?3 q/ V: a$ R* J6 E% L$ [ 1、 DCB . B `) _# i( 。

      点击阅读更多内容
      相关文档
      山东省德州市2025-2026学年高三上学期开学考试语文试题【含答案】.doc 江苏省淮安市2025年中考语文试卷.docx 江苏省扬州市2024-2025学年高二上学期期中考试语文试题【含答案】.doc 山东省昌邑市2024--2025学年高二上学期期中考试语文试卷【含答案】.doc 安徽省皖南八校2026届高三摸底大联考语文试卷【含答案】.doc 2025年三年级语文上册教学计划及进度表.docx 2025年四川省资阳市中考语文真题(解析).docx 福建省漳州市2026届高三毕业班第一次教学质量检测语文试卷【含答案】.doc 2026届广东省广州市高三年级阶段训练8月阶段考语文试题.doc 2025届甘肃省兰州市中考语文真题【含答案】.doc 2025-2026 学年第一学期二年级上册语文教学计划.docx 2025年山东省潍坊市中考语文真题.doc 重庆市高2026届高三第一次质量检测语文试题【含答案】.doc 2025-2026学年第一学期四年级上册语文教学计划 及进度表.docx 2024年北京市通州区九年级(上)期中语文试卷.doc 山东省日照市2025-2026学年高三上学期校际联合考试语文试题【含答案】.doc 2024年北京市房山区九年级(上)期中语文试卷【含答案】.doc 山东省聊城市冠县2026届高三上学期开学质量检测语文试题【含答案】.doc 山东省日照市2025-2026学年高二上学期开学考试语文试题【含答案】.doc 1.7 0的认识和加、减法同步练习 含答案-2024版新教材一年级数学上册同步分层作业系列人教版.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.