实验目的
(1)掌握处理器仿真工具LC-3软件的安装和使用方法.
(2)学会在LC-3仿真环境下编辑程序和转换成可执行目标程序的方法
(3)学会在LC-3仿真环境下运行和调试程序的方法
实验内容
(1)安装LC-3仿真器
(2)利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。
(3)利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。
(4)利用LC3EDIT输入汇编代码程序并创建可执行目标程序。
(5)利用LC-3 Simulator仿真器运用对应目标程序。
(6)学习和掌握断点,单步执行等调试方法和手段。
实验步骤与过程
(1)安装LC-3仿真器
打开实验材料,选择安装路径,安装LC-3仿真器,安装过程已在实验室完成,下图为安装成功后的样子:
(2)利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。
a. 在lc3edit的代码区输入以下代码, 保存为“EX1.bin”
b. 点击如下图所示的红框处编译为二进制文件
c. 用Simulator打开EX1.obj,如下图所示
d. 单击如下图所示的按钮运行程序,观察寄存器值的变化
(3)利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序
a. 在lc3edit的代码区输入以下代码, 保存为“EX2.hex”
b. 点击如下图所示的红框处编译为二进制文件
c. 用Simulator打开EX2.obj,如下图所示
d. 单击如下图所示的按钮单步执行程序,观察寄存器值的变化.
e. 循环结束后的结果如下图所示
(4)利用LC3EDIT输入汇编代码程序并创建可执行目标程序。
a. 在lc3edit的代码区输入以下代码, 保存为“EX3.asm”
b. 点击如下图所示的红框处编译为二进制文件
c. 用Simulator打开EX3.obj,如下图所示
d. 打断点,并进行单步调试
e. 结果如下:
(5)完成第四章example1
a. 在LC3Edit 中输入程序,并生成obj文件
b. 在simulate中打开example1.obj文件
c. 读懂程序
R4与R5中的内容将会相乘,通过将R4中的值加上自身的a倍,这个a 由R5中的值决定,举例来讲,如果R4中值为7 ,R5中值为6,第一次 0+7 第二次 7+7 第三次 14+7 。。。第六次 35+7,在程序结束时 最后的值放置于R2中
d. 设置断点
e. 初始化值
f. 运行程序,发现问题
结果应为15,但却为20
g. 调试程序
发现R5等于0时,仍发生了跳转
h. 修正程序并运行
(6)完成第四章example2
a. 输入程序,并生成obj文件
b. 在simulate中运行错误的程序
c. 发现问题并改正
当我在console窗口输入“4”时,R0中给出的值是x34,当我输入的是“3”时,显示的是x33。把这些值相加,结果是x67。查看ASCII表,x67代表的是“g”,这便是错误所在,如图所示:
d. 修正程序
e. 运行正确程序,运行结果如下:
实验结论或体会
(1)LC3Edit 可用二进制、十六进制、汇编语言编写机器语言并生成相应的可执行程序。
(2)Simulator可执行"*.obj"文件,并在其中观察寄存器、机器状态、内存的变化。
(3)十六进制和汇编语言是机器语言的不同表示形式,它们可以被转换为等效的二进制机器语言。
(4)在程序编写完成后,使用高级语言、汇编语言或十六进制语言编写的程序需要经过编译器的处理,将其转化为可执行的机器语言,然后才能在计算机上运行。