您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

Windows10下搭建汇编语言开发环境

时间:2022-03-28 14:12:49  来源:  作者:陌上断肠

前言

本学期学校安排有汇编语言这门课,需要自己搭建汇编语言开发环境,特此写下本文记录搭建过程.

关于搭建汇编语言开发环境的教程,我也找了许多,可看下来却依旧一头雾水,经过本人摸索,同时结合网上教程,欲写下这篇易懂的文章.

准备工作

1.下载DOSBox

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

工具官网:DOSBox, an x86 emulator with DOS

项目主页:
https://sourceforge.NET/projects/dosbox/

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

下载链接2(这个是我下载好的,可能会快一点):
https://idefun.lanzoux.com/i4TQgm4zjkf/

2.下载汇编工具包

下载链接:
https://idefun.lanzoux.com/i4TQgm4zjkf/

汇编工具截图

Windows10下搭建汇编语言开发环境

 

安装教程

1.安装DOSBox

双击运行DOSBox安装程序

点击next

Windows10下搭建汇编语言开发环境

 

选择安装位置(我选择都是D:DOSBox)然后点击install即可

安装位置要记得,后面要用

2.创建工作目录

安装完毕创建一个工作目录(目录位置及目录名可自定义)

我的是在D:/DOSBox/Debug

之后再在Debug下创建两个文件夹ASM(放自己写的汇编程序)和MASM(放汇编工具)

Windows10下搭建汇编语言开发环境

 

将汇编工具放入MASM文件夹

Windows10下搭建汇编语言开发环境

 

3.挂载工作目录

打开DOSBox安装目录(我的在D:DOSBox)

Windows10下搭建汇编语言开发环境

 

打开后找到DOSBox 0.74 Options.bat这个批处理文件

Windows10下搭建汇编语言开发环境

 

直接双击运行会出现一个记事本

Windows10下搭建汇编语言开发环境

 

使用快捷键Ctrl+F查找其中的[autoexec]部分(一般在文件末尾)

Windows10下搭建汇编语言开发环境

 

在文件中添加下列内容并保存

MOUNT F D:DOSBoxDebug
set PATH=%PATH%;F:MASM;
F:
cd F:ASM
cls

Windows10下搭建汇编语言开发环境

 

命令解释:

#挂载工作目录挂载到虚拟盘符F(虚拟盘符可自定义,命令不区分大小写)
MOUNT F D:DOSBoxDebug
#添加系统临时变量(此时的F代表的是D:DOSBoxDebug)
set PATH=%PATH%;F:MASM;
#转到F盘符
F:
#切换到F:ASM目录
cd F:ASM
#执行一次清屏
cls

如果不加cls,打开会是这样

Windows10下搭建汇编语言开发环境

 

加上cls,打开会是这样(我觉得更美观,依个人喜好)

Windows10下搭建汇编语言开发环境

 

注意:不进行此种配置的话,每次打开DOSBox是需要手动输入上述命令,非常麻烦

使用说明

DOSBox常用快捷键

快捷键

作用

Alt+Enter

切换全屏

Ctr+F1

改变键盘映射

Alt+Pause

暂停模拟

Ctrl+Alt+F5

开始/停止录制视频

Ctrl+F4

交换挂载的磁盘映像,也就是更新磁盘文件

Ctrl+F5

截图

Ctrl+F6

开始/停止录制声音

Ctrl+F7

减少跳帧

Ctrl+F8

增加跳帧

Ctrl+F9

关闭DOSBOX

Ctrl+F10

捕捉/释放鼠标

Ctrl+F11

模拟减速

Ctrl+F12

加速模拟

Alt+F12

不锁定速

注意:以上快捷键我并没有全部测试,更多详细信息参见README.txt(在DOSBox安装目录中的Documentation里面)

Windows10下搭建汇编语言开发环境

 

调整窗口大小

初始的界面很小,且不能直接拉伸界面,所以有需要的可以按照下面的方法调整一下
双击打开DOSBox 0.74 Options.bat

使用快捷键Ctrl+F查找windowresolution字段

Windows10下搭建汇编语言开发环境

 

windowresolution=original
output=surface

改为

windowresolution=800x500 #800x500为自定义大小,可修改
output=opengl

注意:不用删除原来的语句,在前面加上#注释掉即可

Windows10下搭建汇编语言开发环境

 

保存后,重启DOSBox生效

创建并编辑文件

关于创建并编辑文件,如果你的工作目录(挂载的目录)有EDIT.COM文件(我提供的汇编工具包中有),那么你就可以在DOSBox中创建并编辑文件,如果没有请使用我提供的工具包或者耐心往下看.

使用DOSBox创建并编辑文件(不推荐)

打开DOSBox使用下面命令创建并编辑test.asm文件

edit test.asm

Windows10下搭建汇编语言开发环境

 

回车后进入下面界面即可进行编辑(注意:鼠标箭头只能在编辑器里活动,想将鼠标退出来的话可以用Ctrl+F10组合键退出)

Windows10下搭建汇编语言开发环境

 

使用记事本创建并编辑文件(其他编辑器也可以)

下面以此种方式创建test.asm文件

新建文本文档,将下面代码复制到里面并保存

datas segment
buf db'Hello, World!$'
datas ends
stacks segment stack
db 200 dup(0)
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
mov dx,seg buf
lea dx,buf
mov ah,09h
int 21h
mov ah,4ch
int 21h
codes ends
end start

Windows10下搭建汇编语言开发环境

 

之后重命名为test.asm

Windows10下搭建汇编语言开发环境

 

编译调试

打开DOSBox输入下面命令

masm test.asm

回车后会询问文件名,建议直接回车

编译程序提示输入交叉引用文件的名称,这个文件同列表文件一样,是编译器将源程序编译为目标文件过程中产生的中间结果.可以让编译器不生成这个文件,直接按Enter键即可

Windows10下搭建汇编语言开发环境

 


Windows10下搭建汇编语言开发环境

 

可以像上图一样分别输入文件名,打开ASM查看如下

Windows10下搭建汇编语言开发环境

 

本文全部默认即不分别输入文件名直接回车

Windows10下搭建汇编语言开发环境

 

打开ASM文件夹查看如下

Windows10下搭建汇编语言开发环境

 

继续输入命令

link test.obj

Windows10下搭建汇编语言开发环境

 

运行完毕,查看ASM文件夹

Windows10下搭建汇编语言开发环境

 

继续执行下列命令

debug test.exe

Windows10下搭建汇编语言开发环境

 

debug的简单使用

debug是Dos、windows提供的实模式(8086方式)程序的调试工具

  • 可以查看CPU各种寄存器的内容
  • 可以查看内存的情况
  • 可以在机器码级别跟踪程序的运行

命令

作用

R命令

查看、改变CPU寄存器的内容

D命令

查看内存中的内容(机器指令形式)(16进制显示)

E命令

改写内存中的内容,即提供指令(使用机器指令),用得比较少,多为A命令

U命令

查看内存中的内容(将机器指令形式转换为汇编指令的形式)(反编译)

T命令

执行一条汇编(机器)指令(就是执行当前指令缓冲器中的指令)

A命令

相比较E,使用汇编指令进行内存修改——向内存提供机器指令

P命令

在遇到汇编指令为int xx 时,使用p指令结束(否则CPU会指向一个
未知的地址段)

G命令

执行完exe运行结果显示

Q命令

退出debug

?命令

查看指令帮助

R命令

查看CPU寄存器的内容

Windows10下搭建汇编语言开发环境

 

标识名

置位

复位

溢出Overflow(是否)

OV

NV

向Direction(减量/增量)

DN

UP

中断Interrupt(允许/屏蔽)

EI

DI

符号Sign(负正)

NG

PL

零Zero(是否)

ZR

NZ

辅助进位Auxiliary Carry(是否)

AC

NA

奇偶Parity(偶奇)

PE

PO

进位Carry(是否)

CY

NC

改变标志位的值

rf

Windows10下搭建汇编语言开发环境

 

改变CPU寄存器的内容

改变ax的值

直接回车退出修改

Windows10下搭建汇编语言开发环境

 

改变CS:IP的值

Windows10下搭建汇编语言开发环境

 

D命令

使用D命令,debug将输出3部分内容:

  1. 中间是从指定地址开始的128个内存单元的内容,用16进制的格式输出,每行的输出从16的整数倍的地址开始,最多输出16个单元的内容.注意在每行的中间有一个"-",它将每行的输出分为两部分,这样便于查看
  2. 左边是每行的起始地址
  3. 右边是每个内存单元中的数据对应的可显示的ASCII码字符.若没有对应可显示的ASCII字符,debug就用"."来代替
Windows10下搭建汇编语言开发环境

 

在一进入debug后,用D命令直接查看,将列出debug预设的地址处的内容

Windows10下搭建汇编语言开发环境

 

使用d 段地址:偏移地址查看(以d 1000:0为例)

格式:d 段地址:偏移地址
使用"d 段地址:偏移地址"的格式来查看,debug将列出从指定内存单元开始的128个内存单元的内容

Windows10下搭建汇编语言开发环境

 

在使用"d 段地址:偏移地址"之后,接着使用D命令,可列出后续的内容

Windows10下搭建汇编语言开发环境

 

也可以指定D命令的查看范围,此时采用"d 段地址:起始偏移地址 结尾偏移地址"的格式

Windows10下搭建汇编语言开发环境

 

若输入的地址不是16的倍数,则输出效果是这样的

Windows10下搭建汇编语言开发环境

 

E命令

将内存1000:0-1000:9单元中的内容分别写为0、1、2、3....、9,可以用"e 段地址:起始地址 数据 数据 数据 ……"的格式来进行

Windows10下搭建汇编语言开发环境

 

用E命令以提问的方式来逐个地修改从某一地址开始的内存单元中的内容

Windows10下搭建汇编语言开发环境

 

  • 红色部分为用户输入的修改的数据,到了某一内存单元的时候,可以选择修改(输入要修改的数值),也可以选择不修改(直接按空格),处理完一个内存单元之后,按空格,继续处理下一个内存单元;全部都处理完毕之后,按enter

可以用E命令向内存中写入字符

Windows10下搭建汇编语言开发环境

 

也可以用E命令向内存中写入字符串

Windows10下搭建汇编语言开发环境

 

用E命令向内存中写入机器码,用T命令执行内存中的机器码

e 1000:0 b8 01 00 b9 02 00 01 c8

机器码

对应的汇编指令

b80100

mov ax,0001

b90200

mov cx,0002

01c8

add ax,cx


Windows10下搭建汇编语言开发环境

 

用E命令向从1000:0开始的内存单元中写入了8个字节的机器码
用D命令查看内存1000:0~1000:1f中的数据(从数据的角度看一下写入的内容)
用U命令查看从1000:0开始的内存单元中的机器指令和他们所对应的汇编指令

U命令

对机器代码反汇编显示

按地址反汇编

u 地址

该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一个指令的下一个单元开始显示32个字节

Windows10下搭建汇编语言开发环境

 


Windows10下搭建汇编语言开发环境

 

按范围反汇编

u 范围

T命令

?命令

输入?查看更多命令

Windows10下搭建汇编语言开发环境

 

结果如下:

Windows10下搭建汇编语言开发环境

 



Tags:开发环境   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
告别Node.js版本困扰,轻松切换开发环境!
最近,在下载别人的开源项目进行学习的时候,总是因为 Node 环境问题导致没法依赖无法正常安装,因为人家开源项目限制了一定要高于某个版本,差点劝退了我。Node版本限制因为平时偶...【详细内容】
2023-11-08  Search: 开发环境  点击:(277)  评论:(0)  加入收藏
C++基础-常用的开发环境
在学习和使用C++编程语言时,选择一个合适的开发环境是非常重要的。一个好的开发环境可以提供友好的编辑器、强大的调试功能和丰富的插件扩展,从而提高我们的工作效率。本文将...【详细内容】
2023-08-28  Search: 开发环境  点击:(360)  评论:(0)  加入收藏
构建C语言开发环境
有些C/C++项目开发周期极长。在处理此类项目过程中,构建开发环境就像施展魔法一样:测试框架被巧妙集成在一起,CI/CD流程将开发者从繁琐重复的工作中解脱出来。作为程序员,在开发...【详细内容】
2023-08-18  Search: 开发环境  点击:(284)  评论:(0)  加入收藏
谷歌发布 AI 代码编辑器 IDX:借助云虚拟机简化开发环境配置
IT之家 8 月 9 日消息,谷歌今天揭开了“Project IDX”项目的面纱,官宣这是一款融合了 AI 技术的代码编辑器。IT之家援引谷歌项目描述,官方表示开发人员当前面临的一个痛点就是,...【详细内容】
2023-08-09  Search: 开发环境  点击:(338)  评论:(0)  加入收藏
怎么配置Python开发环境以及测试
首先,你需要下载Python的安装包,根据你的操作系统选择合适的安装包下载并安装,青咖汇Python创造者给大家来详细解读!1安装完成后,打开命令行工具(Windows系统可以使用命令提示符,Ma...【详细内容】
2023-07-28  Search: 开发环境  点击:(216)  评论:(0)  加入收藏
使用 Docker Compose 一键安装 novel 项目的开发环境
背景novel 项目的技术栈比较多,很多同学都曾经向我反映过安装完全部环境需要花大量时间,甚至有的小伙伴可能嫌麻烦就直接放弃了,为了解决这个问题,今天花了好几个小时整了个一键...【详细内容】
2023-03-31  Search: 开发环境  点击:(333)  评论:(0)  加入收藏
微软集成开发环境Visual Studio 2022 17.5正式发布
IT之家 2 月 22 日消息,微软集成开发环境(IDE)工具 Visual Studio 2022 于今天发布了 17.5 正式版更新,适用于 Windows 和 macOS 平台的版本已开放下载。Visual Studio 2022 17....【详细内容】
2023-02-22  Search: 开发环境  点击:(166)  评论:(0)  加入收藏
macOS版Java8开发环境搭建(基于Intel x86 64-bit)
日常办公和软件开发除了可以使用Windows系统以外,还可以使用macOS系统,至于具体使用什么系统取决于你入职公司之后公司给你发的什么电脑,如果是MacBookPro那么就使用macOS开...【详细内容】
2022-12-23  Search: 开发环境  点击:(316)  评论:(0)  加入收藏
搭建Linux C语言开发环境
在Linux开发环境上学习C语言,对于一个从零开始学习嵌入式的门外汉来说,是一个很好的选择,学习了C语言,又熟悉了Linux 操作系统。1. 开发工具下载及安装:虚拟机 VMware 10下载地址...【详细内容】
2022-11-10  Search: 开发环境  点击:(385)  评论:(0)  加入收藏
在Windows上安装Python开发环境
我知道我的绝大多数订阅者都是使用Windows操作系统的,别的操作系统应该使用的很少,如果有,比如Linux使用者,我不用写,他们自己能搞定安装问题。在开始我们的正式编程之前,我们先...【详细内容】
2022-10-18  Search: 开发环境  点击:(452)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(1)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(1)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(13)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(14)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
站内最新
站内热门
站内头条