嵌入式系统汇编语言中选择结构编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统汇编语言中选择结构编程
南艳子 1306058
பைடு நூலகம்支结构
分支结构其实就是选择结构,程序的三大控制结构为:顺序结构、 循环结构、选择结构。 顺序结构的程序虽然能解决计算、输出等问题,但不能做判 断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结 构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现 的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条 件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支 结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时 往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样 做把程序设计分析与语言分开,使得问题简单化,易于理解。
例程
B CASE_7 CMP BNE MUL B DEFAULT MOV SWITCH_END SWITCH_END R2,#7 DEFAULT R0,R2,R1 SWITCH_END R0,#80 NOP END
谢 谢!
START R0,#X R1,#Y R0,R1 R2,#60 R2,#10
例程
例3:设R0=x,R1=y,R2=key,x、y、key均为无符号整数。 c语言: switch (key&0x0F) { case 0: case 2: case 3: x=key+y; break; case 5: x=key-y; break; case 7: x=key*y; break; default: x=80; break; }
例程
ARM汇编语言 AREA Test,CODE,READONLY ENTRY CODE32 START MOV R1,#10 MOV R2,#20 SWITCH AND R2,R2,#0x0F CASE_0 CMP R2,#0 CASE_2 CMPNE R2,#2 CASE_3 CMPNE R2,#3 BNE CASE_5 AND R0,R2,R1 B SWITCH_END CASE_5 CMP R2,#5 BNE CASE_5 SUB R0,R2,R1
例程
例1:使用SWP指令对信号量XH进行操作
XH
EQU 0x40402020 AREA Test,CODE,READONLY ENTRY
LDR R0,=XH R1,#0 R1,R1,[R0] R1,#0 LOOP ....
START LOOP MOV SWP CMP BEQ B END
例程
例2:设X、Y、Z均为无符号整数,编写ARM汇编语言程序,实现 if (X>Y) Z=60; else Z=10; 结构Z送到R2中。 X Y EQU EQU AREA ENTRY CODE32 MOV MOV CMP MOVHI MOVLS END 50 80 Test,CODE,READONLY
南艳子 1306058
பைடு நூலகம்支结构
分支结构其实就是选择结构,程序的三大控制结构为:顺序结构、 循环结构、选择结构。 顺序结构的程序虽然能解决计算、输出等问题,但不能做判 断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结 构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现 的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条 件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支 结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时 往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样 做把程序设计分析与语言分开,使得问题简单化,易于理解。
例程
B CASE_7 CMP BNE MUL B DEFAULT MOV SWITCH_END SWITCH_END R2,#7 DEFAULT R0,R2,R1 SWITCH_END R0,#80 NOP END
谢 谢!
START R0,#X R1,#Y R0,R1 R2,#60 R2,#10
例程
例3:设R0=x,R1=y,R2=key,x、y、key均为无符号整数。 c语言: switch (key&0x0F) { case 0: case 2: case 3: x=key+y; break; case 5: x=key-y; break; case 7: x=key*y; break; default: x=80; break; }
例程
ARM汇编语言 AREA Test,CODE,READONLY ENTRY CODE32 START MOV R1,#10 MOV R2,#20 SWITCH AND R2,R2,#0x0F CASE_0 CMP R2,#0 CASE_2 CMPNE R2,#2 CASE_3 CMPNE R2,#3 BNE CASE_5 AND R0,R2,R1 B SWITCH_END CASE_5 CMP R2,#5 BNE CASE_5 SUB R0,R2,R1
例程
例1:使用SWP指令对信号量XH进行操作
XH
EQU 0x40402020 AREA Test,CODE,READONLY ENTRY
LDR R0,=XH R1,#0 R1,R1,[R0] R1,#0 LOOP ....
START LOOP MOV SWP CMP BEQ B END
例程
例2:设X、Y、Z均为无符号整数,编写ARM汇编语言程序,实现 if (X>Y) Z=60; else Z=10; 结构Z送到R2中。 X Y EQU EQU AREA ENTRY CODE32 MOV MOV CMP MOVHI MOVLS END 50 80 Test,CODE,READONLY