window10下搭建汇编环境


0x00 软件和资料

软件包含:

  • dosbox
  • debug
  • masm
  • link
  • exe2bin(这个暂时可以忽略)

资料包含:

  • 王爽老师的《汇编语言》第二版
  • 《汇编语言》第二版 中的习题答案
  • 汇编语言编程艺术(清晰版)

下载地址:

链接:https://pan.baidu.com/s/17QfCsbvYNwLnUCHIzsluDQ
提取码:i27u

0x01 环境搭建

把软件放在同一个文件夹下,
我的放在D/Debug

  1. 安装dosbox

选择安装目录(最好是自己选择一个目录,方便后面查找

我在D盘创建了一个dosbox文件夹,把它安装在D盘的dosbox下,选择好安装目录后,点击安装即可。

2. 修改dosbox配置文件

安装好dosbox后,
我们相当于有了一个可以运行debug,masm等(我们写的汇编程序也是用这个终端来运行)程序的终端程序(cmd,windows10自带的cmd是运行不了debug,masm。。程序的)。

现在有了可以运行这些程序的cmd,
现在去尝试运行一下debug,
我们要先转到debug程序所在的目录下,
(我的debug程序放在了D/Debug)
在dosbox中输入:

mount D D:/Debug

(mount命令是挂载硬盘或镜像的命令,这条指令我的的理解是:把D/Debug文件夹里的东西在D盘上创建了一个镜像)

回车之后再输入D:
然后回车,就转到了所在目录

再输入debug即可运行debug程序(运行其他程序同理,因为之前我们就把它们放在了同一个目录下):

debug常用命令(不区分大小写)有:

r: 查看,修改 cpu寄存器中的内容;
d:查看内存中的内容
e:改写内存中的内容
u:将机器指令翻译成汇编指令
t:执行下一条汇编指令
a:以汇编的格式在内存中写入一条机器指令(写汇编指令)


其他指令请自行尝试,大胆尝试!(这里并不会损害我们自己的电脑)

这里有一个问题:每次我们打开dosbox,都需要写命令转到需要运行的程序的文件夹然后才能运行程序,很不方便。

我想要的是直接打开dosbox,直接输入程序名即可运行

所以我们就需要修改一下dosbox的配置,
在dosbox安装目录中,找到如下图选中的这个文件

用记事本打开这个文件(双击会默认用记事本打开),
在文件结尾写入并保存

MOUNT D D:\Debug
D:


现在打开dosbox,直接输入程序名就可以运行程序了。

3. 其他
debug:调试程序(数据默认就是十六进制,不需要加h)

masm:编译程序

link:链接程序

dosbox:终端运行程序

对于debug和masm,link这三个程序的切换,
在运行debug的时候,输入quitq可退出运行debug,
从而可以输入其他程序名来运行其他程序.
但是对于masm和link要退出,目前我不知道有什么退出命令,
我的做法是,随便输入一个字母,按几下下回车即可。(或者关闭重新打开dosbox,再输入其他程序名)

0x03 写汇编程序实例

1. 小型汇编程序:

可以用debug写。
(但是一般还是用记事本或Notepad++等编辑软件写好,然后在dosbox下编译链接运行。debug一般都是用来调试的。)

下面用debug写一个简单的程序:


输入u可以查看汇编指令

输入t 即可执行一条汇编指令,然后可以观察寄存器的变化



执行完可以看到AX = 6

2. 比较大型的汇编程序:

用记事本或Notepad++写好,然后在dosbox下编译链接运行.
比如写一个:计算2^8的程序:
在debug,masm,link…所在目录下(这样编译运行的时候就直接可以写文件名,而不用写具体路径)新建文件2_8.asm,
用记事本打开,写入:

 assume cs:codecode segmentmov ax,2mov cx,8s: add ax,axloop smov ax,4c00hint 21hcode endsend

保存。
然后打开dosbox。
编译,输入:

masm 2_8.ASM

(这里是标准的文件,.ASM可以不加文件类型后缀,如果是txt,则需要加上文件类型后缀.txt)
如果要给编译得到的文件重命名则在Object fileName后输入文件名,
否则直接回车,一路回车。

编译后会得到一个.OBJ文件:

链接,输入:

link 2_8

一路回车。。

最终得到了一个可执行文件:2_8.EXE

直接在dosbox中输入:
2_8.EXE执行,执行完成,屏幕并不会显示什么,因为并没有写输出相关的指令(汇编输出有点麻烦,要把16进制结果进行转换,现在就是熟悉一下编程环境)。


现在只能使用debug来追踪程序指令的执行。
输入:

debug 2_8.EXE

输入r,可以查看当前寄存器的情况,
输入u,可以看到我们的汇编指令已经加载入了内存中。
然后就是t,单步执行指令了。

可以使用:g 偏移地址来一跳过我们不想追踪的部分,如下图,
0006之前的已经执行完了,即0006以前的指令看上去“一步就执行完了”.
我们继续输入t,就可以追踪循环部分。

0x04

…汇编输出真TM麻烦(不过,为了 代码了解底层实现 还是需要好好学。。)

来一个简单的“Hello world!”输出吧:



不解释,多看书~

window10下搭建汇编环境(软件+资料)相关推荐

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

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

  2. 《在Win10下使用DOSBox+MASM32工具包搭建汇编环境》

    最近学习汇编需要搭建汇编环境,无奈使用的是Win10平台,搭建过程踩了一些坑,遂将完整的搭建过程在此mark一下,也希望能帮助到需要的人儿~~ 学习汇编其实直接在Win10上搭建个Win XP的虚拟机 ...

  3. zentao怎么卸载linux,linux下搭建ZenTaoPMS项目管理软件

    linux下搭建ZenTaoPMS项目管理软件 简介: 禅道项目管理软件(ZenTaoPMS)是一款国产的,基于LGPL协议,开源免费的项目管理软件,它集产品管理.项目管理.测试管理于一体,同时还包含 ...

  4. kali_vps,debian,Ubuntu下搭建LAMP环境

    文章目录 一.Apache2 web服务器的安装: 更新服务器出现以下问题: 安装Apache: 开启 .关闭和重启Apache服务器: 二.数据库的安装,这里安装MySQL5.7: 三.PHP的安装 ...

  5. 【汇编笔记】win10如何搭建汇编环境(dosbox)

    文章目录 前言 一.下载工具包 二.开始搭建 1.安装DosBox 2.配置工作目录 总结 参考文章 前言 网上教程多且繁杂,且看我一文教会你如何搭建汇编环境. 一.下载工具包 DosBox工具包下载 ...

  6. 在Linux的Eclipse下搭建Android环境

    http://blog.csdn.net/lyonte/article/details/6407242 一.Java环境安装配置 详见<在Linux下搭建Java环境> http://bl ...

  7. php环境苹果搭建,mac下搭建php环境

    本文主要和大家分享mac下搭建php环境,最近工作环境切换到Mac,所以以OS X Yosemite(10.10.1)为例,记录一下从零开始安装Mac下LNMP环境的过程 确保系统已经安装xcode, ...

  8. DOSBOX搭建汇编环境

    DOSBOX搭建汇编环境 下载安装(自行寻找,很多百度网盘有) 按转完成后: 这两个点一个运行即可(区别是前者会打开两个console窗体) 本地安装盘与虚拟c盘挂载 点击之后,进入了txt文本编辑界 ...

  9. 一篇博客带你熟悉Eclipse、AndroidStudio下搭建NDK环境(内有Demo)

    文章目录 一.NDK可以干什么 二.NDK开发环境搭建 三.一个简单的NDK小案例的编写 一.NDK可以干什么 NDK:(Native Development Kit),原生开发工具包是一组可以让您在 ...

最新文章

  1. 一份不错的vue.js基础笔记!!!!
  2. python实现 多叉树 寻找最短路径
  3. 在window 2008 server r2 64位 IIS上配置 apache tomcat 8.0
  4. QTP中字符串替换函数
  5. 【机器学习】集成学习ensemble之随机森林
  6. Pcm设备2M通道,E1的基础知识介绍
  7. axios队列 vue_vue axios全攻略
  8. 19.C++-(=)赋值操作符、初步编写智能指针
  9. 计组之数据运算:11、浮点数的运算
  10. Spring Data Jpa出现“Table ‘XXX.hibernate_sequence‘ doesn‘t exist”
  11. ELJSTLMVC模式
  12. Linux对变量的截取替换
  13. 开发时浏览器缓存问题
  14. tp3.2 URL生成
  15. NSight统计数据的颜色,缩写意义是什么?来自NV Jeff Kiel 比较官方的解释!
  16. 火车头采集伪原创插件
  17. yate怎样调出彩色的log日志实时调试信息
  18. Golang优秀开源项目汇总
  19. 教给大家:怎样给电脑分盘。
  20. 漫画:大鱼吃小鱼,小鱼吃虾米。小鱼为什么不能躲起来?

热门文章

  1. linux ldap客户端工具,OpenLDAP 客户端安装部署
  2. python升级pip怎么出错了_Python,开启吐槽模式,新手必看!
  3. cd rw 多少次_程序员:想知道你每天按了多少次键盘吗?
  4. 首先请与所有现有链接到该网络共享的映射断开连接_嘉兴快速路环线时代来了!这12张主城楼盘片区地图,请收好...
  5. 在Ubuntu 14.04中使SublimeText 3支持中文输入法
  6. 文件上传错误:Error setting expression 'uploadImage' with value '[Ljava.lang.String;@5ff8a691'...
  7. 赞!用Python获取A股行情数据的4种方法
  8. linux权限值前面的d,linux中rwx权限前的c和d都表示什么意思
  9. oracle数据库分层,Oracle数据库的分层查询(一)
  10. 14-爬虫之scrapy框架的基本使用01