实验目的
- 掌握处理器仿真工具LC-3软件的安装和使用方法。
- 学会在LC-3仿真环境下编辑程序和转换成可执行目标程序的方法。
- 学会在LC-3仿真环境下运行和调试程序的方法。
实验内容
- 安装LC-3仿真器
- 利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。
- 利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。
- 利用LC3EDIT输入汇编代码程序并创建可执行目标程序。
- 利用仿真器运行对应目标程序。
- 学习和掌握断点,单步执行等调试方法和手段。
实验步骤与结果
1、安装LC-3仿真器
如图 1所示,点击unzip安装。
2、LC3 0/1模式编码程序
在LC3EDIT中输入机器代码程序(0/1模式),以bin后缀保存,选择Convert from base2编译生成对应的可执行obj文件。
3、LC3 hex模式编码程序
在LC3EDIT中输入机器代码程序(hex模式),以hex后缀保存,选择Convert from base16编译生成对应的可执行obj文件。
4、LC3 汇编代码程序
在LC3EDIT中输入汇编代码程序,以asm后缀保存,选择Assemble编译生成对应的可执行obj文件。
5、LC3 Simulator基础操作
在LC3 Simulator中载入EX3.obj文件。
在程序末尾添加断点。
跳过子函数、单步执行、跳出至断点。
6、Example01
在LC3 EDIT中输入程序编码,生成对应的可执行文件。
在LC3 Simulator中执行obj文件,观察汇编指令可知:该程序通过循环累加的方式实现乘法。
其中R4寄存器内为被乘数,R5寄存器内为乘数,结果存储在R2寄存器。
设置初值:
运行结果:
该程序实现了整数乘法。
7、Example02
在LC3 EDIT中输入程序编码,生成对应的可执行文件。
LC3 Simulator中执行obj文件,观察汇编指令可知:该程序从控制台读入两个数字,将数字相加后进行输出,因此这是整数加法程序。
![在这里插入图片描述](https://img-blog.csdnimg.cn/efacb868d6034653b223db57848f2022.png#pic_center =540x220
运行发现结果有误,断点查看寄存器变化情况。
当我们输入1后,R0寄存器的值为49;当我们输入2后,R0寄存器的值为50;相加的结果为99,放置在R2中。
结合前面所学知识,很容易联想到ASCII码的数字编码,字符”1”对应的正好是数字49,字符”2”对应的正好是数字49,字符”c” 对应的正好是数字99。
说明我们是以ASCII码的方式读入了字符,而不是数字,因此我们的程序需要做出修改:数字转为ASCII码只需要附加一个48,而最后的结果叠加了两个加数在ASCII编码时附加的48,因此最后结果减去一个48即可。
重新执行程序,可见运行结果被修正,说明我们的修改是有效的。
实验结论
通过本次实验,我学会了处理器仿真工具LC-3软件的安装和使用方法。学习了LC-3仿真环境下如何用不同编码书写、编译、运行程序,也学习了断点调试、单步执行的方法和手段。同时,我还通过修改程序源码,修正了sum程序的运行结果。
本次加深了我对仿真工具的理解和运用,也加深了我对计算机底层运行原理的认识。