深 圳 大 学 实 验 报 告
课程名称:
计算机系统(1)
实验项目名称: 实验二 LC-3 机器码编程实验
学院:
计算机与软件学院
专业:
计算机科学与技术
指导教师:
张志宏
姓 名:
学 号 :
实验时间:
实验报告提交时间:
=
教务处制
一、实验目的与要求:
实验目的:
1.
2.
3.
分析和理解需解决的问题。
利用 LC-3 的机器代码设计实现相关程序。
通过 LC-3 仿真器调试和运行相关程序并得到正确的结果。
实验要求:
用 LC-3 机器语言(用“0”和“1”格式)写一个程序,计算一个 16 位字中“1”的个数并且在
内存中存储这个数。要求:
(1) 把要计算包含“1”的这个字,放在内存地址为 x3100 的位置;
(2) 把计算包含“1”个数的结果放在 x3101 的位置;
(3) 程序的起始位置是内存 x3000。
(4) 写一个报告解释怎样解决这个问题,并且每一条指令后面写上注释。例如:如果内
存位置 x3100 处包含字“1101000100001011”,把你获得“1”的结果
“0000000000000111”(十进制是 7)放在内存位置 x3101 处。
提示 1: 当两个一样的数相加时,将会怎么样? 例如:
0000000000001011 + 0000000000001011 = 0000000000010110。
提示 2: 在一个字中,bit[15]和其它位的情况有什么不同?
在截止日期前提交实验报告。
二、实验环境:
地点:学院实验室机房
硬件环境:PC 机
机器编号:
软件环境:
操作系统: Windows 7 中文版
三、实验步骤与过程:(每个项目的设计思路简述、选择一项设计难点写出实验步骤。此
处用流程图表示程序设计思路)
2
如何判断 R4 里面有多少个 1?
我们可以先判断 R4 首位是不是为 1,也就是判断正负即可,然后每次左移一位
(利用 R4+=R4 也就是乘 2 的操作),移位 16 次,我们用 R2 记录出现的 1 的次
数,如果 R4 为负数,则 R2++。
然后 R3 用来记录剩余执行的次数,然后无论 R4 是不是为负数,只要每判断一次
后,R3 都自减,由于执行的次数固定为 16,所以结束这个程序的条件就是当 R3
为零的时候,就结束程序。
四、实验结果与数据分析:(每个实验效果的界面截图,对实验结果进行分析,说明实
验结果是否达到设计要求?)。
3
如图所示,这里是写好的代码:
然后我们把它放到 Simulator 里执行。
测试数据一:
4
我们将 x3100 的值设置为 7(0111)
运行后即可观察到 X3101 的值变成了 3,符合结果
测试数据 2:我们将值设置为 0 观察到 x3101 上的结果也是 0
5
测试数据 3:
我们将 x3100 的值设置为 9(即 1001)
观察到 x3101 的结果为 2 符合结果
五、实验体会:(在实验中遇到的问题及解决的办法、自己的收获等)
本次实验让我熟悉了如何用 01 代码实现简单的编程题目,让我熟悉了 LC-3 代
码的编写以及如何在程序上运行,并且在实验的过程中熟悉了如何调试。
这次的实验题是判断有多少个 1,和老师在实验课上讲的判断第一个 1 出现的位
置有相似的地方,并且在老师上课的提示下(自加即为左移),也成功的解决了
问题。
6
教师批阅意见:
成绩评定:
备注
指导教师签字:
2020 年 5 月 18 日
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后 10 日内。
7