关于汇编语言LDR

关注

技术 嵌入式 瞩目人kri    2018-08-10   |   浏览量 58  
 现在currentTask=0x20004488 ;nextTask=0x200003210;那么寄存器R0、R1是多少?   LDR R2 [R1]后,R2又是多少呢?有人懂这个吗?

最佳答案

  • PG_CPZ 发表于2018-08-10

    这是寄存器间接寻址,
    第3句是把R1的值作为地址,取出该地址所存值赋给R2
    最后一句是把R2的值存入以R0为地址的存储单元。currentTask=0x20004488 ;nextTask=0x200003210(假如你给的是标号地址而不是该地址所存的内容)
    第1句:R0=currentTask的标号地址0x20004488 ; 
    第2句:R1=nextTask的标号地址0x200003210;

    第3句:取出nextTask地址所存的值给R2
    第4句:把R2值存入currentTask所指的地址
    简单地说,最后就是把下一任务的指针存入了当前任务指针
    即C语言的:    p_currentTask=p_nextTask;

    回答点赞:   Chauncey 举报 评论 1

其他答案

  • 向悫 发表于 2018-08-10 云汉达人

    ldr  加载指令
    格式为:LDR  目的寄存器,<存储器地址>

    LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。


    STR指令的格式为:
    STR 源寄存器,<存储器地址>
    STR指令用亍从源寄存器中将一个32位的字数据传送到存储器中。


    回答点赞:   捷波 megar 举报 评论 2

  • Andrewz 发表于 2018-08-10

    R0 = 0x20004488;

    r1 = 0x20003210;

    R2 = 地址0x20003210的内容


    举报 评论 0

  • xdsnet 发表于 2018-08-10

    汇编里,[Rx] 相当于指针取值,这里就是地址地址0x20003210处的值。

    举报 评论 0

  • robe_zhang 发表于 2018-08-10

    R2 中的值是多少,先看完分析一下就知道了:

    nexttask 是个指针,指向下一个任务,currenttask 是当前任务指针,

    经过你的第 3, 4 条指令,把下一个任务放到当前任务中了,nexttask,currenttask  是两个指针,R2 中内容就是nexttask 中的值,也就是0x200003210 这个地址里面的数据,把nexttask 中的值经过 R2 转存到 currenttask 中了

    其实这个是任务切换时候的一小段代码

    举报 评论 0

  • robe_zhang 发表于 2018-08-10

    看操作系统的代码,最好抛弃掉单片机寄存器配置那个思路,rtos 操作系统是面向 mcu 的通用的操作系统,他里面好多对象,然后最底层才是硬件适配,对象这一层都是通用的,不要去追究对象中值是多少,对象中是什么东西有什么意义,比值远远重要的多。

    在你这个例子中,R2 中的值,很可能是 tcb / pcb 中的指针吧,任务执行时候,假如 rtos 有 5 个任务,下一个任务的 tcb 指针就是 4 个指针中的一个,就是就绪任务队列最前面那一个,具体要去研究哪个任务是当前任务的下一个任务,这个是没有意义的,重要的是,他就是任务切换,把下一个就绪任务换入当前任务。

    举报 评论 0

  • chen0000009 发表于 1天前

    R0为0x20004488;
    R1为0x20003210;
    至于R2,应该是等于地址为R1的存储器里面的内容

    举报 评论 0

我来回答

试用推荐

正点原子阿波罗STM32F767开发板

产品总数:3个  申请人数:54

距离结束时间:

推荐达人 更多>

  • 王奕 向ta提问

    Eagleson

    在学习FPGA的道路上 我们一起成长吧!

    在行: FPGA/CPLD

  • 靳飞 向ta提问

    汉云

    在路上的Linuxer

    在行: DSP技术 Linux 系统 STM32讨论区 PIC单片机 PCB技术/设计/定制

  • Angel Cherry 向ta提问

    MOP

    用愛和熱忱寫好每一行Code

    在行: FPGA/CPLD Linux 系统 热门单片机

  • 徐珂靖 向ta提问

    xukejing

    Linux系统 、热门开发板

    在行: Linux 系统

  • 袁建明 向ta提问

    河北博联科技有限公司 研发部经理

    日知其所亡

    在行: Linux 系统 灵动微MCU 电源技术

完成答题
赶快去开启您的宝箱吧
了解详情