终于放假了,花了大约一星期的时间来学习王爽老师的《汇编语言》一书,以此提升自己对底层知识的理解,当然,阅读的过程是择重进行的,一些内容不敢说完全掌握。

由于王爽老师的这本书时间比较久了,本文就介绍如何使用dosbox配置8086汇编学习环境

本人的环境:maxOS Catalina 10.15.7

当然了如果是学习汇编现有机器的性能是绝对够的

下载Dosbox

首先搜索dosbox,去官网下一个匹配版本:

https://www.dosbox.com/

由于是dos系统模拟器,所以只有11MB,安装过程可以说没有难点。

修改配置文件

安装完成后,其实就可以启动Dosbox了,不过此时模拟器还没有找到本地的硬盘,显示Z:

我们需要把想要挂载的位置挂载到dosbox上面

比如:~/assembly目录挂载到C盘,这样我们就可以使用了

dos系统下挂载命令如下:

> mount c /Users/dzzhyk/assembly
> c:

这样就把本地的/Users/dzzhyk/assembly目录挂载到了dosbox上的C盘,就可以在dosbox模拟器里面访问本地内容了。

每次启动dosbox都需要执行这两行代码,比较麻烦,因此将这两句话添加到dosbox的启动命令里面,Mac上的具体方法如下:

找到 /Users/dzzhyk/Library/Preferences/DOSBox 0.74-3-3 Preferences 文件,在文件最后添加如下内容:

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c ~/assembly
c:

这样就不用每次都挂载目录到C盘了

获取8086汇编工具

8086汇编工具主要有2个:编译器masm和链接器link,这就是汇编语言从源代码到运行所需要的全部内容。

当然,为了学习方便,还需要一个调试器debug.exe,如果想体验在dos系统下编程的话,还有一个编辑器软件edit.com供你选择,以上共计4件工具,足够我们学习8086汇编知识了。

这些工具的下载,网上各处都是,在此不赘述,也可以使用博主本人提供的下载:

https://download.csdn.net/download/weixin_43826242/14504821

需要知道的dos命令

既然我们要使用dos系统来学习8086汇编,所以需要掌握一点dos系统的基本命令

博主在这里总结一下自己常用到的命令:

命令 作用
dir 列出目录内容,类似于ls
del 删除内容,类似于rm,支持通配符
cd 切换目录
md 建立文件夹
rd 删除文件夹
cls 清屏
copy 复制内容

对于Dos命令,大家只要参考记住就好,毕竟重点不是学习dos系统的使用。

有用的Dosbox快捷键

下面是本人学习过程中用到的的dosbox快捷键,熟练使用会比较方便:

快捷键 作用
Alt + Enter 全屏dosbox,复古的感觉让人年轻了20岁
Ctrl + F4 刷新dosbox挂载的本地目录,用于同步更新(常用)
Ctrl + F10 捕捉/释放鼠标

尝试第一个汇编程序

最后,一起尝试一个简单的汇编程序生命过程,以此验证环境配置:

编辑汇编源文件

无论是使用edit,还是自己新建文件也好,创建测试汇编文件test.asm

内容如下:

assume cs:code
code segment
start:  mov ax,01234Hmov bx,0abcdHadd ax,bx
code ends
end start

编译汇编asm文件

使用编译器masm.exe编译刚创建的汇编文件:

> masm.exe test.asm;

注意,最后有个分号,告诉编译器不产生中间文件,执行快速编译,编译结果如下:

链接汇编obj对象

使用链接器连接生成的OBJ对象:

> link.exe test.obj;

注意,最后有个分号,告诉链接器不产生中间文件,链接完成后就生成了可执行的exe文件:

这里会警告没有设置栈段,对于现在无须理会

使用debug调试exe

执行如下命令,使用debug调试一个汇编程序:

> debug.exe test.exe

回车之后就会进入debug里面,开始对test.exe进行调试:

这里输入r,展示寄存器状态:

可以看到,当前指令停在了我们编写的第一条mov指令上面

输入t单步执行指令,观察AX寄存器变化,可以看到指令正确执行:

继续使用t执行指令,最终得到add指令结果,存放在AX寄存器中:

使用q,退出debug

到此,成功运行了一个简单的汇编程序,也证明我们的8086汇编环境搭建成功了。

常用的debug命令

博主本人总结的debug常用命令:

指令 作用 实例
d 查看内存单元内容 -d 1000:0
r 查看各个寄存器的内容,修改寄存器的值 -r ax 1000
e 修改内存的值 -e 1000:0 41 42 43 44 45
u 以汇编指令的形式查看内存区域 -e 1000:0
t 执行CS:IP指向的指令 -t
a 以汇编指令的形式填充内存区域 -a 1000:0
p 执行通过当前程序段,可以跳出循环 -p
q 退出debug.exe -q
g 执行到某一个内存位置的指令处 -g 0016

配置8086汇编环境相关推荐

  1. VScode配置8086汇编环境

    目录 0.感慨 1.VScode的安装 2.下载MASM/TASM插件 3.测试汇编环境 新建文件 汇编文件配置 汇编代码的运行 0.感慨 搭配一个简单些的环境,对于我们汇编的学习很有帮助,在这里又不 ...

  2. linux8086汇编环境配置,LINUX下面进行8086汇编

    LINUX下面进行8086汇编 我想问的是:LINUX下面使用什么编辑器来编辑汇编源代码?VIM? 编辑完毕之后使用什么来编译和链接? 链接完毕后如何运行? 这里举个例子 比如LINUX下面怎么写C程 ...

  3. 配置汇编环境(王爽)

    配置汇编环境(王爽) 学习王爽的汇编预言时需要用到Debug查看各个寄存器的内容,但是我的是Windos10操作系统没办法在命令行下直接执行Debug命令,后来查找到需要可以通过安装DOSBox来实现 ...

  4. 嵌入式linux运行dosbox,Ubuntu18.04/Linux下安装DosBox进行8086汇编

    在windowsXP等32位系统会自带有debug等汇编调试工具,但是到之后的win7等64位系统之后移除了这个功能,其他系统诸如linux,Mac OS等等则没有,学习汇编,需要用到一些工具及软件, ...

  5. 8086汇编实验(十题可用)

    一.前言 1.这学期学8086汇编,所做的四次实验十个题目(前8手写,后2摘录后修改,时间久远未找到原文链接,愿理解),亲测可用,码住,希望能对将来的读者有所帮助. 2.有的需要在debug中根据段地 ...

  6. window10下搭建汇编环境(软件+资料)

    window10下搭建汇编环境 0x00 软件和资料 软件包含: dosbox debug masm link exe2bin(这个暂时可以忽略) 资料包含: 王爽老师的<汇编语言>第二版 ...

  7. c++ 模板类实现堆栈实验报告_编译原理——小型类C编译器的设计和实现(生成8086汇编代码)之1:问题定义以及总体功能...

    前面花了两篇文章来介绍词法分析和语法分析,接下来才是比较有意思的部分--一个小型类C编译器的设计和实现(其实是编译原理的课程设计啦!~)我用的是python2.7.13+PyQt来做的...事实上,正 ...

  8. DOSBOX搭建汇编环境

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

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

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

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

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

最新文章

  1. 2016年软考网络工程师考试命题范围变化之网络设备配置与复习技巧
  2. mybatis学习(十一)——springmvc++spring+mybatis整合
  3. mysql 命令行执行存储过程_mysql 命令行执行存储过程
  4. vc只能调用matlab子函数,Vc++6.0调用matlab的数学库函数
  5. FFmpeg之获取音视频信息(二十八)
  6. Ubuntu下远程访问MySQL数据库
  7. ajax 循环php数组,使用Jquery,AJAX,PHP和数组进行实时更新
  8. 基于Html5组态软件的竞品分析
  9. CSS3浏览器前缀,背景大小,位置,渐变以及过渡效果
  10. UE4镜头抖动CameraShake
  11. 转胡一虎Blog:父亲是我生命中的永恒
  12. 2021-06-27 cocos2d-x lua 4.0环境搭建
  13. 鸢尾花决策树分类及可视化
  14. 025 导数的四则求导法则之u+v、uv、u/v求导
  15. windows路由表完全掌握(内容:路由表解析,读懂路由表)
  16. 桌面上的IE图标不见了——解决方法
  17. 【python绘图】——删除多余的图例【图示说明】
  18. MS6212可替换TI PCA9306、SGM4553用于开漏模式和推拉模式的 2bit 双向电平转换器
  19. Ubuntu18.04(Bionic)安装CM6.3.1+CDH6.3.2
  20. 华硕n54u mysql_改版华硕[N14U N54U]5G 2G的7620老毛子Padavan固件开启frp教程

热门文章

  1. zzulioj 1038 python 绝对值最大
  2. spring boot添加redis过期策略
  3. Python 转 exe
  4. 分布式数据同步工具之DataX Web的基本使用
  5. 安装 mariadb全套教程
  6. MariaDB 安装
  7. Yoshua Bengio:注意力是“有意识”AI的核心要素
  8. 【51单片机实例教程】智能小车(一)让你的小车跑起来
  9. 证书更新提示,网易漫画等...
  10. mysql存储过程 插数据_mysql 使用存储过程批量插数据