为什么80%的码农都做不了架构师?>>>   

LC3是一款较为成熟的16位汇编程序运行调试软件,2003年时由美国得克萨斯州立大学的 Yale N. Patt 和伊利诺伊大学香槟分校的 Sanjay J. Patel 两位计算机科学教授开发完成,旨在创造一个便捷的汇编语言开发、编译以及调试环境。LC3本身是一个参考了计算机的冯诺依曼架构的模拟16位指令执行器,但是通过它写的汇编程序略经修改也能用于其它计算平台,它还能研究C语言的编译优化等问题,非常适合汇编初学者或者从事汇编工作者使用。 关于LC3的更多详细资料请参考:https://en.wikipedia.org/wiki/LC-3

本软件也可以从以下链接获取:https://pan.baidu.com/s/1jJ9dyB0 或 http://highered.mheducation.com/sites/0072467509/student_view0/lc-3_simulator.html (LC3官网)

该软件由一个编辑器(LC3Edit.exe)和一个模拟器(Simulate.exe)组成。由于该软件为绿色软件,因此Windows平台下载后即可直接使用。Unix版本请自行上官网下载安装。

LC3汇编程序编辑器的使用

首先,打开LC3Edit.exe编写汇编程序,输入如下代码:

.ORIG x3000
ADD R1 R0 R1
LDR R2 R3 0
.END

此处,.ORIG x3000表示程序的第一行从内存地址x3000处开始执行。 ADD句表示将存储器(Register)R0和R1中数值的求和结果保存在R1当中(仅限于对于16位有符号数字的加法运算) LDR句意思略复杂,它表示从 以R3存储器存储的值作为地址a,将地址a + 0处存储的值加载到R2存储器中。此处R3后面的0表示地址位移数(offset),取值范围-32至31。 .END表示程序结束。

然后,点击程序界面右边的按钮“asm”,LC3就会在保存程序后将该汇编程序翻译成二进制和十六进制的机器语言,并生成.obj文件,以供模拟器运行调试使用。

打开编译程序所在的文件目录,可以看到此处二进制机器码、十六进制机器码等都已经自动根据16位架构标准翻译完成。

点击工具栏从左至右第二个黄色打开按钮,选择HelloAsembly.bin,即可查看该汇编程序对应的二进制机器码,效果如下:

备注:如果用户有二进制或十六进制的机器码,也可以直接点击“->B”或者“->X”按钮生成模拟器可用的obj文件。

用LC3调试汇编程序

打开Simulate.exe,点击最左边的黄色按钮,并将弹出的文件对话框路径切换到刚才程序所在目录,并选中需要调试的.obj文件。

打开之后,刚才的汇编程序会被加载到LC3指令执行器,效果如图。

点击界面上方R0和R1,输入两个待求和数(范围 -2 ^ 16到2^15 + 1),本例分别为2和3。

之后,在程序结束的x3002这个内存位置左边点一下,从而表示程序调试终止点。然后,点击R3,输入任意一个想存储数据的内存地址(本例使用x3010,注意不得使用程序本身所在内存位置,此处为x3000 - x3002的位置)。并点击该地址,输入任意一个short变量范围内的数字(本例为20)。全部完成后,效果如图:

由于此程序有两条汇编指令,因此点击从左到右第三个按钮(即step over按钮,逐句调试)两次。可以看到效果如下:

可以发现存储器R1已经正确存储了2 + 3的结果,而R2也正确加载了R3中的地址加位移为0处的数据,调试环境也正确提示了程序结束。因此本程序调试成功。

这样,我们就迈出了学习汇编的第一步了。

参考资料:

Patt, Yale N.; Patel, Sanjay (2003). Introduction to Computing Systems: From Bits and Gates to C and Beyond. New York, NY: McGraw-Hill Higher Education. ISBN 0-07-246750-9. Retrieved 6 October 2010.

转载于:https://my.oschina.net/Samyan/blog/1614174

LC3环境下的汇编语言程序调试攻略相关推荐

  1. Keils uVision5环境下STM32汇编语言程序开发

    目录 一.如何在MDK5中建立工程 1建立工程 1.1创建工程 1.2选择芯片STM32F103RC ​ 1.3运行环境选择,在CMSIS下选择CORE:Device下选择Startup 2.添加文件 ...

  2. 痞子衡嵌入式:IAR环境下无法直接下载调试i.MXRT分散链接工程的解决方案(宏文件.mac+双Flashloader)...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR环境下无法直接下载调试i.MXRT分散链接工程的解决方案. 分散链接与加载一直是嵌入式领域比较劝退新手的难题,在恩智浦 i.MXR ...

  3. Laravel本地Sail开发环境下Phpstorm+浏览器+Postman调试配置

    Laravel本地Sail开发环境下Phpstorm+浏览器+Postman调试配置 查看Php是否启用Xdebug 配置Sail对Xdebug的支持 浏览器如何进行XDebug调试 下载浏览器扩展 ...

  4. 基于VB环境下的语音识别程序开发方法

    摘要:语音识别技术的发展和广泛应用,使用户与计算机的对话方式不再仅仅局限在使用键盘或鼠标发送指令的方式.本文在visual basic 编程环境下使用Microsoft Speech SDK中的语音接 ...

  5. linux下c/c++程序调试拾遗

    linux下c/c++程序调试拾遗 以下为整理c++程序调试过程中经常用到的工具链 1. 调试利器GDB linux下c++程序的调试,绕不过去的第一个就是gdb无疑了: 1.1 启动gdb gdb ...

  6. win10环境下 运行debug程序

    百度网盘:链接:https://pan.baidu.com/s/1y6omgW6fI-gT3Dp-0hutOg    提取码:iw4l CSDN0积分下载:https://download.csdn. ...

  7. linux使用gcc实现扫雷,基于linux环境下扫雷应用程序

    基于linux环境下扫雷应用程序 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 <网络操作系统>报告(应用程序开发) ...

  8. Linux上运行扫雷,基于linux环境下扫雷应用程序.docx

    总俶斜技誓魄 <网络操作糸统>掖告 (应用程序开发丿 题 目: 基于I inux平台GCC环境下扫雷应用程 序开发 姓 名: 李磊 学 院: 理学院 专 业: 网络工程 班 级: 092 ...

  9. Windows在cmd命令行环境下运行c程序

    现在有许多便利的编译器,例如DevC++,sublime,vscode等等,在这些编译器里面我们添加必要的插件就可以直接运行C语言程序.但是还有一种我们可以采取的普适的运行C程序的方法--在cmd命令 ...

最新文章

  1. 每日算法练习之李白喝酒问题
  2. 基于Solr的HBase多条件查询测试
  3. 一文告诉你 Event Loop 是什么?
  4. thinkphp三级分销小程序源码_山东谷道微信小程序商城源码带后台 公众号平台三级分销系统...
  5. 计算机网络之传输层:2、UDP协议
  6. vue-cli4.3 npm run dev启动报错
  7. opensource项目_生日快乐,Opensource.com:9年
  8. 打算做个单用户博客,引用收藏一下zblog的话
  9. QoS流量监管和流量整形配置实例
  10. 04号团队-团队任务3:每日立会(2018-11-28)
  11. 【数据分析学习】016-numpy数据结构
  12. workbench表头可以是中文_超简单:Python 5步去中国式报表表头
  13. 360加固签名验证_360加固需要签名和密码
  14. c语言网吧计费管理小项目,c语言网吧计费系统小项目.doc
  15. 暗时间--平凡与优秀间的距离
  16. MATLAB篇之层次分析法
  17. Web前端工程师职业方向定位
  18. Bezier曲线构造
  19. Unreal教学(10)——放置Actor (Placing Actors)
  20. Android常用高质量框架

热门文章

  1. 创维E900V22C、E900V22D系列-UWE5621DS芯片语音免拆卡刷固件(当贝桌面)《创维简约开机动画》
  2. 马小看前端( 在开发中遇到问题如何解决 )
  3. PHP开发h5棋牌源码curl用法
  4. 公开我的 星际帝国 辅助程序源代码
  5. 随机排列与八卦太极的联系
  6. 蓝牙(BlueTooth)技术标准
  7. BAPI_PO_CREATE1--单价增大10倍问题
  8. mysql优化面试整理-吊打面试官
  9. mysql 手动写时间_MySQL如何在范围内填写缺失日期?
  10. 【EXCEL】解决因为删除、移动、隐藏行后序号不连续的问题