【ARM】ARM汇编程序设计(四) 选择结构
生活随笔
收集整理的這篇文章主要介紹了
【ARM】ARM汇编程序设计(四) 选择结构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
00. 目錄
文章目錄
- 00. 目錄
- 01. if 結構一
- 02. if 結構二
- 03. if 結構三
- 04. if 結構四
- 05. if 結構五
- 06. switch結構
- 07. 附錄
01. if 結構一
.section .rodata.align 2 .LC0:.string "i > 10\n".LC1:.string "i <= 10\n".section .text.align 2.global main main:push {lr}mov r2, #1cmp r2, #10ldrgt r0, =.LC0ldrle r0, =.LC1bl printfmov r0, #0pop {pc}02. if 結構二
.section .rodata.align 2 .LC0:.string "i > 10\n".LC1:.string "i <= 10\n".section .text.align 2.global main main:push {lr}mov r2, #1cmp r2, #10bgt do1b do2do1:ldr r0, =.LC0bl printfb outdo2:ldr r0, =.LC1bl printfout:mov r0, #0pop {pc}03. if 結構三
.section .rodata.align 2 .LC0:.string "i > 10\n".LC1:.string "i < 10\n".LC2:.string "i == 10\n".section .text.align 2.global main main:push {lr}mov r2, #1cmp r2, #10bgt do1blt do2b do3do1:ldr r0, =.LC0bl printfb outdo2:ldr r0, =.LC1bl printfb outdo3:ldr r0, =.LC2bl printfout:mov r0, #0pop {pc}04. if 結構四
if(i > 10)...else if(i + j > 10)...else if(j < 10)... .section .rodata.align 2 .LC0:.string "i > 10\n".LC1:.string "i + j > 10\n".LC2:.string "j < 10\n".section .text.align 2.global main main:push {lr}mov r2, #100mov r3, #2cmp r2, #10bgt do1add r1, r2, r3cmp r1, #10bgt do2cmp r3, #10blt do3b outdo1:ldr r0, =.LC0bl printfb outdo2:ldr r0, =.LC1bl printfb outdo3:ldr r0, =.LC2bl printfout:mov r0, #0pop {pc}05. if 結構五
.section .rodata.align 2 .LC0:.string "i > 10 && i < 20\n".section .text.align 2.global main main:push {lr}mov r2, #15cmp r2, #10ble outcmp r2, #20blt do1b outdo1:ldr r0, =.LC0bl printfout:mov r0, #0pop {pc}06. switch結構
C語言代碼
#include <stdio.h>int main(void) {int i = 10;char ch = 'a';switch(i){case 1:printf("val = %d \n", i);break;case 345:printf("val = %d \n", i);break;case 23: printf("val = %d \n", i);break;case 7:printf("val = %d \n", i);break;case 1234:printf("val = %d \n", i);break;case 17:printf("val = %d \n", i);break;case 10:printf("val = %d \n", i);break;}return 0; }匯編語言代碼
.section .rodata.align 2 .LC0:.ascii "val = %d \012\000".text.align 2.global main main:stmfd sp!, {fp, lr}add fp, sp, #4sub sp, sp, #8mov r3, #10str r3, [fp, #-8]mov r3, #97strb r3, [fp, #-9]ldr r3, [fp, #-8]cmp r3, #17beq .L6cmp r3, #17bgt .L10cmp r3, #7beq .L4cmp r3, #10beq .L5cmp r3, #1beq .L3b .L2 .L10:ldr r2, .L11cmp r3, r2beq .L8ldr r2, .L11+4cmp r3, r2beq .L9cmp r3, #23beq .L7b .L2 .L3:ldr r3, .L11+8mov r0, r3ldr r1, [fp, #-8]bl printfb .L2 .L8:ldr r3, .L11+8mov r0, r3ldr r1, [fp, #-8]bl printfb .L2 .L7:ldr r3, .L11+8mov r0, r3ldr r1, [fp, #-8]bl printfb .L2 .L4:ldr r3, .L11+8mov r0, r3ldr r1, [fp, #-8]bl printfb .L2 .L9:ldr r3, .L11+8mov r0, r3ldr r1, [fp, #-8]bl printfb .L2 .L6:ldr r3, .L11+8mov r0, r3ldr r1, [fp, #-8]bl printfb .L2 .L5:ldr r3, .L11+8mov r0, r3ldr r1, [fp, #-8]bl printfmov r0, r0 @ nop .L2:mov r3, #0mov r0, r3sub sp, fp, #4ldmfd sp!, {fp, pc} .L12:.align 2 .L11:.word 345.word 1234.word .LC0.size main, .-main.ident "GCC: (ctng-1.8.1-FA) 4.5.1".section .note.GNU-stack,"",%progbits07. 附錄
總結
以上是生活随笔為你收集整理的【ARM】ARM汇编程序设计(四) 选择结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ARM】ARM汇编程序设计(三) 循环
- 下一篇: 【ARM】ARM汇编程序设计(五) st