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

实验目的:

  1. 熟悉和理解LC-3的机器指令格式。
  2. 进一步掌握在LC-3仿真平台下机器代码的设计输入和调试过程。
  3. 掌握利用机器语言解决问题的思路,加深对底层硬件的理解。

实验内容:

利用LC-3的机器代码计算一个16位的字中有多少位是’1’程序从x3000开始,需计算的字存储在x4000,计算的结果存储在x4001

实验要求:

  1. 分析和理解试验指定的需解决问题。
  2. 利用LC-3的机器代码设计实现相关程序。
  3. 通过LC-3仿真器调试和运行相关程序并得到正确的结果。

实验步骤

1. 编写代码
由于要实现检测多少位有1,因此不难想到,可以利用检测正负的方法,检测最高位的数字是否为1,再讲左移一位,并继续检查,直至数值大小为零时,即检测结束。因此在LC3Edit中输入以下代码:

0011000000000000; 从0X3000开始
1010 001 000001001; LDI,R1,PC+9
0101 010 010 1 00000; AND R2 R2 #0
0001 001 001 1 00000; ADD R1 R1 #0
0000 010 000000100; BRz PC+4
0000 001 000000001; BRp PC+1
0001 010 010 1 00001;  ADD R2 R2 #1
0001 001 001 0 00 001; ADD R1 R1 R1
0000 111 111111010; 无条件跳回前5步
1011 010 000000010; STI R1,PC+2
1111000000100101; halt
0100000000000000; 0X4000
0100000000000001; 0X4001

程序运行思路如下:
即将要检测的数字从地址0X4000中放入R1中,用R2存放1的个数。
①将R2清零。
②判断R1正负,如果是正的R2就加一
③将R1左移一位
④判断如果R1等于零就结束程序,并将R2的值存入0X4000;若不为0则返回②

在这里插入图片描述
2. 运行代码
打开simulator,并运行
在这里插入图片描述

并使用Set Value给0X4000赋值,这里以56A1展示,并点击运行后得到如下结果:
在这里插入图片描述
即56A1中共有7个’1’答案正确。
程序顺利实现

实验结论:

通过本次实验对LC3代码的编写我掌握了处理器仿真工具LC-3软件的编码和使用方法,学会了在LC-3仿真环境下如果编写自己想要的程序,并实现程序运行的方法。
在实验中也遇到了一些困难,如最开始将地址错误的放入程序中,以至于地址被当成指令执行,经过对程序指令顺序的调整,成功解决了这一问题,最终程序顺利得以实现。

  • 14
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上山打老虎D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值