嵌入式系统  编程题汇编(带答案)
.一。从一数到十
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
;初始化 N8
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小时内删除。