实验目的
1. 掌握处理仿真工具LC-3软件的安装和使用方法。
2. 学会在LC-3仿真环境下编辑程序和转换为可执行目标程序的方法。
3. 学会在LC-3仿真环境下运行和调试程序的方法。
实验内容与实验要求:
1. 安装LC-3仿真器
2. 利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。
3. 利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。
4. 利用LC3EDIT输入汇编代码程序并创建可执行目标程序。
5. 利用LC-3 Simulator仿真器运用对应目标程序。
6. 学习和掌握断点,单步执行等调试方法和手段。
样例实验步骤
1.分析问题,需要计算一个16位的字中有多少位是‘1’,该如何进行计算?取舍?
2.得知解决办法后,进行相关前期准备
3.得到最终的二进制代码格式
4.样例运行
输入: Xffff
实验结论
本次实验的目的要求利用LC-3的机器代码计算一个16位的字中有多少位是‘1’,,据分析,可通过左移相加联合条件码BR判断来实现。
通过本次实验对LC-3机器代码的编写,让我对处理器仿真工具LC-3软件的编码和使用方法的掌握更加深刻,并且学会了在LC-3仿真环境下如何编写自己想要的程序,并实现程序运行的方法。
最终完整代码
0011 0000 0000 0000 ; 从地址0X3000开始
0110 0011 0000 0000 ; LDR,R1,R4,offset=0
;通过基址偏移寻址,将储存在R4的内存地址赋给R1,方便访存x3500
0101 0100 1010 0000 ; AND R2 R2 0,将R2初始化,用于计数1的个数
0001 0010 0110 0000 ; ADD R1 R1 0,再次提出R1,为下一步比较作铺垫
0000 0100 0000 0100 ; BRz PC+4 ,比较R1的大小是否为0
;是则PC+4,循环结束,否则继续进行
0000 0010 0000 0001 ; BRp PC+1 比较R1的正负性
0001 0100 1010 0001 ; ADD R2 R2 #1 R2++
0001 0010 0100 0001 ; ADD R1 R1 R1 R1*=2
0000 1111 1111 1011 ; 无条件跳回前5步
0111 0101 0000 0001 ; STR R2,R4,offset=1