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模式

更多功能可以自行尝试。

相关推荐
猫猫的小茶馆3 小时前
【Linux 驱动开发】一. 搭建开发环境
linux·汇编·arm开发·驱动开发·stm32·嵌入式硬件·mcu
猫猫的小茶馆4 小时前
【Linux 驱动开发】二. linux内核模块
linux·汇编·arm开发·驱动开发·stm32·嵌入式硬件·架构
切糕师学AI21 小时前
ARM 中的 SVC 监管调用(Supervisor Call)
linux·c语言·汇编·arm开发
ベadvance courageouslyミ1 天前
硬件基础中断
汇编·硬件·中断
你爱写程序吗(新H)1 天前
基于单片机的洗衣机控制系统设计 单片机洗衣机控制(设计+文档)
c语言·汇编·单片机·嵌入式硬件·matlab
VekiSon2 天前
ARM架构——用汇编语言点亮 LED
汇编·arm开发·嵌入式硬件
JJCar3 天前
汇编文字池(literal pool)
汇编·文字池·literal pool
乾复道3 天前
巧用终端,每天节省2小时
汇编·经验分享·vim
2501_927773074 天前
嵌入式——汇编语言1
汇编
山峰哥4 天前
数据库工程核心:SQL调优让查询效率飙升的实战密码
网络·汇编·数据库·sql·编辑器