添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

(1)掌握处理器仿真工具LC-3软件的安装和使用方法。

(2)学会在LC-3仿真环境下编辑程序和转换成可执行目标程序的方法 。

(2)学会在LC-3仿真环境下运行和调试程序的方法 。

内容与方法

利用提供的安装软件包和软件使用说明文档,完成以下试验内容:

(1)安装LC-3仿真器

(2)利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。

(3)利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。

(4)利用LC3EDIT输入汇编代码程序并创建可执行目标程序。

(5)利用仿真器运用对应目标程序。

(6)学习和掌握断点,单步执行等调试方法和手段。

步骤与过程

(2)利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。

①打开LC3EDIT编辑器输入代码并保存为后缀.bin的二进制文件(图1)

图表 1 编辑二进制文件并保存

②编译二进制文件(图2)

图表 2 编译二进制文件sample1.bin  example1.bin

(3)利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。

①新建文件并编写保存编译后缀为.hex的16进制文件(图3)

图表 3 新建编写保存编译16进制文件

(4)利用LC3EDIT输入汇编代码程序并创建可执行目标程序。

①汇编代码保存为.asm后缀(图4)

图表 4 汇编代码文件后缀asm

②编译(图5)

图表 5 编译

(5)利用仿真器运用对应目标程序。

1.sample

①打开LC3 Simulator运行软件,导入刚才编译成功的二进制文件(图6)

图表 6 导入可执行文件

②载入后界面,sample1求和10数(图7)

图表 7  载入后界面

③加载数据(十个数字)到内存,跳转至地址x3100设置对应的值(图8)

图表 8 加载数据

④为了方便将10个寄存器的值设置为0-9 (x0000-x0009),程序结果应该为45 (x002D) (图9)

图表 9 将10个数设置为0-9

⑤跳转至程序起始地址并设置断点,运行程序,寄存器R1存求和结果45,答案正确(图10)

图表 10 设置断点,运行程序

2.example1:乘法

①载入程序,设置断点,设值乘数为5和3(图11)

图表 11 example1程序设置

②运行程序结果为20,答案错误(图12)

图表 12 程序结果有误

(6)学习和掌握断点,单步执行等调试方法和手段。

①将R5重新设为3,重新回到程序其实位置x3200(图13)

图表 13

②按逐步调试,PC指向下一条指令x3201,IR存第一条指令x54A0,将R2清零。(图14)

图表 14 逐步调试1

③继续逐步调试,运行指令2,R2存5,正确;逐步调试完一个循环没有错误,直接换设置断点(图15)

图表 15 逐步调试指令2

④设置断点调试,在x3203设置断点,运行至x3203观察到R5变为2,R2变为5,状态(CC)为P(图16)

图表 16 断点调试1

⑤3次循环后,发现此时状态(CC)为Z置1,导致循环会多一次,使结果多加5,20(图17)

图表 17 错误处

⑥x3203处的指令有误,应该把BRZP改为BRP,当且仅当P=1时跳转,即第4条指令改为

0000 001 111111101 ;跳转到 location x3201 如果结果为正值(图18)

图表 18 将Z位置0

⑦保存后重新打开运行,答案正确(图19)

图表 19 修改后

3.example2

①运行程序(图20)

图表 20 example2

②结果有误(图21)

图表 21 结果有误

②是字符与数字的 转换问题,修改汇编程序(新添加的行显示为红体):

.ORIG  x3000 
LD     R6, ASCII 
LD     R5, NEGASCII 
TRAP   x23 ;输入 
ADD    R1,R0,x0 ;将第一个整数传给 R0 
ADD    R1,R1,R5 ;将第一个 ASCII 数字转换成数值 
TRAP   x23 ;另一个驶入 
ADD    R0,R0,R5 ;将另一个 ASCII 数字转换成数值 
ADD    R2,R0,R1 ;将这两个整数相加 
ADD    R2,R2,R6 ;将和转换成 ASCII 表示 
LEA    R0,MESG ;载入字符串的地址 
TRAP   x22 ;输出字符串 
ADD    R0,R2,x0 ;结果传给 RO 
TRAP   x21 ;显示结果 
ASCII .FILL x30 ;mask:转换成 ASCII 
NEGASCII .FILL xFFD0 ;mask:-x30 
MESG   .STRINGZ "The sum of those two numbers is " 

④运行结果正确(图22)

 图表 22 结果正确

结论或体会

       通过本次实验,我学会了如何利用LC3编译和调试二进制、16进制和汇编代码程序。学会通过逐步调试、断点设置、观察寄存器数据变化的方法调试程序。以及初次接触二进制和汇编代码,初步体验利用二进制代码和汇编代码实现一个小程序的具体过程,也确实能体验到虽然机器语言编写逻辑不如高级语言直接,但其操作会更加直接,没有冗余的步骤,直接深入机器层面进行运算,会更加高效,初步了解计算机内部几种简单运算的机器操作。

利用LC3EDIT输入机器代码程序(0/1模式)并创建可执行目标程序。 利用LC3EDIT输入机器代码程序(hex模式)并创建可执行目标程序。 利用LC3EDIT输入汇编代码程序并创建可执行目标程序。 利用LC-3 Simulator仿真器运用对应目标程序。 学习和掌握断点,单步执行等调试方 说明我们是以ASCII码的方式读入了字符,而不是数字,因此我们的程序需要做出修改:数字转为ASCII码只需要附加一个48,而最后的结果叠加了两个加数在ASCII编码时附加的48,因此最后结果减去一个48即可。结合前面所学知识,很容易联想到ASCII码的数字编码,字符”1”对应的正好是数字49,字符”2”对应的正好是数字49,字符”c” 对应的正好是数字99。LC3 Simulator中执行obj文件,观察汇编指令可知:该程序从控制台读入两个数字,将数字相加后进行输出,因此这是整数加法程序。 这个实验不是很难,比上一个四子棋实验简单多了。。。 这个实验需要实现LC-3的中断操作,实现也比较简单。我们编写用户程序持续输出,然后通过键盘触发中断,中断程序的触发,打断用户程序的输出,表示发生中断了,然后中断结束,继续输出。 编写用户程序,交替输出字符串,达到刷屏效果,输出字符串之后使用循环来延迟一会,然后继续输出 ICS ICS ICS ICS ICS ICS 计算机领域中,中断就是由软硬件向处理器发送信号,处理器收到并立即处理该信号表示事件的过程。中断会暂停当前处理器正在执行的流程,然后将处理器切换到高优先级。处理器会暂存当前任务的状态,然后执行一小段称为中断处理程序(ISR)的代码来处理该事件。中断是暂时的,中断处理程序执行结束后,处理器会回到之前任务暂存的状态继续执行,中断分为两种类型:硬件中断和软件中断。 本实验的目的是展示如何让输入输出通过执行中断处理程序的方式来暂停和恢复一个正在运行的程序,恢复后的程序就像中间什么都没有发生过,本实验使用键盘 最近想看计算机方面的经典教材《计算机系统概论》, 但是它上面的实例全部是在 LC3 仿真器环境下编写的。要学习需要首先安装 LC3 simulator安装 lc3 仿真器的方法: 1. 到官网下载 lc3 模拟器和 lc3 编译器(网址:http://highered.mheducation.com/sites/0072467509/student_view0/lc-3_simulato... ◦ 计算的结果存储在x3101 用 LC3编写机器代码,实现简单的程序。初步学会LC3代码的编写,进一步加深了关于LC3汇编代码指令的相关学习应用。学会了关于LC3里面跳转指令,循环结构,基本加减实现。学会寄存器的灵活运用。...