LC-3 汇编语言试验 求成绩等级

实验目的

1. 掌握处理仿真工具LC-3软件的安装和使用方法。

2. 学会在LC-3仿真环境下编辑程序和转换为可执行目标程序的方法。

3. 学会在LC-3仿真环境下运行和调试程序的方法。

实验内容

1.分析和理解试验指定的需解决问题。

2.利用LC-3的汇编语言代码设计实现相关程序。

3.通过LC-3仿真器调试和运行相关程序并得到正确的结果

4. 学习和掌握断点,单步执行等调试方法和手段。

实验要求

1.熟悉和理解LC-3的汇编语言指令格式。

2.掌握在LC-3仿真平台下汇编语言代码的设计输入和调试过程。

3.掌握利用汇编语言解决问题的思路,加深对底层硬件的理解。利用LC3EDIT输入汇编代码程序并创建可执行目标程序。

实验步骤

1.分析问题

        在x3200处开始存放16个学生成绩,成绩为0~100的正整数,编写程序对16个学生的成绩进行排序,从高至低存放在起始地址x4000处,计算学生获得成绩等级为A的 数量 存放在x4100,获得B等级的数量存放在x4101处。

LC-3 汇编语言试验 求成绩等级_第1张图片

2.解决问题

由1可知,对于这一个问题,我们需要解决的两个问题是:如何进行排序和如何进行分数等级的评定

1).排序问题

如何排序?并将排序后的分数存入地址x4000中?

        本题中,我选用了比较简单的排序算法——冒泡排序法,基本原理为建立双重循环,逐步比较相邻两个数的大小,并根据题目的需要决定是否需要进行交换(本问题中排序需要从大到小排序,所以交换的条件是左边需要小于右边,否则相对位置不变。

其实现的高级语言如下:

LC-3 汇编语言试验 求成绩等级_第2张图片

再将其转变为汇编语言即可,由于排序后的内存位置依旧在x3200,所以要通过一次循环将数据搬移到x4000.

2).等级问题

成绩等级计算方法:如果一个学生的成绩在85分以上同时排名前25%则获得A,如果一个学生不能获得A,他的成绩在75分以上同时排名前50%,则可获得B。其它成绩则获得C

  由于在进行等级排序之前,已经对分数排好了序,所以我们可以直接从小到大根据计算方法进行评定。

 

LC-3 汇编语言试验 求成绩等级_第3张图片

 实验代码

 Part1:前期准备&&冒泡排序算法实现

LC-3 汇编语言试验 求成绩等级_第4张图片

 Part2:数据搬移指令&&等级计算 

LC-3 汇编语言试验 求成绩等级_第5张图片

Part3:数据内存 

LC-3 汇编语言试验 求成绩等级_第6张图片

样例演示

 输入16个数 87 76 98 89 76 65 25 37 90 8 81 34 19 10 39 89

LC-3 汇编语言试验 求成绩等级_第7张图片

排序后结果 98 90 89 89 87 81 76 76 65 39 37 34 25 19 10 8

 

LC-3 汇编语言试验 求成绩等级_第8张图片

A-level 和B-level的个数  4 4

LC-3 汇编语言试验 求成绩等级_第9张图片

实验结论

        通过这次的实验,我对汇编语言有了更深的认识。虽然在实验过程中遇到不少困难,最终都成功解决。如判断时条件错误,忘记将因用于比较而变成负数的值转回原值等。最后在一次次debug和测试中都得到解决。在对汇编语言进行编程时,如果代码较长,理解起各个指令的含义变得困难,此时就需要借助注释来进行提示,注释的作用在本实验中得到了很大体现。此外,我也学会了将高级语言中排序算法应用到汇编语言的能力,这大大降低了在汇编语言中实现相应操作的难度。

实验最终代码 !!!仅供参考!!!

代码编写目的:将掉前输入的16位同学的分数排序,并根据区分a-leve1 和-eve1 的要求计算出其个数:程序从x3000开始oriq X3000:程序代码区
:冒泡排序
AH0 R2,R2.0
ADD R2,R2,#1:R2初始1,外层循环1.轮次:一层循环outer (R2 @

 

 

 

你可能感兴趣的:(计算机系统Ⅰ,汇编,开发语言)