------------------------------------ 版权信息 ------------------------------------

此文链接: http://blog.csdn.net/doniexun/article/details/45438457

此文作者: Windness

版权说明: 此文为作者经过检索网上资源及根据个人开发经验整理所得,所有参考文献均已在文末标注,转载请务必保留本文链接及作者信息!

------------------------------------ 版权信息 ------------------------------------

学一门语言,最好的方法便是在实践中学习。对于不少初学者来说,首先要面临的是如何搭建开发平台/环境的问题。由于汇编语言的特殊性,不少初学者会担心自己直接对寄存器进行操作会不会导致系统崩溃或者系统硬件损坏,再加上现如今高级程序设计语言大行其道,真正需要写汇编语言的情境已经不那么多了,所以不少初学汇编语言的同学都还停留在纸上谈兵的状态。

本人初次学习汇编语言已经是五年前,但一直都未亲自实践过,最近工作上需要用到反汇编二进制可执行文件,因此计划重新拾起曾经学过的汇编语言,以便能够顺利完成手头上的项目。以下是搭建基于DOSBOX+MASM32的汇编语言开发环境记录。

1  工具准备

1)下载DOSBOX

工具介绍:DOSBox 是一个 DOS 模拟程序,由于它采用的是 SDL 库,所以可以很方便的移植到其他的平台。目前,DOSBox 已经支持在 Windows、Linux、Mac OS X、BeOS 、palmOS、Android 、webOS、os/2等系统中运行。不少DOS下的游戏都可以直接在该平台上运行。

工具官网:http://www.dosbox.com/

项目主页:http://sourceforge.net/projects/dosbox/

下载链接:http://sourceforge.net/projects/dosbox/files/dosbox/0.74/DOSBox0.74-win32-installer.exe/download(32位)

说明:由于项目已经停更,目前官网上指出,DOSBOX可以运行于32位和64位的Windows Vista和Windows 7之上,根据本人亲测,亦可在32位和64位的Windows 10上运行DOSBOX,因此有需要的童鞋可以试试。

2)下载MASM32

工具介绍:MASM32是国外的MASM爱好者Steve Hutchesson自行整理和编写的一个软件包,目前最高版本为11r版。MASM32并非指Microsoft的MASM宏汇编器,而是包含了不同版本工具组建的汇编开发工具包。它的汇编编译器是MASM6.0以上版本中的Ml.exe,资源编译器是Microsoft Visual Studio中的Rc.exe,32位链接器是Microsoft Visual Studio中的Link.exe,同时包含有其他的一些如Lib.exe和DumpPe.exe等工具。

工具官网:http://www.masm32.com/

下载链接:http://www.masm32.com/downloads

注意:也可以直接下载由参考资料3作者提供的masm工具压缩包,里面包含必要的汇编、链接、调试工具,百度网盘下载链接:https://pan.baidu.com/s/1skL2bVJ,密码:7uv1。

2 安装工具

1)安装DOSBOX

安装下载到的DOSBox0.74-win32-installer.exe,直接一路Next完成安装。

2)配置DOSBOX

创建一个用于保存汇编工具(如MASM、Link、DEBUG等工具)和汇编文件(*.asm)的目录,如:D:\DEBUG。

打开DOSBOX的安装根目录(默认安装路径:C:\Program Files\DOSBox-0.74;若是64位的系统,则默认安装路径:C:\Program Files (x86)\DOSBox-0.74),双击文件DOSBox 0.74 Options.bat,运行该批处理文件后系统会用文本文档Notepad打开配置文件dosbox-0.74.conf。

将光标定位到dosbox-0.74.conf文件的[autoexec]节点(一般在该文件末尾),在文件中添加以下内容:

MOUNT C D:\DEBUG                  # 将目录D:\DEBUG挂载为DOSBOX下的C:
set PATH=$PATH$;D:\DEBUG          # 将D:\DEBUG写入环境变量PATH中

3)安装MASM32

可解压安装下载到的masm32v11r.zip,按默认配置安装即可。

安装结束后,可直接利用masm32v11r中的gedit.exe程序编写、编译和链接asm汇编程序。

注意:MASM32的替代方案:

     可直接从其他电脑或从上述网盘地址提供的压缩包将汇编工具DEBUG.EXE、EDIT.EXE、LINK.EXE、MASM.EXE等工具复制到D:\DEBUG文件夹下(复制时注意不能将32位系统中找到的上述工具复制到64位系统中使用)。

3 样例程序

注意:当进入DOSBOX编辑界面,随意可以按Windows键退出DOSBOX编辑界面;以下命令的拼写忽略大小写。

1)运行DOSBOX,在命令符C:\>下输入命令:EDIT 文件名.asm,启动EDIT.EXE进入代码编辑状态,并输入如下样例程序:

code     segmentassume cs:codestart:mov ax,5hmov bx,6hadd ax,bxmov ah,4ch    ; 调用DOS的4C号功能int 21h       ; 退出DEBUG状态,返回DOS
code    endsend start

2)保存文件后返回DOSBOX的命令行,输入命令:MASM 文件名.asm,生成目标文件文件名.OBJ(生成过程中可以修改目标文件名,直接回车可保持默认目标文件名)。

注意:此时可能生成三个文件:*.obj、*.lst和*.crf文件(Windows10 x64系统可能只会生成*.obj文件)。其中,列表文件*.lst和交叉引用文件非必选,前者是汇编语言汇编的机器语言与汇编语言对照表,可用于调试;后者给出了用户定义的所有符号和对每个符号定义、引用的行号。

3)输入命令:LINK 文件名.OBJ,链接生成可执行文件文件名.EXE。

注意:由于在上述代码中未定义堆栈段,故在链接时会提示:LINK : warning L4021: no stack segment,因不会影响执行文件的生成,故暂时忽略。

另外,此时可能生成两个文件:*.exe和*.map文件(Windows10 x64系统可能只会生成*.exe文件)。其中,地址映射文件*.map给出内存地址分配的有关信息。

4)输入命令:DEBUG 文件名.EXE,在DEBUG的命令提示符“-”出现后开始调试,以下是部分调试命令及截图:

输入命令:R,查看程序运行前的寄存器组初始值;

输入命令:U,查看程序反汇编代码。从反汇编代码中可看出,变量会被汇编为直接寻址方式,使用变量在数据段内的有效地址表示。

输入命令:T,单步调试;

输入命令:D,观察内存变化(D后不带地址或范围,默认显示上一个D命令之后的80字节内容);

输入命令:G 地址,程序从当前位置直接运行到指定地址处停下。

输入命令:E 地址修改内存中的内容,如:E DS:0100,输入空格可逐个字节修改,回车停止修改。

4 参考资料

1)MASM百度百科:http://baike.baidu.com/view/1754206.htm

2)DOSBOX百度百科:http://baike.baidu.com/view/716885.htm

3)Win8下用DOSBox编写汇编语言:http://www.tuicool.com/articles/v2A3mm

Windows10下搭建汇编语言开发环境(利用DOSBOX和MASM32)相关推荐

  1. Windows10 下搭建汇编语言开发环境( 利用 DOSBOX 和 MASM32 )

    Windows10下搭建汇编语言开发环境(利用DOSBOX和MASM32):https://www.cnblogs.com/zyever/p/7919007.html 如何在win10 64位下搭载汇 ...

  2. 搭建汇编语言开发环境总结 利用DOSBox+TASM/MASM

    TASM汇编程序开发环境配置 本文介绍如何在电脑上搭建汇编语言开发环境. 由于汇编语言开发工具TASM和MASM只能在16位系统中使用,目前大多数电脑都是64位的,无法运行它们,所以需要使用模拟器来模 ...

  3. 在Windows环境下搭建Android开发环境

    标题:在Windows环境下搭建 Android 开发环境 作者:CrazyPebble 时间:2011年2月28日 声明:此文在参考其他网上资料以及笔者实践总结写下,一来自己可以做一些总结,二来给跟 ...

  4. ubuntu下搭建android开发环境(转载)

    在ubuntu下搭建android开发环境,准备学习一下android开发. 1.安装JDK        首先到oracle的官网上下载linux版本的JDK(网址为:http://www.orac ...

  5. iis7 mysql_windows 7 下搭建php开发环境(windows7+IIS7+php+mysql)

    首先需要说明的是,基于IIS v6.0/v7.0(2008),可以支持的脚本相当完整,不仅支持Linux无法支持的asp/asp.net,还可以安装php.mysql.zend实现php环境.同时,利 ...

  6. 乐鑫Esp32学习之旅② 巧用eclipes编辑器,官方教程在Windows下搭建esp32开发环境,打印 “Hello World”。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  7. Eclipse下搭建GitHub开发环境

    自从GitHub的强大性被开发者认识到后,越来越多的开发者选择使用GitHub代替SVN来进行开发.本人也不例外,最近开始研究如何使用GitHub来托管自己的代码,下面就开始介绍如何在Eclipse下 ...

  8. windows环境下搭建rabbitMQ开发环境

    2019独角兽企业重金招聘Python工程师标准>>> windows环境下搭建rabbitMQ开发环境 1.下载与安装 erlang rabbitmq 是使用erlang语言开发的 ...

  9. mysql环境搭载后老出错_使用Docker在window10下搭建SWOFT开发环境,mysql连接错误

    使用Docker在window10下搭建SWOFT开发环境,mysql连接错误 { "code": 0, "error": "(Swoft\\Db\\ ...

最新文章

  1. 美团副总裁夏华夏:科技应该为每一个普通人服务,要做“接地气的AI” | MEET2021...
  2. MetaEdit、修改IIS链接人数限制
  3. dotnet中的counters说明(三)
  4. 使用管控策略,设定多账号组织全局访问边界
  5. 三星Galaxy Note10系列带壳渲染图曝光:将取消3.5mm耳机孔
  6. Error: Cannot find module ‘node-sass‘---Node-sass下载
  7. 132.Function Handing 函数
  8. Ubuntu 16.04下安装 PCL简单方法
  9. 02-CSS基础与进阶-day11_2018-09-17-21-35-14
  10. X明X源面试题《三》
  11. 《Android框架揭秘》——2.1节主机环境构成
  12. ora-01033 解决方法
  13. uni-app前端解密微信小程序手机号加密数据
  14. (附源码)springboot大学医学生毕业实习分配系统 毕业设计212 002
  15. 伪漫迷用数据假装看了一遍《复联4》
  16. 利用栈进行数制转换和括号匹配(C语言)
  17. 微信小程序直播功能来了,然后呢?
  18. easyuefi只能在基于uefi启动的_只需2个命令,就能将win10 BIOS启动方式转换为UEFI,你见过吗!...
  19. 准确率-召回率 - Precision-Recall
  20. QT undefined reference to `xxxr,缺失系统库的解决方案

热门文章

  1. 打造工业互联网平台为传统制造企业转型升级赋能
  2. Windows主机漏洞扫描工具
  3. 2017年,那些冷门却逆天的APP应用
  4. 百度地图绘制地区的棱柱效果-定位-自定义点-文本标记-信息弹窗
  5. 疯狂的折叠屏!不买折叠手机的 5 个理由
  6. Redash案例之—党建
  7. vue3+ts+pinia智慧党建模板
  8. C语言——判断矩阵维数(sizeof、_msize)
  9. 蓝桥杯625特殊数C语言
  10. COLMO三周年,美的拿下高端品类了吗?