window10下搭建汇编环境(软件+资料)
window10下搭建汇编环境
0x00 软件和资料
软件包含:
- dosbox
- debug
- masm
- link
- exe2bin(这个暂时可以忽略)
资料包含:
- 王爽老师的《汇编语言》第二版
- 《汇编语言》第二版 中的习题答案
- 汇编语言编程艺术(清晰版)
下载地址:
链接:https://pan.baidu.com/s/17QfCsbvYNwLnUCHIzsluDQ
提取码:i27u
0x01 环境搭建
把软件放在同一个文件夹下,
我的放在D/Debug下
- 安装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的时候,输入quit
或q
可退出运行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下搭建汇编环境(软件+资料)相关推荐
- mysql环境搭载后老出错_使用Docker在window10下搭建SWOFT开发环境,mysql连接错误
使用Docker在window10下搭建SWOFT开发环境,mysql连接错误 { "code": 0, "error": "(Swoft\\Db\\ ...
- 《在Win10下使用DOSBox+MASM32工具包搭建汇编环境》
最近学习汇编需要搭建汇编环境,无奈使用的是Win10平台,搭建过程踩了一些坑,遂将完整的搭建过程在此mark一下,也希望能帮助到需要的人儿~~ 学习汇编其实直接在Win10上搭建个Win XP的虚拟机 ...
- zentao怎么卸载linux,linux下搭建ZenTaoPMS项目管理软件
linux下搭建ZenTaoPMS项目管理软件 简介: 禅道项目管理软件(ZenTaoPMS)是一款国产的,基于LGPL协议,开源免费的项目管理软件,它集产品管理.项目管理.测试管理于一体,同时还包含 ...
- kali_vps,debian,Ubuntu下搭建LAMP环境
文章目录 一.Apache2 web服务器的安装: 更新服务器出现以下问题: 安装Apache: 开启 .关闭和重启Apache服务器: 二.数据库的安装,这里安装MySQL5.7: 三.PHP的安装 ...
- 【汇编笔记】win10如何搭建汇编环境(dosbox)
文章目录 前言 一.下载工具包 二.开始搭建 1.安装DosBox 2.配置工作目录 总结 参考文章 前言 网上教程多且繁杂,且看我一文教会你如何搭建汇编环境. 一.下载工具包 DosBox工具包下载 ...
- 在Linux的Eclipse下搭建Android环境
http://blog.csdn.net/lyonte/article/details/6407242 一.Java环境安装配置 详见<在Linux下搭建Java环境> http://bl ...
- php环境苹果搭建,mac下搭建php环境
本文主要和大家分享mac下搭建php环境,最近工作环境切换到Mac,所以以OS X Yosemite(10.10.1)为例,记录一下从零开始安装Mac下LNMP环境的过程 确保系统已经安装xcode, ...
- DOSBOX搭建汇编环境
DOSBOX搭建汇编环境 下载安装(自行寻找,很多百度网盘有) 按转完成后: 这两个点一个运行即可(区别是前者会打开两个console窗体) 本地安装盘与虚拟c盘挂载 点击之后,进入了txt文本编辑界 ...
- 一篇博客带你熟悉Eclipse、AndroidStudio下搭建NDK环境(内有Demo)
文章目录 一.NDK可以干什么 二.NDK开发环境搭建 三.一个简单的NDK小案例的编写 一.NDK可以干什么 NDK:(Native Development Kit),原生开发工具包是一组可以让您在 ...
最新文章
- 一份不错的vue.js基础笔记!!!!
- python实现 多叉树 寻找最短路径
- 在window 2008 server r2 64位 IIS上配置 apache tomcat 8.0
- QTP中字符串替换函数
- 【机器学习】集成学习ensemble之随机森林
- Pcm设备2M通道,E1的基础知识介绍
- axios队列 vue_vue axios全攻略
- 19.C++-(=)赋值操作符、初步编写智能指针
- 计组之数据运算:11、浮点数的运算
- Spring Data Jpa出现“Table ‘XXX.hibernate_sequence‘ doesn‘t exist”
- ELJSTLMVC模式
- Linux对变量的截取替换
- 开发时浏览器缓存问题
- tp3.2 URL生成
- NSight统计数据的颜色,缩写意义是什么?来自NV Jeff Kiel 比较官方的解释!
- 火车头采集伪原创插件
- yate怎样调出彩色的log日志实时调试信息
- Golang优秀开源项目汇总
- 教给大家:怎样给电脑分盘。
- 漫画:大鱼吃小鱼,小鱼吃虾米。小鱼为什么不能躲起来?
热门文章
- linux ldap客户端工具,OpenLDAP 客户端安装部署
- python升级pip怎么出错了_Python,开启吐槽模式,新手必看!
- cd rw 多少次_程序员:想知道你每天按了多少次键盘吗?
- 首先请与所有现有链接到该网络共享的映射断开连接_嘉兴快速路环线时代来了!这12张主城楼盘片区地图,请收好...
- 在Ubuntu 14.04中使SublimeText 3支持中文输入法
- 文件上传错误:Error setting expression 'uploadImage' with value '[Ljava.lang.String;@5ff8a691'...
- 赞!用Python获取A股行情数据的4种方法
- linux权限值前面的d,linux中rwx权限前的c和d都表示什么意思
- oracle数据库分层,Oracle数据库的分层查询(一)
- 14-爬虫之scrapy框架的基本使用01