您现在的位置是: 首页 > 汽车排行榜 汽车排行榜

arm 汇编 ds_arm 汇编 dcd

ysladmin 2024-06-20 人已围观

简介arm 汇编 ds_arm 汇编 dcd       非常欢迎大家参与这个arm 汇编 ds问题集合的探讨。我将以开放的心态回答每个问题,并尽量给出多样化的观点和角度,以期能够启发大家的思考。1.几道简单ARM

arm 汇编 ds_arm 汇编 dcd

       非常欢迎大家参与这个arm 汇编 ds问题集合的探讨。我将以开放的心态回答每个问题,并尽量给出多样化的观点和角度,以期能够启发大家的思考。

1.几道简单ARM汇编代码题

2.arm 汇编指令

3.关于汇编语言MOV指令的问题?

arm 汇编 ds_arm 汇编 dcd

几道简单ARM汇编代码题

       我来回答你吧,研究ARM汇编也有段时间了,在查相关资料,这个应该可以解决的,要是考试,我的答案100分至少85分吧。

       26. MOV R0,#X

        MOV R1,#64

        CMP R0,R1

        MOVHI RO,#0

        MOVLS R2,#0

       27. 字符串拷贝程序设计(用LDR和STR实现)

       AREA StrCopy, CODE, READONLY

       ENTRY ; 程序入口

       start

       LDR r1, =srcstr ; 初始串的指针

       LDR r0, =dststr ; 结果串的指针

       BL strcopy ; 调用子程序执行复制

       stop

       MOV r0, #0x18 ; 执行中止

       LDR r1, =0x20026 ;

       SWI 0x123456 ;

       strcopy

       LDRB r2, [r1],#1 ; 加载并且更新源串指针

       STRB r2, [r0],#1 ; 存储且更新目的串指针;

       CMP r2, #0 ; 是否为0

       BNE strcopy ;

       MOV pc,lr ;

       AREA Strings, DATA, READWRITE

       srcstr DCB "First string - source",0

       dststr DCB "Second string - destination",0

       END

       29. 和26题差不多啊。

        MOV R0,#X

        MOV R1,#100

        CMP R0,R1

        MOVLS RO,#1

        MOVHI R2,#1

       25. 这题两个函数功能一样,处理器特性我就不说了,任何一本介绍ARM的书都有讲解。在效率方面第一个好些,因为i=1和i=limit中

        i=1中,只要读i的地址,然后把2传递即可

        i=limit中,既要读i的地址,也要读limit的地址,然后再传值

        很明显第一个效率高。

        我的这个回答是看过一本程序员面试宝典中的程序效率问题启发的,应该不会错的。呵呵……

        希望我的回答对你有所收获。祝你进步!

arm 汇编指令

       1、ARM DS-5 从以下工具发展而来:DS-5 < RVDS < ADS < SDT。

       目前RVDS、ADS和SDT都已经停止更新,新项目推荐使用向后兼容的DS-5。

       2、ARM DS-5 支持裸机程序、u-boot、Linux 和 Android Kernel、驱动、应用程序开发,以及Freescale MQX、Micrium uC/OS、Keil RTX、ENEA OSE、FreeRTOS、Express Logic ThreadX等实时操作系统。

       3、ARM DS-5 支持开发所有基于ARM内核的芯片,包括:

       老ARM内核: ARM7、ARM9、ARM11。

       Cortex-M系列内核: Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M4。

       Cortex-R系列内核:Cortex-R4、Cortex-R5、Cortex-R7。

       Cortex-A系列内核:Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A12、Cortex-A15。

       Cortex-A50系列内核:Cortex-A53、Cortex-A57。

       以及ARM最新发布的所有内核芯片。

       4、ARM DS-5基于Eclipse集成开发环境。

       5、ARM DS-5使用ARM编译器,代码优化程度比GNU高30%以上。

       6、ARM DS-5配合 DSTREAM仿真器 、 RVI 仿真器、ULINKpro仿真器、ULINKpro D仿真器进行内核和硬件调试。

       7、ARM DS-5配合gdbserver进行Linux应用调试。

       8、ARM DS-5有Cortex-A7,Cortex-A8,Cortex-A9,Cortex-A15。。。等处理器的实时模拟器。

       9、ARM DS-5有图形化的Streamline性能分析器。可基于C源码、汇编程序、地址对bear裸机程序、uboot、kernel、驱动、app进行热点、程序瓶颈、CPU使用、Cache hit/miss、功耗分析。

       10、ARM DS-5有 专业版、社区版(免费版)2个版本。

       11、ARM DS-5可以在 Window系统 和 Linux系统 主机上使用。

       12、ARM DS-5的详细介绍地址:/product/ds-5.htm。

       13、DS-5是ARM最新主推的开发工具,配合DSTREAM仿真器,可以进行功能强大的调试、仿真、性能分析功能。

       14、ARM DS-5国内由米尔科技提供技术支持和销售服务。

关于汇编语言MOV指令的问题?

       /questions/53268118/whats-the-difference-between-mov-movz-movn-and-movk-in-armv8-assembly

        instruction value of x0

        mov x0, #0x1f88 | 0x1f88

        movk x0, #0xb7fb, lsl #16 | 0xb7fb1f88

        movk x0, #0x7f, lsl #32 | 0x7fb7fb1f88

        ;ADD加法指令

        mov r0, #1

        mov r1, #1

        add r2, r1, r0  ;r2 = r1 + r0

        add r2, r1, #2  ;r2 = r1 + 2

        ;ADC带进位加法指令,即除了加两个数以外,还要把CPSR的C值也要带进来

        ADDS R0,R1,R2; R0=R1+R2,ADDS中S表示把进位结果写入CPSR

        ADC R5,R3,R4 ;R5=R3+R4+C

        ;SUB减法指令

        mov r0, #5

        mov r1, #3

        sub r2, r0, r1  ;r2 = r0 - r1

        sub r2, r1, #2  ;r2 = r1 - 2

        ;SBC带进位减法指令,即除了加两个数以外,还要把CPSR的C值也要带进来,类似ADC

        SUBS R0,R1,R2; R0=R1-R2,SUBS中S表示把进位结果写入CPSR

        SBC R5,R3,R4 ;R5=R3-R4-C

        AND R0,R1,R2; R0=R1 & R2

        AND R0,R1,#0xFF ;R0=R1 & 0xFF

        ORR R0,R1,R2; R0=R1 | R2

        ORR R0,R1,#0xFF ;R0=R1 | 0xFF

        MADD Rd, Rn, Rm, Ra => Rd = Ra + Rn * Rm

        MSUB Rd, Rn, Rm, Ra => Rd = Ra - Rn * Rm

       /documentation/100076/0100/a64-instruction-set-reference/a64-general-instructions/smaddl?lang=en

        Signed Multiply-Add Long multiplies two 32-bit register values, adds a 64-bit register value, and writes the result to the 64-bit destination register.

        SMADDL Xd, Wn, Wm, Xa

        Xd = Xa + Wn * Wm.

        LSR(Logical shift right),逻辑右移或者说是无符号的右移。LSR #n操作可以对寄存器的内容进行逻辑右移n位,左边被移走的n位全部被清零

        MOV R1,#0X80000001

        LSR R0,R1,#3; R0 = (unsigned)R1>> 3

       MOV AX,DS是把数据段的段地址取到AX中,后面应该有把AX再送其他段寄存器,这样,指向同一段地址。

       MOV AH,DS,这是错误指令,AH是八位的,不能送十六位的数。

       MOV DS,AX 把AX里面的数据赋到DS,前面应该有取段地址给AX,经过AX初始化DS。

       今天关于“arm 汇编 ds”的讨论就到这里了。希望通过今天的讲解,您能对这个主题有更深入的理解。如果您有任何问题或需要进一步的信息,请随时告诉我。我将竭诚为您服务。