一、实验目的
1.分析和理解试验指定的需解决问题。
2.利用LC-3的机器代码设计实现相关程序。
3.通过LC-3仿真器调试和运行相关程序并得到正确的结果。
二、实验内容
利用LC-3的机器代码计算一个16位的字中有多少位是’1’
程序从x3000开始
需计算的字存储在x3100
计算的结果存储在x3101
三、实验步骤与结果
编写如下代码
0011 0000 0000 0000; 从x3000开始
1010 001 000001001; LDI,R1,PC+9 将数存入R1
0101 010 010 1 00000; R2=0 用R2存1的个数
0001 001 001 1 00000; R1
0000 010 000000100; 利用首字母代表正负,若R1=0,跳到后面存值
0000 001 000000001; 若大于0
0001 010 010 1 00001; R2++
0001 001 001 0 00 001; 利用R1=R1+R1左移一位,改变符号位
0000 111 111111010; 无条件回跳五步
1011 010 000000010; 存R2值入x4001
1111 0000 00100101; halt
0100 0000 0000 0000; x4000
0100 0000 0000 0001; x4001
运行代码
放数据于x4000,以0101 0101 0101 0101为例
运行得到结果为8,正确
四、实验结论
1.左移(x2)可以利用相加实现
2.掌握仿真工具LC-3软件的编码和使用方法,学会了在LC-3仿真环境下如果编写自己想要的程序,并实现程序运行的方法。
(by 子忆)