《微机原理与嵌入式系统基础--实验指导书-Ver02》

《微机原理与嵌入式系统基础--实验指导书-Ver02》
《微机原理与嵌入式系统基础--实验指导书-Ver02》

微机原理与嵌入式系统基础

实验指导

嵌入式系统教研室

2010年4月7日

第1章ADS 1.2 IDE工具简介 (3)

1.1 ADS 1.2简介 (3)

1.2 ADS 1.2集成开发环境练习 (4)

第2章ARM指令系统及运算基础实验 (10)

2.1 二进制数加减运算 (10)

2.2 带符号数的加减法运算 (13)

2.3 简单分支程序设计 (15)

2.4 数据块转储实验(循环程序设计) (16)

2.5 数值1到数值100的累加程序设计 (18)

2.6 搜寻最大数、最小数程序设计 (19)

2.7 数据排序实验(申辉补充本部分内容) (21)

2.8 子程序实验 (21)

第3章ARM(LPC2000系列)体系结构实验 (24)

3.1 EasyARM2131实验板简介 (24)

3.2 JTAG仿真器的启动与设置 (24)

3.3 基于嵌入式系统的C语言程序实验 (26)

3.4 GPIO输出控制实验1(单点) (27)

3.5 GPIO输出控制实验2(多点) (29)

3.6 GPIO输入实验 (31)

3.7 外中断实验 (32)

3.8 定时器基本功能实验1(匹配反转输出功能应用) (35)

3.9 定时器基本功能实验2(定时器中断) (36)

3.10 UART串行数据通信实验1(查询方式) (38)

3.11 UART 串行数据通信实验2(中断方式) (42)

第1章ADS 1.2 IDE工具简介

1.1 ADS 1.2简介

ARM ADS全称为ARM Developer Suite,是由ARM公司提供的专门用于ARM 处理器应用开发和调试的综合性工具软件。目前使用的ADS1.2版本是一款功能强大的开发工具和易于使用的集成开发环境(Integrated Development Environment,IDE)。它可以安装在Windows NT4,Windows 2000,Windows 98,Windows 95,Windows XP和Windows Me等操作系统。

ADS主要包含CodeWarrior IDE、AXD两部分;

①CodeWarrior IDE工具主要用于工程的管理配置、源程序的编辑、编译和链接;嵌入式系统开发人员在此环境中,用C、C++或ARM汇编语言编写ARM和Thumb处理器源程序,将源代码文件、库文件、其他相关的文件以及编译环境设置等组织在一个工程中,并可以设置生成在SRAM调试(DebugInSRAM)、在Flash调试(DebugInFLASE)或发布版(RelInFLASH)等不同的生成目标。各生成目标在同一个工程中共享源文件、库文件等,便于用户在不同开发阶段的使用。工具界面参见图1-1。

图1-1 CodeWarrior IDE 视窗

②AXD主要用于工程的下载和调试。嵌入式系统开发人员使用此工具软件可以对用户程序进行诸如断点的设置与清除、程序运行控制、单步执行、寄存器数据监视和变量的查看等调试操作。另外,AXD挂接在CodeWarrior IDE中,用户可在CodeWarrior IDE中直接点击启动AXD,调试用户程序;也可以单独启动AXD,加载、调试用户代码。工具界面参见图1-2。

图1-2 AXD视窗

1.2 ADS 1.2集成开发环境练习

1.实验目的

学习ADS1.2集成开发环境的使用方法。

2.实验设备

●硬件:PC机一台

●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境

3.实验内容

(1)ADS的启动;

(2)使用asm for lpc2131工程模板,建立一个新的工程。

(3)在模板文件main.S文件中,加入用户汇编代码。

(4)编译链接工程。

(5)调试工程。

(6)学习ADS工具的使用。

4.实验预习要求

阅读《ADS集成开发环境及仿真器应用》文档或其它相关资料,了解系统调试技术,了解ADS、AXD的基本功能。

5.实验步骤

①启动ADS1.2IDE集成开发环境。

图1-3 启动ADS

②在ADS主窗口主菜单选择File->New,使用asm for lpc2131工程模板建立一个工程

(图例中工程名称为:ZQL_LIB1),指定工程路径(图例中工程路径为D:\ARM_Lib_Bak\ARM_asm)。

可选用的工程模

板列表

图1-4 使用模板在ADS中创建工程

③点击确认<按钮>,创建工程。

④在ZQL_LIB1工程窗口,双击模板文件main.S,打开该文件。

图1-5 ADS工程管理器

⑤可在主窗口菜单选择Edit->Perferences,设置字体和字号。

⑥在main.S文件编辑窗的“add the user code here. 添加用户代码”行下建立用户汇

编程序代码。

ADS窗口工具条行

用户工程窗

用户代码编辑窗

在此处添加用户代码

图1-6 ADS视窗的主要组成

⑦选择Project->Make(或快捷键),编译链接整个工程。若编译成功,则Erros &

Warnings对话框会报告编译错误为0,此时即可对工程进行仿真。

ADS窗口

主菜单

图1-7 ADS主菜单

编译报告窗口

图1-8 ADS编译报告窗口

⑧选择Project->Debug(或快捷键),IDE环境就会启动AXD调试软件。

蓝色箭头指向当前待执行指令

AXD寄存器窗口,

可点击打开各模式

寄存器集

AXD内存显示窗口

图1-10 AXD工具窗口的主要构成

6.调试方法

①单步运行;在AXD调试器主窗口,选择Execute -> Step (或快捷键),处理

器执行一行代码;

②设置断点;在AXD调试器“代码调试窗口”双击目标代码行,若出现红色实心圆

点,则表示断点设置成功;然后选择Execute->Go全速运行,处理器执行程序停止在断点行;

③运行到光标行;在AXD调试器“代码调试窗口”单击选择目标代码行,然后在AXD

调试器主窗口,选择Execute->Run to Cursor运行到光标处;通过断点调试可以观察ARM寄存器和存储单元的数值变化,具体操作方法在后面的实验中会作详细介绍。

AXD调试窗口

AXD调试代码窗口

指定显示内存的地址空间

图1-11 AXD工具调试用户代码与查看内存

7.思考

(1)工程模板有哪些作用?(提示:对照VC Studio IDE。)

(2)如何强行重新编译工程的所有文件?(提示:选择Project->Remove Object Code删除工程中的*.obj文件。)

第2章ARM指令系统及运算基础实验

2.1 二进制数加减运算

1.实验目的

●了解ADS1.2集成开发环境及ARMulator软件仿真。

●掌握ARM7TDMI常用汇编指令的用法,并能编写简单的汇编程序。

●学习使用LDR/STR/ADD/SUB指令完成存储器的访问及二进制数据加减运算。

●领会处理器进行数据处理的方式原理。

2.实验设备

●硬件:PC机一台

●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境

3.实验内容

(1)使用LDR指令读取Data1、Data2数据,完成两数相加/减,将结果写入到Data3单元。

(2)使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0和R1的值,打开存储器观察窗口(Memory)监视Data1、Data2和Data3存储单元的值。

4.实验预习要求

学习ADS工程编辑和AXD调试工具的使用,二进制运算,处理器运行原理。

5.实验步骤

①启动ADS1.2IDE集成开发环境,选择asm for lpc2131工程模板建立一个工程

TEST2。

②在模板文件main.S中,补加用户代码,编写实验程序,保存。

③选择主窗口菜单Project->Make(或直接快捷键),联编工程;

④联编无错后,选择主窗口菜单Project->Debug,启动AXD进行软件仿真调试。

⑤注意首次使用AXD 时,需要设置AXD 仿真环境,AXD主菜单:选择

Options->Configure Target…,打开Choose Target窗口,并在其中选择:ARMUL仿真器;方法如下图示:

备注:ARMUL仿真器是AXD环境下的软件仿真器,在PC机上仿真了ARM处理器的执行情况;可用于软件算法调试,不能仿真硬件外设系统。

图 2-1 为AXD 配置仿真环境

图 2-2 配置AXD 使用软件仿真

⑥ 打开寄存器窗口(Registers ),选择Current 项,监视R0、R1和R2的值。打开存储

器观察窗口(Memory )设置观察Data1、Data2和Data3单元值,显示方式Size 为32bit 。

6. 实验参考程序

Data3 = Data1 + Data2 运算汇编指令实验1的参考程序见程序清单 2-1

程序清单 2-1 汇编指令实验1参考程序

AREA

Example1,CODE,READONLY

; 声明代码段Example1

配置 AXD 目标

ENTRY ; 标识程序入口

CODE32 ; 声明32位ARM指令

START LDR R11, =Data1 ; R11 <=address( Data1)

LDR R0, [R11] ; R0 <= Data1

LDR R11, =Data2 ; R11 <=address( Data2)

LDR R1, [R11] ; R0 <= Data2

ADD R2, R1, R0

LDR R11, =Data3 ; R11 <=address( Data3)

STR R2,[R11] ; [R1] <= R2,即设置COUNT为0

HALT B HALT

Data1 DCD 0x12345678

Data2 DCD 0x87654321

Data3 DCD 0x00

END

Data3 = Data2-Data1 运算汇编指令实验2的参考程序见程序清单2-2。

程序清单2-2 汇编指令实验2参考程序

AREA Example1,CODE,READONLY ; 声明代码段Example1

ENTRY ; 标识程序入口

CODE32 ; 声明32位ARM指令

START LDR R11, =Data1 ; R11 <=address( Data1)

LDR R0, [R11] ; R0 <= Data1

LDR R11, =Data2 ; R11 <=address( Data2)

LDR R1, [R11] ; R0 <= Data2

SUB R2, R1, R0

LDR R11, =Data3 ; R11 <=address( Data3)

STR R2, [R11] ; [R1] <= R2,即设置COUNT为0

HALT B HALT

Data1 DCD 0x12345678

Data2 DCD 0x87654321

Data3 DCD 0x00

END

7.思考

(1)LDR伪指令与LDR加载指令的功能和应用有哪些区别,举例说明?(提示:LDR 伪指令的形式为“LDR Rn,=expr”。)

(2)LDR/STR指令的前索引偏移指令应如何编写?指令是怎样操作的?

(3)在AXD调试是如何复位程序?(提示:选择File->Reload Current Image重新加载映像文件。)

2.2 带符号数的加减法运算

1.实验目的

●了解ADS1.2集成开发环境及ARMulator软件仿真。

●掌握ARM7TDMI常用汇编指令的用法,并能编写简单的汇编程序。

●学习使用LDR/STR/ADD/SUB指令完成存储器的访问及带负号数的加减运算。

●领会处理器进行数据处理的方式原理及符号数的表示与运算。

2.实验设备

●硬件:PC机一台

●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境

3.实验内容

(1)使用LDR指令读取Data1、Data2数据,完成两数相加/减,将结果写入到Data3单元。

(2)使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0和R1的值,打开存储器观察窗口(Memory)监视Data1、Data2和Data3存储单元的值。

(3)注意观察“CPSR_标志位”的情况,领会CPSR标志位的工作情况与含义;

(4)注意观察符号数的计算机表示方式;

4.实验预习要求

学习ADS工程编辑和AXD调试工具的使用,符号数的表示与运算,处理器运行原理。

5.实验步骤

(1)启动ADS1.2IDE集成开发环境,选择asm for lpc2131工程模板建立一个工程TEST2。

(2)在模板文件main.S中,补加用户代码,编写实验程序,保存。

(3)选择主窗口菜单Project->Make(或直接快捷键),联编工程;

(4)联编无错后,选择主窗口菜单Project->Debug,启动AXD进行软件仿真调试。

(5)打开寄存器窗口(Registers),选择Current项,监视R0、R1和R2的值。打开存储器观察窗口(Memory)设置观察Data1、Data2和Data3单元值,显示方式Size为32bit,注意观察CPSR寄存器中的各标志位的情况。

6.实验参考程序

Data3 = Data1 + Data2 运算汇编指令实验1的参考程序见程序清单2-3。

程序清单2-3 汇编指令实验3参考程序

INCLUDE LPC2294.INC ; Include the head file 引入头文件

;声明MAIN函数

;Export MAIN functon

EXPORT MAIN ;MAIN Function主程序

CODE32

AREA main,CODE,READONLY ; 声明代码段Example1

ENTRY; 标识程序入口

CODE32 ; 声明32位ARM指令

MAIN

;add the user code here. 添加用户代码

LDR R11, =Data1 ; R11 <=address( Data1)

LDR R0, [R11] ; R0 <= Data1

LDR R11, =Data2 ; R11 <=address( Data2)

LDR R1, [R11] ; R0 <= Data2

ADDS R2, R1, R0

LDR R11, =Data3 ; R11 <=address( Data3)

STR R2,[R11] ; [R1] <= R2,即设置COUNT为0 HALT B HALT

Data1 DCD -18

Data2 DCD 6

Data3 DCD 0

END

Data3 = Data2-Data1 运算汇编指令实验4的参考程序见程序清单2-4。

程序清单2-4 汇编指令实验4参考程序

INCLUDE LPC2294.INC ; Include the head file 引入头文件

;声明MAIN函数

;Export MAIN functon

EXPORT MAIN ;MAIN Function主程序

CODE32

AREA main,CODE,READONLY ; 声明代码段Example1

ENTRY; 标识程序入口

CODE32 ; 声明32位ARM指令

MAIN

;add the user code here. 添加用户代码

LDR R11, =Data1 ; R11 <=address( Data1)

LDR R0, [R11] ; R0 <= Data1

LDR R11, =Data2 ; R11 <=address( Data2)

LDR R1, [R11] ; R0 <= Data2

SUBS R2, R1, R0

LDR R11, =Data3 ; R11 <=address( Data3)

STR R2,[R11] ; [R1] <= R2,即设置COUNT为0 HALT B HALT

Data1 DCD 0x87654321

Data2 DCD 0x12345678

Data3 DCD 0

END

7.思考

(1)模拟32bit处理器对带符号数(63)+(-65)在计算机中的表示与运算。

(2)参考程序清单中关于加减法指令,如果不加S后缀的话,对CPSR会有什么影响?

2.3 简单分支程序设计

1.实验目的

●掌握ARM条件执行指令的使用方法,学习分支程序设计。

●加深领会处理器可以自动区分情况进行数据处理的方式原理。

2.实验设备

●硬件:PC机一台

●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境

3.实验内容

使用条件执行指令编写完成下述C代码功能的分支程序。

if( x = = y ) z= a + b;

else if( x < y ) z = a – b;

else z = b – a;

4.实验预习要求

分支程序设计,ARM指令条件执行等相关知识。

5.实验步骤

①启动ADS1.2IDE集成开发环境,选择asm for lpc2131工程模板,建立工程TEST3。

②在模板文件main.S中,补加用户代码,编写实验程序,保存。

③选择链接工程,选择Project->Debug,启动AXD进行软件仿真调试。

④打开寄存器窗口(Processor Registers),选择Current项监视各相关寄存器值。

⑤打开存储器观察窗口(Memory),观察a、b和z存储单元的值情况。

⑥单步运行程序,跟踪程序执行的流程,观察寄存器和a、b和z存储单元值的变化。

⑦修改x、y单元数据重复上述操作,观察寄存器和a、b和z存储单元值的变化。

6.实验参考程序

汇编指令实验3的参考程序见错误!未找到引用源。

程序清单2-5 汇编指令实验3的参考程序

; 文件名:main.S

; 功能:使用条件执行指令实现分支程序功能

; 说明:x、y、a、b和z均为符号整数

AREA Example,CODE,READONLY ; 声明代码段Example

ENTRY ; 标识程序入口

CODE32 ; 声明32位ARM指令

START LDR R11, =x ; R11 指向x

LDR R0, [R11] ; 取x 到R0

LDR R11, =y ; R11 指向y

LDR R1, [R11] ; 取y 到R1

LDR R11, =a ; R11 指向a

LDR R2, [R11] ; 取a 到R2

LDR R11, =b ; R11 指向b

LDR R3, [R11] ; 取b 到R3

LDR R11, =r ; R11 指向z

CMP R0, R1 ; 比较x 与y

ADDEQ R4, R2, R3 ; 使用R4 资源, if(x=y) then R4=a+b

SUBLT R4, R2, R3 ; if(x

SUBGT R4, R3, R2 ; if(x>y) then R4=b-a

STR R4, [R11] ;保存结果到z

HALT B HALT

x DCD 0x01 ; 定义x的值

y DCD 0x02 ; 定义y的值

a DCD 0x03 ; 定义a的值

b DCD 0x04 ; 定义b的值

z DCD 0x00

END

7.思考

(1)若将实现条件变成if((x= =y) && (a = =b)) then z = z + 1,考虑如何修改实验参考程序?

2.4 数据块转储实验(循环程序设计)

1.实验目的

●了解ADS1.2集成开发环境及ARMulator软件仿真。

●掌握ARM7TDMI常用汇编指令的用法,并能编写简单的汇编程序。

●学习使用LDR/STR/ADD/CMP/B指令完成存储器的访问及加法运算。

2.实验设备

●硬件:PC机一台

●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境

3.实验内容

①数据块转储;使用LDR指令读取src中的数据,再通过STR指令完成存入dst中。

②使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor

Registers)监视R0、R1、R2、R3、src和dst单元的值,打开存储器观察窗口(Memory)监视dst存储单元的值。

③注意观察“CPSR_标志位”的情况,领会CPSR标志位的工作情况与含义;

4.实验预习要求

多寄存器存储器访问指令,简单循环程序设计设计。

5.实验步骤

①启动ADS1.2IDE集成开发环境,选择asm for lpc2131工程模板建立一个工程TEST2。

②在模板文件main.S中,补加用户代码,编写实验程序,保存。

③选择主窗口菜单Project->Make(或直接快捷键),联编工程;

④联编无错后,选择主窗口菜单Project->Debug,启动AXD进行软件仿真调试。

⑤打开寄存器窗口(Registers),选择Current项,监视R0、R1、R2和R3的值。打

开存储器观察窗口(Memory)设置观察src和dst单元值,显示方式Size为32bit,注意观察CPSR寄存器中的各标志位的情况。

6.实验参考程序

INCLUDE LPC2294.INC ; Include the head file 引入头文件

num EQU 20 ; 需要拷贝的字符个数

;声明MAIN函数

;Export MAIN functon

EXPORT MAIN ;MAIN Function主程序

AREA main,CODE,READONLY ; 声明代码段main

ENTRY; 标识程序入口

CODE32 ; 声明32位ARM指令

MAIN

;add the user code here. 添加用户代码

LDR R0, =src ; R0 <=address( src)

LDR R1, =dst ; R1 <=address( dst)

MOV R2, #num ; R2 等于带拷贝的字符个数

wordcopy

LDR R3, [R0], #4 ; 从src中取一个字符放入R3中

STR R3, [R1], #4 ; 将R3中的数据存入dst中

SUBS R2, R2, #1 ; 计数值减1

BNE wordcopy ; 如果计数值不为0,则跳转到wordcopy处继续执行

HALT B HALT

src DCD 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

END

2.5 数值1到数值100的累加程序设计

1.实验目的

●了解ADS1.2集成开发环境及ARMulator软件仿真。

●掌握ARM7TDMI常用汇编指令的用法,并能编写简单的汇编程序。

●学习使用LDR/STR/ADD/CMP/B指令完成存储器的访问及加法运算。

2.实验设备

●硬件:PC机一台

●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境

3.实验内容

①使用LDR指令读取SUM数据,完成1+2+…+100的累加,再将结果写入到SUM

单元。

②使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor

Registers)监视R0、R1和SUM单元的值,打开存储器观察窗口(Memory)监视

SUM存储单元的值。

③注意观察“CPSR_标志位”的情况,领会CPSR标志位的工作情况与含义;

4.实验预习要求

循环程序设计。

5.实验步骤

①启动ADS1.2IDE集成开发环境,选择asm for lpc2131工程模板建立一个工程TEST2。

②在模板文件main.S中,补加用户代码,编写实验程序,保存。

③选择主窗口菜单Project->Make(或直接快捷键),联编工程;

④联编无错后,选择主窗口菜单Project->Debug,启动AXD进行软件仿真调试。

⑤打开寄存器窗口(Registers),选择Current项,监视R0、R1和R11的值。打开存

储器观察窗口(Memory)设置观察SUM单元值,显示方式Size为32bit,注意观

察CPSR寄存器中的各标志位的情况。

6.实验参考程序

100

1 i i

=

∑运算汇编指令实验的参考程序见程序清单2-6。

程序清单2-6 求和1+2+...+100的汇编参考程序INCLUDE LPC2294.INC ; Include the head file 引入头文件;声明MAIN函数

;Export MAIN functon

EXPORT MAIN ;MAIN Function主程序

CODE32

AREA main,CODE,READONLY ; 声明代码段Example1

ENTRY; 标识程序入口

CODE32 ; 声明32位ARM指令

MAIN

;add the user code here. 添加用户代码

LDR R11, =SUM ; R1 <=address( SUM )

LDR R0, [R11] ; R0 <= SUM

MOV R1, #1 ; 初始值R1=1

CONT

ADD R0, R0, R1 ; 累加

ADD R1, R1, #1

CMP R1, #100

BLS CONT ; R1小于等于100

STR R0,[R11] ; [R11] <= R0,即将累加和存入SUM单元

HALT B HALT

SUM DCD 0

END

7.思考

(1)可否用递减方式控制循环,完成同样的运算功能?参考程序清单2-6写出该程序。

2.6 搜寻最大数、最小数程序设计

1.实验目的

●了解ADS1.2集成开发环境及ARMulator软件仿真。

●掌握ARM7TDMI常用汇编指令的用法,并能编写简单的汇编程序。

●学习使用LDR/STR/ADD/B指令完成存储器的访问及加法运算。

●加深领会处理器可以自动区分情况进行数据处理的方式原理。

2.实验设备

●硬件:PC机一台

●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境

3.实验内容

①使用LDR指令读取MAX、MIN数据,完成寻找最大数、最小数的过程,再将结果

写入到MAX、MIN单元。

②使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor

Registers)监视R0、R1和SUM单元的值,打开存储器观察窗口(Memory)监视SUM存储单元的值。

③注意观察“CPSR_标志位”的情况,领会CPSR标志位的工作情况与含义;

4.实验预习要求

程序状态字的含义与使用。

5.实验步骤

①启动ADS1.2IDE集成开发环境,选择asm for lpc2131工程模板建立一个工程TEST2。

②在模板文件main.S中,补加用户代码,编写实验程序,保存。

③选择主窗口菜单Project->Make(或直接快捷键),联编工程;

④联编无错后,选择主窗口菜单Project->Debug,启动AXD进行软件仿真调试。

⑤打开寄存器窗口(Registers),选择Current项,监视R0、R1和R11的值。打开存

储器观察窗口(Memory)设置观察SUM单元值,显示方式Size为32bit,注意观

察CPSR寄存器中的各标志位的情况。

6.实验参考程序

求最大数、最小数的参考程序如程序清单2-7。

程序清单2-7 求最大数、最小数参考程序

INCLUDE LPC2294.INC ; Include the head file 引入头文件

N EQU 4 ; 表示字= 4 Bytes

M EQU N / 2 ; 表示步长,用于求数组中数的个数

;声明MAIN函数

;Export MAIN functon

EXPORT MAIN ;MAIN Function主程序

AREA main,CODE,READONLY ; 声明代码段Example1

ENTRY; 标识程序入口

CODE32 ; 声明32位ARM指令

MAIN

;add the user code here. 添加用户代码

LDR R6, =array ; R6 <=address( array )

LDR R0, [R6] ; R0 <= array[0]

LDR R7, =MAX ; R7 <=address( MAX )

LDR R1, [R7] ; R1 <= MAX

LDR R8, =MINN ; R8 <=address( MIN )

LDR R2, [R8] ; R2 <= MIN

SUB R3, R7, R6

MOV R3, R3, LSR #M ; R3等于array中数的个数

MOV R4, #1 ; R4用于计算比较次数

MOV R1, R0 ; 假设array[0]为最大数,放入R1中

MOV R2, R0 ; 假设array[0]为最小数,放入R2中

CONT

ADD R6, R6, #N ; 将指向array的指针顺序拨一

LDR R5, [R6] ; R5<= array[R6]

CMP R2, R5 ; 与当前最小数比较

相关主题
相关文档
最新文档