DOSBox和MASM汇编开发环境搭建

DOSBox和MASM汇编开发环境搭建

  • [1 安装DOSBox](#1 安装DOSBox)
  • [2 安装MASM](#2 安装MASM)
  • [3 编译测试代码](#3 编译测试代码)
  • [4 运行测试代码](#4 运行测试代码)
  • [5 调试测试代码](#5 调试测试代码)

本文属于《 X86指令基础系列教程》之一,欢迎查看其它文章。

1 安装DOSBox

下载DOSBox和MASM:https://download.csdn.net/download/u011832525/88418043

将DOSBox0.74-3-win32-installer.exe,默认安装到C:\Program Files (x86)\DOSBox-0.74-3。

2 安装MASM

选择工作目录,路径中不要有中文,路径越简单越好,我们这里选择D盘。

因此,将masm32文件夹拷贝到D:/目录下。

然后,运行DOSBox 0.74-3,输入如下命令:

cpp 复制代码
mount C D:/masm32
C:

mount C D:/masm32,表示把D:/masm32的内容挂载到C盘中。

C:,表示进入C盘,也就是进入D:/masm32目录。

3 编译测试代码

在D:/masm32目录下,有一个汇编文件hw.asm,该段代码,主要实现打印一行"hello world!"。如下:

cpp 复制代码
datas segment
	;此处输入数据段代码
	hello db "hello world!",0ah,0dh,'$'
datas ends

stacks segment
	;此处输入堆栈段代码
stacks ends

codes segment
	      assume cs:codes,ds:datas,ss:stacks
	start:
	      mov    ax, datas
	      mov    ds, ax

	      mov    dx, offset hello
	      mov    ah, 09H
	      int    21h

	      mov    ax,4c00h
	      int    21h
codes ends
    end start

输入如下命令,对该文件,进行编译:

cpp 复制代码
masm hw.asm

一路按回车,会出现以下界面,无报错:

输入如下命令,进行链接:

cpp 复制代码
link hw.obj

一路按回车,出现如下界面:

这时候你就会发现,D:/masm32文件夹下,多了两个新文件:hw.obj和hw.exe。

masm会先将伪指令计算出来,然后指令替换为二进制代码,将一个个段打包好放到obj文件里面。

link会将obj文件的一个个段拿出来,按照程序员规定的组合方式进行段组合,确定是否要合并或则颠倒一些顺序,然后生成exe文件。

4 运行测试代码

直接输入,如下内容,运行程序:

cpp 复制代码
hw.exe

程序运行结果,如下所示:

打印出了hello world。

5 调试测试代码

输入如下内容,对程序进行调试:

cpp 复制代码
debug hw.exe

进入调试界面,如下所示:

然后输入t,可以进行单步执行,可以观察各个寄存器值变化,如下所示:

常见的调试命令,含义如下:

  • U [start] [end]:反汇编,从start位置反汇编到end位置
  • T:执行单条命令(逐行执行)
  • A:把符号指令汇编成机器码。(就是将汇编代码转换成机器码,但是A不能编译伪指令)
  • G:运行程序
  • E [地址] [值]:修改内存(地址指向的地方)的值
  • D [地址] [数量]:从地址处开始,显示内存中数量个字节的内容(默认80h个字节)
  • R:显示或则修改寄存器的内容
  • Q:退出debug模式

更多功能可以自行尝试。

相关推荐
txg66641 分钟前
编译无关的漏洞检测:基于 Transformer 的 LLVM-IR 与汇编鲁棒建模
汇编·深度学习·安全·transformer
浩浩测试一下18 小时前
汇编 16位32位64位通用寄存器(逆向分析)
汇编·windows·stm32·单片机·嵌入式硬件·逆向·二进制
浩浩测试一下1 天前
汇编常用的(JCC 串 判断)指令 通用寄存器 标志寄存器 段寄存器(逆向分析)
汇编·通用寄存器·逆向二进制·标志寄存器·段寄存器·串 jcc 常用指令
浩浩测试一下2 天前
汇编 标志位寄存器 (逆向分析 )
c语言·汇编·逆向·windows编程·标志寄存器
浩浩测试一下2 天前
汇编 数组与串指令(逆向分析)
汇编·逆向·二进制·免杀·串指令·汇编数组
浩浩测试一下2 天前
汇编 内联汇编与混合编程 (逆向分析)
汇编·混合编程·windows编程·内联汇编·二进制逆向·c语言混合汇编
浩浩测试一下2 天前
汇编 结构体与宏
汇编··免杀·结构体·windows编程·逆向二进制
浩浩测试一下3 天前
汇编中的JCC指令 (逆向分析)
汇编·逆向·标志位·jcc指令·跳转指令·标志位寄存器
浩浩测试一下3 天前
汇编中的段与段寄存器(大小)段序 (逆向分析)
汇编·逆向·二进制·字节序·windows编程·内存地址排序
浩浩测试一下4 天前
汇编 call与ret 函数与堆栈 (逆向分析)
汇编·push·函数·pop·call·ret·堆栈逆向