关于汇编ARM指令DCD

发布者:BlissfulMoon最新更新时间:2015-09-29 来源: eefocus关键字:汇编  ARM指令  DCD 手机看文章 扫描二维码
随时随地手机看文章
数据定义( Data Definition )伪指令

数据定义伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。

— DCD ( DCDU ) 用于分配一片连续的字存储单元并用指定的数据初始化。

3、 DCD(或DCDU)

语法格式:

标号 DCD (或 DCDU ) 表达式

DCD (或 DCDU )伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化。其中,表达式可以为程序标号或数字表达式。 DCD 也可用 “ ” 代替。

用 DCD 分配的字存储单元是字对齐的,而用 DCDU 分配的字存储单元并不严格字对齐。

使用示例:

DataTest DCD , , ;分配一片连续的字存储单元并初始化。

 

举例1:

SwiFunction
        DCD     TASK_SW                ;0
        DCD     ENTER_CRITICAL         ;1
        DCD     EXIT_CRITICAL            ;2
        DCD     ISRBegin                 ;3
        DCD     ChangeToSYSMode         ;4
        DCD     ChangeToUSRMode         ;5
        DCD     __OSStartHighRdy        ;6
        DCD     TaskIsARM               ;7
        DCD     TaskIsTHUMB             ;8
        DCD     OSISRNeedSwap           ;9
        DCD     GetOSFunctionAddr       ;10
        DCD     GetUsrFunctionAddr      ;11

TASK_SW
        MRS     R3, SPSR                        ;保存任务的CPSR

        MOV     R2, LR                          ;保存任务的PC

 

 

举例2:

语句如下:
FiqStackSpace SPACE FIQ_Stack_Legth
FiqStack DCD FiqStackSpace + FIQ_Stack_Legth

最后一条语句,DCD的后面跟FiqStackSpace + FIQ_Stack_Legth,
DCD后面的FiqStackSpace,表示一串空字符,这好理解
但是再上FIQ_Stack_Legth,就不明白了,WHY?

 

FiqStackSpace是标号,相当与地址,实际上就是在FiqStackSpace SPACE FIQ_Stack_Legth 这个语句给分配的空间的首地址,FiqStackSpace+ FIQ_Stack_Legth 是这个地址空间的结束地址,将FiqStack指向这个地址,当做栈的顶部,该栈向下生长,长度FIQ_Stack_Legth

关键字:汇编  ARM指令  DCD 引用地址:关于汇编ARM指令DCD

上一篇:STM32学习笔记之十六——题外话,自己做块工程板
下一篇:STM32+W5500+MQTT+Android实现远程数据采集及控制

推荐阅读最新更新时间:2024-03-16 14:33

GNU ARM汇编快速入门
以前用ARM的IDE工具,使用的是ARM标准的汇编语言。现在要使用GNU的工具,当然要了解一点GNU ARM汇编的不同之处。其实非常的简单,浏览一下文档然后再看看程序就完全可以搞定了,或者你硬着头皮看GNU ARM的汇编程序,用不了多少时间你就就可以无师自通了。 ARM汇编语言源程序语句 ,一般由指令、伪操作、宏指令和伪指令作成。ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令。 目前常用的ARM编译环境有2种: ARMASM: ARM公司的IDE中使用了CodeWarrior的编译器,绝大多数windows下的开发者都在使用这一环境,完全按照ARM的规定; GNU ARM ASM:GNU工具的ARM版本,与ARMASM
[单片机]
ARM中的汇编和机器码
我们以S3C2440的GPIO汇编代码为例: .text .global _start _start: //把0x100写到地址0x56000050上,配置gpf4为输出引脚, ldr r1, =0x56000050 ldr r0,=0x100 str r0, //把0x00写到地址0x56000054上,设置gpf4输出低电平, ldr r1, =0x56000054 ldr r0,=0x00 str r0, //死循环 halt: b halt 在上面的代码中,我们使用了伪指令ldr把值存放到r0,r1寄存器里面,所谓伪指令就是假的指令,它并不是真正的ARM指令,我们通过
[单片机]
ARM中的<font color='red'>汇编</font>和机器码
时钟,秒表,流水灯的单片机汇编程序
//HJSMSY-V1.0 单片机 开发板测试程序 //--------------------------------------------- // 电脑钟 //--------------------------------------------- //=======主函数================================== ORG 0000H LJMP MAIN ORG 000BH LJMP T00 // ORG 001BH // LJMP T11 ORG 0030H //=======程序初始化============================= MAI
[单片机]
STM8汇编代码分析
使用STVD建立完汇编工程项目之后(具本建立方法可以看我的另一篇博文 http://blog.csdn.net/u010093140/article/details/49983397 ),可以看到这个目录结构(以STM8S105C6芯片为例) 其中.asm文件是汇编代码的源文件,.inc文件是包含文件,类似于C语言当在的.c文件和.h文件。接下来让我们来分析一下这三个文件。(分析汇编代码最好也要对STM8单片机的启动流程有所了解,可以看我的另一篇博文 http://blog.csdn.net/u010093140/article/details/49982879 ) 首先是看mapping.inc文件: ;-------
[单片机]
ARM指令分类(详细)
指令: 数据处理指令只能对寄存器内容进行操作,而不能对存储器内容操作 所有数据处理指令均可使用s后缀影响标志位 数据处理指令 数据传送指令 算数逻辑运算指令 比较指令 跳转指令 程序状态寄存器访问指令 存储器访问指令 数据传送指令: 算数运算指令 逻辑运算指令 比较指令 跳转指令 程序状态寄存器访问指令 存储器访问指令 单数据传送指令 块数据传输 后一个数为寄存器 伪指令 伪指令不像机器指令那样在处理器运行期间由机器执行,而是在汇编程序对源程序汇编期间进行处理 符号定义伪指令 数据定义伪指令 报告伪指令 汇编控制伪指令
[单片机]
<font color='red'>ARM指令</font>分类(详细)
ARM指令和Thumb指令和Thumb-2指令的区别
上述节选《Cortex‐M3 权威指南》 初稿 第 1 章 ARM11之前的处理器和指令集架构 ARM11芯片之前,每一个芯片对应的架构关系如下: ARM11之后处理器和指令集架构 ARM11芯片之后,也就是从ARMv7架构开始,ARM的命名方式有所改变。 新的处理器家族,改以Cortex命名,并分为三个系列,分别是Cortex-A,Cortex-R,Cortex-M。 很巧合,又是这三个字母A、R、M。 Cortex-A系列(A:Application) 针对日益增长的消费娱乐和无线产品设计,用于具有高计算要求、运行丰富操作系统及提供交互媒体和图形体验的应用领域,如智能手机、平板电脑、汽车娱乐
[单片机]
<font color='red'>ARM指令</font>和Thumb指令和Thumb-2指令的区别
ARM汇编文件的组成和汇编指令类型
ARM汇编文件的组成 指令:编译完成后作为一条指令(机器码)存储在内存单元中,CPU执行时能够完成处理的操作 伪指令:在编译时替换成能被识别的ARM指令 伪操作:知道编译器进行编译,编译完成后不生成指令,也不占用内存空间。 ARM汇编指令类型 数据处理指令 跳转指令:实现程序执行过程中的跳转 Load/Store指令:CPU与内存数据之间的操作指令 状态寄存器存送指令:对状态寄存器操作(只能使用这些指令对状态寄存器操作) 协处理器指令:对协处理器进行操作 异常产生指令:产生异常(软中断),实现模式切换
[单片机]
飞思卡尔用经济高效的调试工具包简化8位代码的开发
USBSPYDER08 发现工具包为价格低于30美元的S08微控制器提供了小型、快速、基于USB的电路内调试 德国纽伦堡(2007年嵌入式世界大会) -使用飞思卡尔的低端8位微控制器(MCU)的嵌入式系统设计人员现在可以简单快速地调试他们的代码,做到“开箱即用”。飞思卡尔已经引入了强大的、简单的和经济高效的调试工具包,使设计人员在完成他们的嵌入式应用之前,能够灵活地开发、评估和测试8位代码。 专为飞思卡尔的S08 MCU设计的USBSYPDER08 发现工具包针对广受欢迎的MC9S08QG、MC9S08QD和MC9RS08KA系列,是飞思卡尔成员队伍日益壮大的、使用简便的嵌入式应用开发工具最新版本。该工具包具有基于USB电路
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved