嵌入式系统 编程题汇编(带答案)
.一。从一数到十
COUNT EQU 0x30003100 ;定义变量 COUNT 的基地址
AREA Example1,CODE,READONLY;声明代码段 Example1 为只读
START
储单元
LOOP
到 R0 中
址单元
ENTRY
CODE32
LDR R1,=COUNT
MOV R0,#0
STR R0,[R1]
LDR R1,=COUNT LDR R0,[R1]
ADD R0,R0,#1 CMP R0,#10 MOVHS R0,#0 STR R0,[R1]
B LOOP
END
;标识程序入口
;声明 32 位 ARM 指令
;将 0X30003100 赋给 R1
;执行 R0=0
;存储 R0 寄存器的数据到 R1 指向的存
;将 0X30003100 赋给 R1
;将 R1 中的数值作为地址, 取出此地址中的数据保存
;执行 R0=R0+1
;将 R0 与 10 进行比较
;若 R0 大于等于 10,则 R0=0
;存储 R0 寄存器的数据到 R1 指向的地
;跳转到 LOOP
;汇编文件结束
二, 9 的 8 次幂
X EQU 9 ;初始化 X 为 9
n | EQU 8 AREA | ;初始化 N 为 8 Example3,CODE,READONLY ;生明代码段 Example3 为只读 |
ENTRY ;标识程序入口路
CODE32 ;声明 32 位 ARM 指令
START LDR S P,=0x30003F00 ;把 0x30003F00 赋给 SP
(R13)
LDR R0,=X ;把 9 赋给 R0
LDR R1,=n ;把 8 赋给 R1
BL POW ;跳转到 POW,并把下一条指令地址存入到
R14 中
HALT
POW
POW_L嵌入式多线程编程1
R14 中
位
B HALT ;等待跳转
STMFD SP!,{R1-R12,LR} ;将 R1-R12 入栈,满递减堆栈
MOVS R2,R1 ;将 R1 赋给 R2,并影响标志位
MOVEQ R0,#1 ;若 Z=1,则 R0=1
BEQ POW_END ;若 Z=1,跳转到 POW_END
MOV R1,R0 ;将 R0 中值赋给 R1
SUB R2,R2,#1 ;将 R2-1 的只赋给 R2
BL DO_MUL ;跳转到 DO-MUL,并把下一条指令地址存入
SUBS R2,R2,#1 ;将 R2-1 的值赋给 R2,并影响标志
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论