子过程的算术逻辑运算
实验题目:子过程的算术逻辑运算
1. 课程简要信息
课程名称:微处理器系统与应用
课程学时:32(理论) $+ 1 6$ (实验)
项目学时:4
适用专业:通信工程、信息工程、电子工程
学生年级:二年级第一学期
2. 实验内容与任务(限 500 字,可与“实验过程及要求”合并)
变量 Z存储有8位学号(自己学号的后 8位),编写汇编程序完成 8位学号的算术逻辑运算,将结果存放到S变量里,并完成表1相关内容的填写。
表1 子过程算术逻辑运算结果记录
| 变量 | 变量地址 | 计算公式 | 手动计算结果 | 程序执行结果 |
| Z | 0x | Z= | ||
| S | 0x | S= |
例如:学号后8位是12345678,设 $\scriptstyle { Z = 0 \times 1 2 3 4 5 6 7 8 }$ (十六进制);
计算公式: $\mathrm { S } { = } ( 0 \mathrm { x } 1 2 ) ^ { \ast } ( 0 \mathrm { x } 7 8 ) { + } ( 0 \mathrm { x } 3 4 5 6 )$ ;
说明:(1)S 的计算公式不是固定的,每节课前听从老师布置;(2)可以通过将变量Z和S 地址存入寄存器进行查看;(3)手动计算结果可以通过电脑上的计算器软件进行计算,如下图所示。


思考题(进阶):
近年来,人工智能技术飞速发展,卷积运算经常被用于目前的人工智能深度神经网络中,其主要是进行矩阵的运算,如何用汇编指令完成两个矩阵的卷积运算?
3. 实验过程及要求(限 300 字)
实验过程及要求如下:
- 学生课前预习,了解实验目的,明确实验要求和实验内容,预习报告中绘制流程图;
- 做实验过程中,按照设计方案中的流程图进行实现;
变量Z和S 的地址需要通过将其存入寄存器或者存储器的方式查看;子过程运算结果需要与计算器软件计算结果一致;5) 完成子过程的测试,教师验收打分,课后提交实验报告。
4. 相关知识及背景(限 150 字)
这是一个运用STM32 微处理器的汇编指令完成基本运算的典型实验,需要用到子过程调用和返回、算术逻辑运算、寄存器操作等相关知识,用调试的方式完成对运算结果的验证。
5. 实验环境条件
项目实施需要的实验环境条件如下:
1)微处理器系统与应用实验台(STM32F103系列微处理器);
2) 电脑一台;
3)Keil 5集成开发环境、计算器软件。
6. 教学目标与目的(限 150 字)
对于刚接触 ARM 汇编指令的学生,在较为系统的实验实现过程中,引导其理解子过程的调用原理及过程,掌握微处理器基本的算术逻辑运算操作,熟悉 JTAG 调试工具和调试技术,并通过绘制流程图的方式引导学生规范的程序设计方法。
7. 教学设计与实施进程
本课程是让每个学生独立完成一次子过程的算术逻辑运算的汇编指令实现,课程的实施包括课前预习、课堂讲授、课内实验、验收测试和实验报告共五个环节,主要教学实施进程如表2所示。
表2 课程设计主要教学实施进程
| 序号 | 课程内容 | 教师任务 | 学生任务 |
| 1 | 课前预习 | 发放实验指导书,布置本次实验任务。 | 1.制定本次实验的实现方案,并画出流程图;2.完成预习报告。 |
| 2 | 课堂讲授 | 1.示例讲解子过程的实验方法,并提出思考问题;2.强调实验注意事项;3.本次实验常见问题汇总。 | 1.学习相关知识;2.对教师提出的思考题进行讨论。 |
| 3 | 课内实验 | 1.解答学生提出的问题;2.纠正学生不安全的操作;3.引导学生完成实验。 | 根据预习报告中的方案完成实验任务的实现。 |
| 4 | 验收测试 | 1.检查流程设计规范性和合理性;2.检查结果的功能性能指标。 | 根据教师要求完成计算结果的测试。 |
| 5 | 实验报告 | 1.检查实验报告的规范性;2.对实验数据进行核实。 | 1.课内完成实验数据记录;2.课后完成报告的提交。 |
8. 实验原理及方案
(一)实验原理
子过程:将相同处理进行抽象,编写一个通用的程序代码,通过寄存器或存储器操作数将不同的处理数据传送给该通用的程序代码并运行。
(1)子过程结构如下:
ÿ 始于 子过程名$\gtrdot$ 终于 返回指令
从标号至返回指令之间的所有指令称为子过程体。
(2)子过程调用:用BL或者BLX。
执行 BL 或 BLX 时,将该指令的后继指令的地址加载至 LR 中,并将子过程的首地址加载至 PC;
返回时,将调用时加载在LR 中的值加载至PC中即可。
(3)子过程调用示例:子过程 local_1
BL local_1 B .
local_1 PROC
BX LR
ENDP
常用的算术逻辑指令如下:
(1)算术运算指令
ÿ 加(ADD)、带进位加(ADC)ÿ 减(SUB)、带借位减(SBC)、逆向减(RSB)ÿ 乘(MUL)、乘加(MLA)、乘减(MLS)ÿ 无符号数除(UDIV)、有符号数除(SDIV)
(2)逻辑运算指令
与(AND)、或(ORR)取反与(BIC)、取反或(ORN)、异或(XOR)
(3)移位运算指令
$\gtrdot$ 逻辑左移(LSL)、逻辑右移(LSR)、算术右移(ASR)、循环右移(ROR)本实验箱所采用STM32处理器芯片的存储器地址映射如下:

(二)实验方案
Main.s 文件代码如下:
AREA RESET,CODE
EXPORT __Vectors EXPORT Reset_Handler Vectors DCD __initial_sp DCD Reset_Handler
Reset_Handler PROCNOPNOP
Z DCD 0xn ;n 为学号后8位,CODE区定义的变量,其地址不能写入新值BL Cal_nB .
Cal_n;此处是子过程ENDPAREA STACK,DATASPACE 0x200initial_sp
S DCD 0 ;DATA区定义的变量,其地址才可以写入新值END
9. 实验报告要求
实验报告需要反映以下工作:
1)实验任务和思考题的设计方案,画出流程图;
2)子过程运算的主要代码;
3)计算器软件的计算结果截图;
4) 变量 Z 和 S 地址在寄存器或者存储器中的截图;
5)体会与建议等。
10.考核要求与方法(限 300 字)
本次实验的考核由三个部分组成,分别为预习报告、实验验收和实验报告。
- 预习报告
ÿ 预习报告的规范性,以及实现方案和流程图的合理性;
- 实验验收
子过程的计算是否符合实验任务要求;
- 实验报告
ÿ 实验报告的规范性,以及实验结果数据的真实性和有效性。
11.项目特色或创新(可空缺,限 150 字)
本项目最大的特色就是“以不变应万变”。
“不变”的是以 ARM 汇编指令的子过程算术逻辑运算为核心;“万变”的是教师可以对不同批次的学生布置不同的计算公式,实验任务的难度可以从简单的算术逻辑运算到复杂的矩阵运算等,满足不同层次的培养要求。