win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)

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

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

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

准备工作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/

汇编工具截图

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(1)

安装教程1.安装DOSBox

双击运行DOSBox安装程序

点击next

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(2)

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

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

2.创建工作目录

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

我的是在D:/DOSBox/debug

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(3)

将汇编工具放入MASM文件夹

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(4)

3.挂载工作目录

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(5)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(6)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(7)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(8)

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

MOUNT F D:\DOSBox\Debugset PATH=%PATH%;F:\MASM;F:cd F:\ASMcls

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(9)

命令解释:

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

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(10)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(11)

注意:不进行此种配置的话,每次打开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里面)

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(12)

调整窗口大小

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

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(13)

windowresolution=originaloutput=surface

改为

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

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(14)

保存后,重启DOSBox生效

创建并编辑文件

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

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

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

edit test.asm

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(15)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(16)

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

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

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

datas segmentbuf db'Hello, World!$'datas endsstacks segment stackdb 200 dup(0)stacks endscodes segmentassume CS:codes,ds:datas,ss:stacksstart:mov ax,datasmov ds,axmov dx,seg buflea dx,bufmov ah,09hint 21hmov ah,4chint 21hcodes endsend start

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(17)

之后重命名为test.asm

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(18)

编译调试

打开DOSBox输入下面命令

masm test.asm

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

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(19)

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(20)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(21)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(22)

打开ASM文件夹查看如下

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(23)

继续输入命令

link test.obj

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(24)

运行完毕,查看ASM文件夹

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(25)

继续执行下列命令

debug test.exe

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(26)

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寄存器的内容

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(27)

标识名

置位

复位

溢出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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(28)

改变CPU寄存器的内容改变ax的值

直接回车退出修改

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(29)

改变CS:IP的值

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(30)

D命令

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

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(31)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(32)

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

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(33)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(34)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(35)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(36)

E命令

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(37)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(38)

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

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(39)

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(40)

用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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(41)

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

U命令

对机器代码反汇编显示

按地址反汇编

u 地址

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

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(42)

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(43)

按范围反汇编

u 范围

T命令?命令

输入?查看更多命令

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(44)

结果如下:

win10怎么编写汇编语言(Windows10下搭建汇编语言开发环境)(45)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页