计算机系统(1)实验一 LC-3机器码编程试验

简介: 计算机系统(1)实验一 LC-3机器码编程试验

实验目的:


掌握处理仿真工具LC-3软件的安装和使用方法。

学会在LC-3仿真环境下编辑程序和转换为可执行目标程序的方法。

学会在LC-3仿真环境下运行和调试程序的方法。


实验内容与实验要求:


安装LC-3仿真器

利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。

利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。

利用LC3EDIT输入汇编代码程序并创建可执行目标程序。

利用LC-3 Simulator仿真器运用对应目标程序。

学习和掌握断点,单步执行等调试方法和手段。

实验步骤

安装LC-3仿真器

5f77e669c194404c8b92b039c7c9efdb.png

利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。

编译窗口中输入以下代码,并进行编译。可以得到相应的obj文件

8f7a13ea06ea41f7ab620b1a75988dfc.png

446df6e1f5c1442b9f581ba821a060ff.png

利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。

编译窗口中输入以下代码,并进行编译。可以得到相应的obj文件

e3f778ffd8e54995a14f13fa6e802b9f.png


42ff304c7bb14b668b417e46084fb59d.png

利用LC3EDIT输入汇编代码程序并创建可执行目标程序。

4c277fea1feb41d8a24c9f5d66ff971b.png

利用LC-3 Simulator仿真器运用对应目标程序。

EX1.obj

fcf2a20265484bfbb2d2572187673b43.png

EX2.obj

be890dd823cb45f99f7733a3863274cd.png

EX3.obj

a0036f5f98934c88b9d1c334ddeb3cfb.png


学习和掌握断点,单步执行等调试方法和手段。

(1)学习和掌握断点

可以像下图一样设置断点,并观察相应各个参数的数值

左侧蓝色箭头表示程序的执行位置,红色的圆点表示程序断点

449af5dca4ac483da1a4a928eefa0eed.png

当运行至断点处时,会以对话框的形式提示

2dfe084448ee479886f23b12b13c1a47.png

(2)单步执行调试

c75493d92eb54509a223608bad148cc1.png

db06839bc3014106bab189416e521fea.png

e21989b708a84ef59df668e47fef1333.png

0438902986ba4216a06e8162cba82b5e.png


也可使用“Step Out”按钮,使程序快速移动到断点处

41bb7e6d8c9b4bcd98deca462a0a1002.png

example1(P15)

f6f5821806764e7582287aa58b664030.png

打开Simulator并进行运行

be754ae5df714a53868aea792bbd8e76.png

点击赋值按钮对相应数据进行赋值

e90f1223e00d49fdbcebfa8de12c4a41.png

并进行运行

e5cb7ffd1de94efd8b1340db9d76f0d7.png

我们发现,R2的值并不是15,而是20.说明一定某处发生错误,下面,我们通过debug来找出这个错误并进行修正

bce97cd9cc684a39b2511581124b0493.png

通过这个按钮一步一步进行,我们发现,多执行了一次加R4单元中内容的操作,因此,这就是问题所在,回到源文件中进行修改。将下图中“011”改成“001”

5af4d15333f446dcb1b1e88f4e5cfbff.png

再次运行程序

db38132d9092489bbb6ea72058206d4e.png

此时,我们得到了正确的答案。


example2(P20)

在LC3Edit中打入如下代码并保存成asm文件

e71b9f9ce9ce49cca84e8ba10fcc1612.png

在Simulator中进行运行后,并依此输入3,4发现并未得到想要的结果(3+4=7),则程序一定某处出现问题,因此进行debug

df0d3160dd2a4369993879b53e171ec5.png

对程序的执行进行分析,我们不难发现程序在进行相加时并不是单纯的数值(int型)相加,而是对ASCII码进行相加,因此会发生问题,解决办法就是,与“0”的ASCII码进行相减,方能得到正确答案

8aec20a31d954dcb81ffa171086c988f.png

6f6a416a26ad4699a8060a78070da06b.png


实验结论:


通过本次实验对LC3的安装使用,编码,编译和debug的实验,我掌握了处理器仿真工具LC-3软件的安装和使用方法,学会了在LC-3仿真环境下编辑程序和转换成可执行目标程序的方法,学会了在LC-3仿真环境下运行和调试程序的方法。


相关文章
|
存储
计算机系统(1)实验二 LC-3机器码编程试验
计算机系统(1)实验二 LC-3机器码编程试验
414 0
计算机系统(1)实验二 LC-3机器码编程试验
|
11月前
|
存储 自然语言处理 程序员
【C语言进阶】了解计算机的程序环境和预处理过程 掌握计算机预处理操作(上)
【C语言进阶】了解计算机的程序环境和预处理过程 掌握计算机预处理操作(上)
|
11月前
|
C语言
【C语言进阶】了解计算机的程序环境和预处理过程 掌握计算机预处理操作(下)
【C语言进阶】了解计算机的程序环境和预处理过程 掌握计算机预处理操作(下)
|
12月前
|
Windows
实验二用机器指令和汇编指令编程
实验二用机器指令和汇编指令编程
81 0
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第六章:移位寄存器
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第六章:移位寄存器
131 0
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十三章:微程序控制器
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十三章:微程序控制器
120 0
|
语音技术
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十一章:数据通路
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十一章:数据通路
209 0
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十章:算术逻辑单元
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十章:算术逻辑单元
59 0
|
存储 编译器 异构计算
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十二章:存储器
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十二章:存储器
162 0
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十五章:认识RISCV
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十五章:认识RISCV
226 0