计算机系统(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仿真环境下运行和调试程序的方法。


相关文章
|
7月前
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
111 1
|
存储
计算机系统(1)实验二 LC-3机器码编程试验
计算机系统(1)实验二 LC-3机器码编程试验
491 0
计算机系统(1)实验二 LC-3机器码编程试验
【8086汇编】《汇编语言(第三版)》实验一
需要用到的指令✨✨ 查看、修改CPU中寄存器的内容:R命令 查看内存中的内容:D命令 修改内存中的内容:E命令(可以写入数据、指令,在内存中,它们实际上没有区别) 将内存中的内容解释为机器指令和对应的汇编指令:U命令 执行CS:IP指向的内存单元处的指令:T命令 以汇编指令的形式向内存中写入指令:A命令
|
Windows
实验二用机器指令和汇编指令编程
实验二用机器指令和汇编指令编程
118 0
|
存储
计算机组成原理实验二:双端口存储器原理实验
本篇博文主要是讲述一下计算机组成原理实验中双端口存储器原理实验,因为很多同学在刚学习计算机组成原理实验的时候对于调试的一些步骤还是有些懵懵懂懂,每个步骤之间的连接做的不是很连贯,故有了写此篇博文的初衷,笔者会在近期分享计算机组成原理实验的五个实验,希望对有学习此课程的同学能够有一些帮助!(第一篇博文所写的前缀)
810 3
计算机组成原理实验二:双端口存储器原理实验
计算机组成原理实验五:CPU组成与机器指令执行实验
本篇博文主要是讲述一下计算机组成原理实验中CPU组成与机器指令执行实验,因为很多同学在刚学习计算机组成原理实验的时候对于调试的一些步骤还是有些懵懵懂懂,每个步骤之间的连接做的不是很连贯,故有了写此篇博文的初衷,笔者会在近期分享计算机组成原理实验的五个实验,希望对有学习此课程的同学能够有一些帮助!
706 1
计算机组成原理实验五:CPU组成与机器指令执行实验
|
搜索推荐 C++
计算机系统(1)实验三 汇编语言试验
计算机系统(1)实验三 汇编语言试验
2557 0
计算机系统(1)实验三 汇编语言试验
|
存储
计算机系统(1)实验四 LC-3简单游戏设计
计算机系统(1)实验四 LC-3简单游戏设计
342 0
计算机系统(1)实验四 LC-3简单游戏设计
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十章:算术逻辑单元
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十章:算术逻辑单元
102 0
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第六章:移位寄存器
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第六章:移位寄存器
165 0