第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2025/6/4 17:25:41 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

; 结束

《微机原理与嵌入式系统基础--练习 - 答案》1.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0nima79jv86x2111f53u_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top