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


相关文章
Temporary email邮箱API发送邮件的步骤
使用Temporary email API发送邮件可保护隐私。步骤包括:了解API原理,注册获取API密钥,调用API并传入密钥,生成临时邮箱地址,编写邮件内容,然后发送。此方法确保真实邮箱不被泄露,适用于避免垃圾邮件。记得遵守使用规定和法规。
|
1月前
|
存储 人工智能 弹性计算
阿里云2025年双十一优惠活动政策解读,值得买的亮点连夜整理
阿里云2025双11火热开启!领最高1728元企业券,爆款云服务器低至38元/年,新客享7000万Tokens免费体验。GPU、OSS、RDS数据库等全线特惠,更有AI建站、无影云电脑、短信套餐超值购,助力企业降本增效,智启未来!
538 2
|
4月前
|
人工智能 数据可视化 数据挖掘
团队日报不用愁!自动化生成工具亲测:任务进度实时同步
本文深入分析了传统手动日报在数据孤岛、格式混乱和时效性差三大痛点,并探讨了自动化日报带来的效率提升、决策优化等四大核心价值。通过对板栗看板、SmartBrief、n8n 等六款主流工具的功能、适用场景及实战效果进行测评,为企业提供科学的选型建议与实施路径。
团队日报不用愁!自动化生成工具亲测:任务进度实时同步
|
7月前
|
机器学习/深度学习 人工智能 监控
基于AI视觉的泳池安全监控系统技术解析
本方案针对泳池安全管理的技术挑战,提出基于边缘计算与云平台的混合架构系统。通过改进YOLOv8模型实现92.7%溺水检测精度,结合LSTM分析异常姿态,多特征融合提升水面静止及呼吸检测能力。同时,安全员行为识别、图像增强模块有效应对环境干扰和监管盲区问题。系统采用DeepSORT优化多目标追踪,硬件配置支持实时视频流分析,实际应用中平均溺水识别时间仅2.3秒,显著优于人工检测。未来将探索多模态感知融合与自适应学习机制,进一步提升系统性能。
303 0
|
域名解析 网络协议
DNS服务工作原理
文章详细介绍了DNS服务的工作原理,包括FQDN的概念、名称解析过程、DNS域名分级策略、根服务器的作用、DNS解析流程中的递归查询和迭代查询,以及为何有时基于IP能访问而基于域名不能访问的原因。
1547 2
DNS服务工作原理
|
传感器 运维 安全
物联网:物联网卡的优势
物联网卡(IoT SIM卡)作为连接物联网设备与互联网的桥梁,具备一系列显著优势,这些优势使得物联网卡成为推动物联网(IoT)应用发展的关键要素。以下是物联网卡优势的操作层面解析:
|
监控 数据可视化 Devops
Grafana 与云服务提供商的集成
【8月更文第29天】Grafana 是一个强大的数据可视化工具,可以与多种数据源集成,从而为用户提供详细的监控和分析仪表板。在云服务时代,Grafana 的这种灵活性使得它能够轻松地与 AWS、Azure 和 Google Cloud 等云服务提供商的数据源集成,帮助 DevOps 和 SRE 团队更好地监控云资源的状态。本文将介绍如何将 Grafana 与这些主流云服务提供商的数据源集成。
261 1
|
存储 分布式计算 负载均衡
什么是 HBase?其组件起什么作用?
【8月更文挑战第12天】
1822 4
|
数据安全/隐私保护 UED 开发者
【Uniapp 专栏】Uniapp 项目中路由管理的实战经验分享
【5月更文挑战第12天】在 Uniapp 项目中,路由管理至关重要,涉及清晰的规划、配置和权限控制。合理设计路由结构便于开发维护,设置可读性高的页面路径和参数。根据场景选择参数传递和导航方式,处理嵌套路由,确保数据准确无误。添加权限判断保护受限页面,利用过渡动画提升用户体验。在复杂项目中,采用模块化管理路由,结合状态管理工具优化路由状态。持续测试和优化,以实现高效、流畅的用户导航。这些实战经验有助于提升 Uniapp 应用的质量。
473 6
|
前端开发 JavaScript 容器
心得经验总结:热力图之heatmap
心得经验总结:热力图之heatmap
675 0