日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ARM】ARM汇编程序设计(三) 循环结构

發布時間:2024/4/24 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ARM】ARM汇编程序设计(三) 循环结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 循環結構-死循環
    • 02. 循環結構-累加和
    • 03. 循環結構-循環輸出
    • 04. 循環結構-循環輸出
    • 05. 隨機數
    • 06. 綜合應用一
    • 07. 綜合應用二
    • 08. 綜合應用三
    • 09. 附錄

01. 循環結構-死循環

第一種方式:死循環

.section .rodata.align 2 .LC0:.string "val = %p\n".section .text.align 2.global main main:push {lr}loop:b loopmov r0, #0pop {pc}

第二種方式:死循環

.section .rodata.align 2 .LC0:.string "val = %p\n".section .text.align 2.global main main:push {lr}b .mov r0, #0pop {pc}

第三種方式:死循環

.section .rodata.align 2 .LC0:.string "val = %p\n".section .text.align 2.global main main:push {lr}sub pc, pc, #8mov r0, #0pop {pc}

02. 循環結構-累加和

輸出1 + 2 + 3 + … + 10的和:

.section .rodata.align 2 .LC0:.string "val = %d\n".section .text.align 2.global main main:push {lr}mov r1, #0loop:add r1, r1, #1cmp r1, #10blt loopldr r0, =.LC0bl printfmov r0, #0pop {pc}

03. 循環結構-循環輸出

方式一:輸出1到10之間的數據

.section .rodata.align 2 .LC0:.string "val = %d\n".section .text.align 2.global main main:push {lr}mov r4, #1loop:ldr r0, =.LC0mov r1, r4bl printfadd r4, r4, #1cmp r4, #10ble loopmov r0, #0pop {pc}

方式二:輸出1到10之間的數據

.section .rodata.align 2 .LC0:.string "val = %d\n".section .text.align 2.global main main:push {lr}mov r1, #1loop:ldr r0, =.LC0push {r1}bl printfpop {r1}add r1, r1, #1cmp r1, #10ble loopmov r0, #0pop {pc}

04. 循環結構-循環輸出

方式一:輸出1到100之內的所有奇數

.section .rodata.align 2 .LC0:.string "val = %d\n".section .text.align 2.global main main:push {lr}mov r4, #1loop:mov r1, r4ldr r0, =.LC0bl printfadd r4, r4, #2cmp r4, #100ble loopmov r0, #0pop {pc}

方式二:輸出1到100之內的所有奇數

.section .rodata.align 2 .LC0:.string "val = %d\n".section .text.align 2.global main main:push {lr}mov r4, #1loop:mov r1, r4ldr r0, =.LC0ands r2, r4, #1cmp r2, #0blne printfadd r4, r4, #2cmp r4, #100ble loopmov r0, #0pop {pc}

方式三:輸出1到100之內的所有奇數

.section .rodata.align 2 .LC0:.string "val = %d\n".section .text.align 2.global main main:push {lr}mov r4, #1loop:mov r1, r4ldr r0, =.LC0@ands r2, r4, #1@cmp r2, #0tst r4, #1blne printfadd r4, r4, #2@cmp r4, #100subs r1, r4, #100ble loopmov r0, #0pop {pc}

05. 隨機數

產生100個隨機數,輸出其中的奇數

.section .rodata.align 2 .LC0:.string "val = %d\n".section .text.align 2.global main main:push {lr}bl getpidbl srandommov r4, #1loop:bl randommov r1, r0tst r1, #1ldr r0, =.LC0blne printfadd r4, r4, #1cmp r4, #100ble loopmov r0, #0pop {pc}

產生100個0-255間的隨機數,輸出其中的奇數

.section .rodata.align 2 .LC0:.string "val = %d\n".section .text.align 2.global main main:push {lr}bl getpidbl srandommov r4, #1loop:bl randommov r1, r0and r1, #0xfftst r1, #1ldr r0, =.LC0blne printfadd r4, r4, #1cmp r4, #100ble loopmov r0, #0pop {pc}

06. 綜合應用一

輸出九九乘法表

.section .rodata.align 2 .LC0:.string "%2d*%2d=%2d " .LC1:.string "\n".section .text.align 2.global main main:push {lr}mov r4, #1 loop:mov r5, #1 loop2:ldr r0, =.LC0mov r1, r5mov r2, r4mul r3, r4, r5bl printfadd r5, r5, #1cmp r5, r4ble loop2ldr r0, =.LC1bl printfadd r4, r4, #1cmp r4, #9ble loopmov r0, #0pop {pc}

07. 綜合應用二

輸出棱形

.section .rodata.align 2 .LC0:.string " ".LC1:.string "*".LC2:.string "\n".section .text.align 2.global main main:push {lr}mov r4, #0 loop:cmp r4, #10bge out1mov r5, #0loop1:rsb r6, r4, #9cmp r5, r6bge out2ldr r0, =.LC0bl printfadd r5, r5, #1cmp r5, r6blt loop1out2:mov r5, #0loop2:mov r7, #2mul r6, r4, r7add r6, r6, #1cmp r5, r6bgt out3ldr r0, =.LC1bl printfadd r5, r5, #1cmp r5, r6blt loop2out3:ldr r0, =.LC2bl printfadd r4, r4, #1cmp r4, #10blt loopout1:@for (i = 0; i < 9; i++)mov r4, #0 loop3:cmp r4, #9bge out4mov r5, #0loop4:cmp r5, r4bgt out5ldr r0, =.LC0bl printfadd r5, r5, #1cmp r5, r5ble loop4out5:mov r5, #0loop5:rsb r7, r4, #9mov r8, #2mul r6, r7, r8sub r6, r6, #1cmp r5, r6bge out6ldr r0, =.LC1bl printfadd r5, r5, #1cmp r5, r6blt loop5out6:ldr r0, =.LC2bl printfadd r4, r4, #1cmp r4, #9blt loop3out4:mov r0, #0pop {pc}

執行結果

[root@itcast 2nd]# ./a.out ********************************************************************************* **************************************************************************************************** [root@itcast 2nd]#

08. 綜合應用三

輸出棱形

.section .rodata.align 2 .LC0:.string " ".LC1:.string "*".LC2:.string "\n".section .text.align 2.global main main:push {lr}mov r4, #0 2:cmp r4, #10bge 2fmov r5, #01:rsb r6, r4, #9cmp r5, r6bge 1f ldr r0, =.LC0bl printfadd r5, r5, #1cmp r5, r6blt 1b1:mov r5, #01:mov r7, #2mul r6, r4, r7add r6, r6, #1cmp r5, r6bgt 1f ldr r0, =.LC1bl printfadd r5, r5, #1cmp r5, r6blt 1b 1:ldr r0, =.LC2bl printfadd r4, r4, #1cmp r4, #10blt 2b 2:@for (i = 0; i < 9; i++)mov r4, #0 2:cmp r4, #9bge 2fmov r5, #01:cmp r5, r4bgt 1f ldr r0, =.LC0bl printfadd r5, r5, #1cmp r5, r5ble 1b 1:mov r5, #01:rsb r7, r4, #9mov r8, #2mul r6, r7, r8sub r6, r6, #1cmp r5, r6bge 1fldr r0, =.LC1bl printfadd r5, r5, #1cmp r5, r6blt 1b1:ldr r0, =.LC2bl printfadd r4, r4, #1cmp r4, #9blt 2b2:mov r0, #0pop {pc}

執行結果

[root@itcast 2nd]# ./a.out ********************************************************************************* **************************************************************************************************** [root@itcast 2nd]#

09. 附錄

總結

以上是生活随笔為你收集整理的【ARM】ARM汇编程序设计(三) 循环结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。