一、实验目的
(1)掌握处理器仿真工具LC-3软件的安装和使用方法。
(2)学会在LC-3仿真环境下编辑程序和转换成可执行目标程序的方法 。
(2)学会在LC-3仿真环境下运行和调试程序的方法 。
二、实验内容
在LC3winguide中,通过chapter1-3学习和掌握仿真器的使用。
完成chapter4: P15 example1和P20 example2。(中文版本P12example1和P17example2)
Example1:调试这个不适用乘法指令的乘法程序
Example 2:调试程序使其输入输入并求和
三、实验步骤与结果
1.运行”仿真器” 目录下的LC301.exe文件,点击“Unzip”进行安装
2. 运行安装目录下的LC3edit.exe文件
Example1:调试这个不适用乘法指令的乘法程序
1.首先在 LC3Edit 中输入程序,如下显示
2.保存为obj文件mutiply.bin 后,转化为.obj 文件
3.开启模拟器,然后加载程序:multiply.obj
4.在行 x3204 处设置断点
5.为R4,R5赋值
6.运行程序,发现R2的值为20而不是15,结果出错
7.进行调试,先将模拟器初始化
8. 点击单步执行,发现单次循环是没有错误的
9.接下来利用断点调试循环
10. 运行程序并观察,发现多执行了一次循环,Z=1时是不必要的
10.修改分支指令为0000 001 111111101
11. 运行程序发现R2为15,结果正确
Example 2:调试程序使其输入输入并求和
1. 在 LC3Edit 中输入程序
2. 载入程序
3.运行程序,分别输入4和3,发现结果是‘g’
4.查ASCLL码表并结合输入时的R0发现在 console 窗口输入“4”时,R0 中给出的值是 x34.当输入的是“3”时,显示的是 x33。把这些值相加,结果是 x67。查看 ASCII 表,x67 代表的是“g”。
5.修改程序
6. 再次运行程序,结果正确
思考题:此程序适用的范围是什么?
答:适用范围为两数和为0~9的情况
四、实验结论
1.在写代码时要注意不要输入中文符号,否则会导致编译错误。
2.程序运行出错时,可以通过设置断点进行调试,如果是有循环的程序,应先检验单个循环是否正确,如果正确,则查看循环次数是否正确。
3.和数字有关的程序需要注意数字和字符的区别,如1和‘1’,以及ASCLL码值。
4.运行程序时需要注意程序的适用范围,如果超出这个范围会导致程序错误。
5.有时候需要修改源代码,注意修改后要编译,而且要在Simulator中重新打开文件。
(by 子忆)