实验目的:
- 掌握处理仿真工具LC-3软件的安装和使用方法。
- 学会在LC-3仿真环境下编辑程序和转换为可执行目标程序的方法。
- 学会在LC-3仿真环境下运行和调试程序的方法。
实验内容与实验要求:
- 安装LC-3仿真器
- 利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。
- 利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。
- 利用LC3EDIT输入汇编代码程序并创建可执行目标程序。
- 利用LC-3 Simulator仿真器运用对应目标程序。
- 学习和掌握断点,单步执行等调试方法和手段。
实验步骤
1. 安装LC-3仿真器
打开安装包,解压到指定文件夹
2. 利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。
输入二进制机器代码程序,并以“addnums.bin”为文件名保存
点击 创建.obj文件
4. 利用LC3EDIT输入汇编代码程序并创建可执行目标程序。
输入汇编语言机器代码程序,并以“addnums.asm”为文件名保存
点击创建.obj文件
5. 利用LC-3 Simulator仿真器运用对应目标程序。
打开Simulate.exe,点击打开addnums.obj,data.obj。
点击x3000行,点击,设置PC为x3000
在x3009行添加断点(双击灰点)
点击运行程序
图1:添加obj文件 图2:addnums.obj 图3:data.obj
已经添加了10个数字在你的程序的数据段中,理论上R=x8235即当程序停止在断点处时,你将会看到的R1的值。最终结果如下图,与理论值系统,程序运行正确。
6. 学习和掌握断点,单步执行等调试方法和手段。
Example1:调试这个不适用乘法指令的乘法程序
Step1:输入机器代码程序(0/1模式)并创建可执行目标程序。添加程序。
Step2:在x3204设置断点,双击R4,R5并将R4设为6,R3设为3。并运行程序。
Step3:运行结果如下,发现R2=24,不等于6*3=18,程序错误开始调试。
Step4.1:
方法一:
双击R5重新设置为3,PC设置为x3200,并点击进入单步调试,发现进入第三次循环后未跳出循环,开始第四次循环导致错误。所以错误语句是x3204的结束条件。
方法二:
点击,进入页面在x3203处添加断点(或者双击x3204灰点),点击
,发现进入第三次循环后未跳出循环,开始第四次循环导致错误。所以错误语句是x3204的结束条件。
Step4.2:
发现错误代码x3204,应修改为:0000 001 111111101。
修改方法一:进入LC3Edit.exe,修改multiply.bin。
此方法可以保证永久修改,即下次打开程序仍为正确代码
修改方法二:双击x3204行,将Value值改为x0201.
此种方法仅对此次装载有效,下次装载时,该bug仍然存在,因此还要修改源代码
Step5:调试修改完成,重复Step2,运行程序。发现R2=6*3=18,与理论值相同。