arm汇编编程范例.doc_第1页
arm汇编编程范例.doc_第2页
arm汇编编程范例.doc_第3页
arm汇编编程范例.doc_第4页
arm汇编编程范例.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一。if语句实例1/* *if(a 50) * puts(a 50);r0 r1 r2 r3 *else if(b a) * puts(b a); *else if(b 20) * puts(b 50.LC1:.stringb a.LC2:.stringb 10 & 10 & a 10 & a 10) & (a 10 & a 20);cmpr0, #10bleoutcmpr0, #20ldrltr0, .L0blltprintfout:pop pc从栈中取出lr存到pc中;.L0:.word.LC0if语句实例3, |运算.section.rodata.align2.LC0:.stringa 20.text.align2.globalmainmain:push lr上一个函数的返回地址压到栈中;mov r0, #15if( (a20) )puts(a 20);cmpr0, #10bltdocmpr0, #20bleoutdo:ldr r0, .L0blputsout:pop pc从栈中取出lr存到pc中;.L0:.word.LC0二,switch语句的实现1/* *char ch = A; * *switch (ch) * * case x: * break; * . * * */.section.rodata.align2.LC0:.asciival = %d 012000.text.align2.globalmainmain:stmfdsp!, fp, lraddfp, sp, #4subsp, sp, #16movr3, #65ch = A;strbr3, fp, #-5ldrbr3, fp, #-5 zero_extendqisi2strr3, fp, #-16int - switchldrr3, fp, #-16cmpr3, #45二分查找;beq.L5ldrr3, fp, #-16cmpr3, #45bgt.L9ldrr3, fp, #-16cmpr3, #2beq.L3ldrr3, fp, #-16cmpr3, #9beq.L4b.L11.L9:ldrr3, fp, #-16cmpr3, #97beq.L7ldrr3, fp, #-16cmpr3, #99beq.L8ldrr3, fp, #-16cmpr3, #65beq.L6b.L11.L7:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L8:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L3:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L4:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L5:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L6:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintf.L11:subsp, fp, #4ldmfdsp!, fp, pc.L13:.align2.L12:.word.LC0switch语句的实现2(哈希实现).section.rodata.align2.LC0:.asciival = %d 012000.text.align2.globalmainmain:stmfdsp!, fp, lraddfp, sp, #4subsp, sp, #16movr3, #65strbr3, fp, #-5ldrbr3, fp, #-5 zero_extendqisi2subr3, r3, #59cmpr3, #8ldrlspc, pc, r3, asl #2b.L11.L9:.word.L3.word.L4.word.L11.word.L5.word.L6.word.L11.word.L7.word.L11.word.L8.L3:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L4:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L6:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L5:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L8:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintfb.L11.L7:ldrbr3, fp, #-5 zero_extendqisi2ldrr0, .L12movr1, r3blprintf.L11:subsp, fp, #4ldmfdsp!, fp, pc.L13:.align2.L12:.word.LC0.sizemain, .-main.identGCC: (Sourcery G+ Lite 2008q3-72) 4.3.2.section.note.GNU-stack,%progbits三,while语句实现1/* *while(1) * * if(i = 10) * break; * printf(i = %d n, i); * i+; * */.section.rodata.align2.LC0:.stringi = %d n.text.align2.globalmainmain:push lr上一个函数的返回地址压到栈中;for(i = 0; i b.text.align2.globalmainmain:push lr上一个函数的返回地址压到栈中;loop:ldr r0, .L0blprintfblooppop pc从栈中取出lr存到pc中;.L0:.word.LC0for语句实现2/* *for (;) * * printf(a b); * sleep(1); * */.section.rodata.align2.LC0:.stringa b.text.align2.globalmainmain:push lr上一个函数的返回地址压到栈中;loop:ldr r0, .L0blputsmov r0, #1blsleepblooppop pc从栈中取出lr存到pc中;.L0:.word.LC0for语句实现3/* *for (i = 0; i b); * sleep(1); * * */.section.rodata.align2.LC0:.stringa b.text.align2.globalmainmain:push lr上一个函数的返回地址压到栈中;mov r4, #10loop:cmpr4, #0beqoutldr r0, .L0blputsmov r0, #1blsleepsubr4, r4, #1bloopout:pop pc从栈中取出lr存到pc中;.L0:.word.LC0for语句实现4/* *for (i = 10; i 0; i-) * * printf(a b); * sleep(1); * */.section.rodata.align2.LC0:.stringa b.text.align2.globalmainmain:push lr上一个函数的返回地址压到栈中;mov r1, #10loop:cmpr1, #0beqoutldr r0, .L0blputs - write r0 r1 r2 r3 puts r4 r5 r6 atpcs : r4-r14mov r0, #1blsleep sleep - alarmsubr1, r1, #1bloopout:pop pc从栈中取出lr存到pc中;.L0:.word.LC0for语句实现5/* *for(i = 0; i 10; i+) * * printf(i = %d n, i); * * */.section.rodata.align2.LC0:.stringi = %d n.text.align2.globalmainmain:push lr上一个函数的返回地址压到栈中;mov r4, #0loop:cmpr4, #10bgeoutldrr0, .L0mov r1, r4blprintfaddr4, #1bloopout:pop pc从栈中取出lr存到pc中;.L0:.word.LC0for语句实现6/* *for(i = 0; i 10; i+) * * for(j = 0; j 10; j+) * * printf(i = %d j = %d n, i, j); * * */.section.rodata.align2.LC0:.stringi = %d j = %dn.text.align2.globalmainmain:push lr上一个函数的返回地址压到栈中;mov r4, #0for:cmpr4, #10bgeoutmov r5, #0for1:cmpr5, #10bgeout1ldrr0, .L0mov r1, r4mov r2, r5blprintfaddr5, #1bfor1out1:addr4, #1bforout:pop pc从栈中取出lr存到pc中;.L0:.word.LC0do_wihle 语句实现/* *i = 0; *do * printf(i = %d n, i);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论