• arm汇编几个经典例题


    这几个例题来自我们的上机实验,通过这几个例题基本上能掌握arm汇编一些最基本的操作

    arm汇编实现1-100的加法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	AREA Example1,CODE,READONLY;
    ENTRY;
    CODE32;
    START
    MOV R0,#0;总和
    MOV R1,#0;遍历数
    MOV R2,#100;至多少
    TIME
    ADDS R1,R1,#1;遍历数自加1
    ADDS R0,R0,R1;总和增加
    CMP R1,R2;判断
    BCC TIME;循环
    END;

    求一个二进制数中1的个数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	AREA lab2,CODE,READONLY;
    ENTRY

    start
    MOV r1,#0xac
    ;10101100共4个1
    MOV r6,#0;记录1的个数
    step
    SUB r0,r1,#1;写r1-1到r0
    AND r1,r0,r1;对r1与r1-1求与
    ADD r6,r6,#1;记录数+1
    CMP r1,#0;判断是否取完
    BNE step;否则继续

    END

    求一个二进制数的数组中1的个数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    	AREA lab2,CODE,READONLY;
    ENTRY

    start
    LDR r2,=nums
    MOV r6,#0;初始化1的个数为0
    LDRB r1,[r2],#1
    step
    SUB r0,r1,#1;写r1-1到r0
    AND r1,r0,r1;对r1与r1-1求与
    ADD r6,r6,#1;记录数+1
    CMP r1,#0;判断一个数是否取完
    LDREQB r1,[r2],#1;取完则访问下一个数
    CMP r1,#0;判断是否读到最后一个数字
    BNE step
    MOV r5,r6,LSR #1;将r6最后一位移入标志C位
    MOVCS r7,#1;为1则为奇数

    AREA data,DATA,READWRITE
    nums
    ;数组
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65大专栏  arm汇编几个经典例题>
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 21
    DCB 52
    DCB 16
    DCB 65
    DCB 95
    DCB 0;

    END

    arm实现两个数字求最大公约数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	AREA lab3,CODE,READONLY;
    ENTRY

    start
    LDR r0,=546;初始化第一个数
    LDR r1,=999;初始化第二个数
    step
    CMP r0,r1;比较r0与r1
    SUBHI r0,r0,r1;谁大,谁被除
    SUBLO r1,r1,r0;谁大,谁被除
    BEQ over;相等则求到结果,结束
    B step;重复

    over
    B over

    END

    arm实现字符串的复制

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    	AREA lab1,CODE,READONLY;
    ENTRY

    start
    LDR r0,=chars1;传入源字符串
    LDR r1,=chars2;传入目标字符串
    step
    LDRB r2,[r0],#1;递增读取单个字符
    STRB r2,[r1],#1;递增写入单个字符
    CMP r2,#0;判断是否写到最后最后一个字符
    BNE step;否则继续复制


    AREA data,DATA,READWRITE
    chars1
    ;源字符串
    DCB "abcdefghijklmnopqrstuvwxyz"
    DCD 0;

    chars2
    ;目标字符串
    DCD 0;

    END

    arm实现冒泡法排序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    	AREA lab4,CODE,READONLY;
    ENTRY

    start
    MOV r7,#7;初始化外层循环计数
    out
    LDR r0,=nums;初始化内层地址
    MOV r6,r7;利用外层初始化内层循环计数
    in
    LDRB r1,[r0];
    ADD r2,r0,#1;
    LDRB r3,[r2];
    CMP r1,r3;比较前后两个
    STRCSB r1,[r2];小的往前放
    STRCSB r3,[r0];大的往后放
    ADD r0,r0,#1;
    SUB r6,r6,#1;
    CMP r6,#2;
    BNE in;
    SUB r7,r7,#1;
    CMP r7,#2;外层循环6次
    BNE out;

    AREA data,DATA,READWRITE
    nums
    ;数组
    DCB 2
    DCB 4
    DCB 10
    DCB 8
    DCB 14
    DCB 1
    DCB 20
    DCD 0;

    END
  • 相关阅读:
    IntelliJ IDEA 常用快捷键
    IntelliJ IDEA 高效率配置
    Eclipse 设置保存代码时自动格式化
    SQL Server 事务隔离级别详解
    网络安全,互联网金融,高并发
    net user命令集合详解
    SQL不同服务器数据库之间的数据操作整理(完整版)
    sql优化
    在 Windows 上遇到非常多 TIME_WAIT 連線時應如何處理
    mvc和iis工作原理
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12375968.html
Copyright © 2020-2023  润新知