【ARM】ARM汇编程序设计(三) 循环结构
生活随笔
收集整理的這篇文章主要介紹了
【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汇编程序设计(三) 循环结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Libevent】Ubuntu安装li
- 下一篇: 【ARM】ARM汇编程序设计(四) 选择