云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 《微机原理与嵌入式系统基础--练习 - 答案》1

《微机原理与嵌入式系统基础--练习 - 答案》1

  • 62 次阅读
  • 3 次下载
  • 2026/1/27 13:11:06

CMP R1, #0

; 是否是字符串结束标志

; 如果不是,指针拨向下一个字符

; 如果是,将统计的字符串个数,放入单元num

ADDNE R2, R2, #1 ; 如果不是,统计个数增加1 ADDNE R0, R0, #1 BNE CONTI LDREQ R3, =NUM STREQ R2, [R3] stop

MOV R0, #0x18 LDR SWI

AREA Data, DATA, READWRITE string DCB NUM DCB END

0

100

; 这三条指令是ADS调试环境特约

R1, =0x20026

0x123456

;程序运行结束返回编译器调试环境

; 数据段的名字Data

\

; 结束

10、 用汇编语言编写程序计算:答:

ENTRY CODE32 start LDR

R0, =sum

; R0指向存储单元sum ; R1存放累加和 ; R2初始化起始值 ; 实现R1=R1+R2*2 ; 判断R2是否等于100 ; 如果不等,R2累加1

; 如果相等,将累加和R1放入存储单元sum中

; 这三条指令是ADS调试环境特约

MOV R1, #0 MOV R2, #1 CONTI

ADD R1, R1, R2, LSL #1 CMP R2, #100 BNE CONTI stop

MOV R0, #0x18 LDR SWI

AREA Data, DATA, READWRITE sum END

DCD

0

; 结束

; 数据段的名字Data

0x123456

R1, =0x20026

;程序运行结束返回编译器调试环境

ADDNE R2, R2, #1 STREQ R1, [R0]

Sum??2?NN?1

AREA sum2n, CODE, READONLY

; 代码段名sum2n

; 程序的入口

11、 用汇编语言编写程序实现:已知BUF1中有N1个按从小到大顺序排列的互不相等的字符号数,BUF2中有N2个从小到大顺序排列的互不相等的字符号数。试编写程序将BUF1和BUF2中的数合并到BUF3中,使得BUF3中的数互不相等且按从小到大顺序排列。

答:AREA GATHER,CODE,READONLY

ENTRY CODE32 N1 EQU 5 N2 EQU 6 N3 EQU 11

START LDR R0,=BUF1;数组一的起始指针始终不动 LDR R1,=BUF2;数组二的起始指针始终不动 LDR R2,=BUF3;数组三的起始指针始终不动 MOV R3,#0;数组一,二,三的计数器 MOV R4,#0 MOV R5,#0

LOOPI ADD R6,R0,R3,LSL #2;数组一,二,三的地址指针,要移动 ADD R7,R1,R4,LSL #2 ADD R8,R2,R5,LSL #2 LDR R9,[R6] LDR R10,[R7] CMP R9,R10 BLT LOOPJ BGT LOOPK BEQ LOOP CMP R5,#N3 BEQ STOP

LOOPJ STR R9,[R8];数组一中的数小于数组二中的数,将数组一中的数放入数组三中 ADD R3,R3,#1 ADD R5,R5,#1 CMP R3,#N1 BLT LOOPI ;B LOPI

LOPI STR R10,[R8,#04]!;数组一中的数已经合并到数组三中,将数组二中剩余的数存入数组三中 ADD R4,R4,#1 ADD R5,R5,#1 ADD R7,R1,R4,LSL #2 LDR R10,[R7] CMP R4,#N2 BLT LOPI

LOOPK STR R10,[R8];数组二中的数小于数组一中的数,将数组二中的数放入数组三中 ADD R4,R4,#1 ADD R5,R5,#1 CMP R4,#N2 BLT LOOPI ;B LOPJ

LOPJ STR R9,[R8,#04]!;数组二中的数已经合并到数组三中,将数组一中剩余的数存入数组三中 ADD R3,R3,#1

ADD R5,R5,#1 ADD R6,R0,R3,LSL #2 LDR R9,[R6] CMP R3,#N1 BLT LOPJ

LOOP STR R9,[R8];数组一中的数与数组二中的数相等,将数组一中的数放入数组三,三个计数器同时加一

ADD R3,R3,#1 ADD R4,R4,#1 ADD R5,R5,#1 CMP R3,#N1 BLT LOOPI BEQ LOPI CMP R4,#N2 BLT LOOPI BEQ LOPJ STOP MOV R0,#0x18 LDR R1,=0X20026 SWI 0X123456

AREA Data,DATA,READWRITE BUF1 DCD 0X11,0X33,0X55,0X77,0X99 BUF2 DCD 0X22,0X44,0X66,0X88,0XAA,0XBB

BUF3 DCD 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00

END

12、用汇编语言编写程序实现:将字节变量BVAR中的压缩型BCD数转换为二进制数,并存入原变量中。

答:

AREA tranx, CODE, READONLY ; 代码段名tranx ENTRY CODE32 start LDR LDR

R0, =BVAR R1, [R0]

#0x0F

; 取BVAR的个位 ; 取BVAR的十位 ; R4=R3*2 ; R5=R3*8 ; R3=R4+R5=R3*10 ; R1=R3+R2

; 将BVAR的值加载到寄存器R1

; 程序的入口

MOV R2,

AND R2, R2, R1 MOV R3, #0x0F

AND R3, R3, R1, LSR #4 MOV R4, R3, LSL #1 MOV R5, R3, LSL #3 ADD R3, R4, R5 ADD R1, R3, R2 STR R1, [R0] stop

; 将转换的值存到BVAR变量中

MOV R0, #0x18 LDR SWI

0x123456

; 这三条指令是ADS调试环境特约

;程序运行结束返回编译器调试环境

R1, =0x20026

AREA Data, DATA, READWRITE BVAR DCB END

0x89

; 数据段的名字Data

; 结束

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

CMP R1, #0 ; 是否是字符串结束标志 ; 如果不是,指针拨向下一个字符 ; 如果是,将统计的字符串个数,放入单元num ADDNE R2, R2, #1 ; 如果不是,统计个数增加1 ADDNE R0, R0, #1 BNE CONTI LDREQ R3, =NUM STREQ R2, [R3] stop MOV R0, #0x18 LDR SWI AREA Data, DATA, READWRITE string DCB NUM DCB END 0 100

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com