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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【ARM】ARM汇编程序设计(四) 选择结构

發布時間:2024/4/24 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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,"",%progbits

07. 附錄

總結

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

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