【汇编语言/底层开发】4、使用masm编译、链接汇编源文件

简介: 0、准备工作: 由于现在我们的操作系统通常都是win7或者win8,所以要运行masm需要做一些准备工作。这里只简单描述一下过程,详细的请搜索这篇文章《Win7(64位)下使用MASM和DEBUG方法》。

0、准备工作:

由于现在我们的操作系统通常都是win7或者win8,所以要运行masm需要做一些准备工作。这里只简单描述一下过程,详细的请搜索这篇文章《Win7(64位)下使用MASM和DEBUG方法》。

首先创建一个目录,这里假设为e:\asm,并且这个目录里要包含下图中的几个文件:


安装dosbox,执行:mount c: e:asm。完成后,切换到C:目录,即到达我们建立的这个e:\asm目录下。

1、编辑汇编代码:

新建一个文本文件,文件名修改为31.asm,文件内容输入以下汇编代码:

assume cs:codeseg

codeseg segment
	mov ax, 2000H
	mov ss, ax
	mov sp, 0
	add sp, 10
	pop ax
	pop bx
	push ax
	push bx
	pop ax
	pop bx
	
	mov ax, 4c00H
	int 21H
codeseg ends
end
保存,至此代码编辑工作完成。

2、汇编代码的编译

编译工作很简单,由于编译目录和环境都已经准备好,只需要一条命令即可完成:

masm 31.asm

该命令执行完成后,工作目录下便出现了目标文件31.OBJ。

3、代码的链接、生成可执行文件

与编译类似,链接只需要一条命令:

link 31.obj

结束后,工作目录下可以找到可执行文件31.exe

目录
相关文章
|
1月前
|
存储 自然语言处理 编译器
编译和链接(翻译环境:预编译+编译+汇编+链接​、运行环境)
编译和链接(翻译环境:预编译+编译+汇编+链接​、运行环境)
|
8月前
|
存储 安全 编译器
5.10 汇编语言:汇编过程与结构
过程的实现离不开堆栈的应用,堆栈是一种后进先出`(LIFO)`的数据结构,最后压入栈的值总是最先被弹出,而新数值在执行压栈时总是被压入到栈的最顶端,栈主要功能是暂时存放数据和地址,通常用来保护断点和现场。栈是由`CPU`管理的线性内存数组,它使用两个寄存器`(SS和ESP)`来保存栈的状态,SS寄存器存放段选择符,而ESP寄存器的值通常是指向特定位置的一个32位偏移值,我们很少需要直接操作ESP寄存器,相反的ESP寄存器总是由`CALL,RET,PUSH,POP`等这类指令间接性的修改。
42 0
|
8月前
|
存储 编译器 C语言
5.6 汇编语言:汇编高效数组寻址
数组和指针都是用来处理内存地址的操作,二者在C语言中可以互换使用。数组是相同数据类型的一组集合,这些数据在内存中是连续存储的,在C语言中可以定义一维、二维、甚至多维数组。多维数组在内存中也是连续存储的,只是数据的组织方式不同。在汇编语言中,实现多维数组的寻址方式相对于C语言来说稍显复杂,但仍然可行。下面介绍一些常用的汇编语言方式来实现多维数组的寻址。
95 0
|
3月前
|
存储 缓存 Linux
C语言编译过程——预处理、编译汇编和链接详解
C语言编译过程——预处理、编译汇编和链接详解
|
8月前
|
存储 算法 编译器
5.8 汇编语言:汇编高效除法运算
通常情况下计算除法会使用`div/idiv`这两条指令,该指令分别用于计算无符号和有符号除法运算,但除法运算所需要耗费的时间非常多,大概需要比乘法运算多消耗10倍的CPU时钟,在Debug模式下,除法运算不会被优化,但Release模式下,除法运算指令会被特定的算法经过优化后转化为为乘法,这样就可以提高除法运算的效率。
64 0
|
8月前
|
编译器
5.7 汇编语言:汇编高效乘法运算
乘法指令是一种在CPU中实现的基本算术操作,用于计算两个数的乘积。在汇编语言中,乘法指令通常是通过`mul(无符号乘法)`和`imul(有符号乘法)`这两个指令实现的。由于乘法指令在执行时所消耗的时钟周期较多,所以编译器在优化代码时通常会尝试将乘法操作转换为更高效的加法、和移位操作。
94 0
|
11月前
【8086汇编】《汇编语言(第三版)》实验一
需要用到的指令✨✨ 查看、修改CPU中寄存器的内容:R命令 查看内存中的内容:D命令 修改内存中的内容:E命令(可以写入数据、指令,在内存中,它们实际上没有区别) 将内存中的内容解释为机器指令和对应的汇编指令:U命令 执行CS:IP指向的内存单元处的指令:T命令 以汇编指令的形式向内存中写入指令:A命令
|
11月前
|
C语言
进阶C语言 第七章-------《程序的编译(预处理操作)+链接》 (预编译、编译、汇编、#define、条件编译,#include的包含)知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(三)
进阶C语言 第七章-------《程序的编译(预处理操作)+链接》 (预编译、编译、汇编、#define、条件编译,#include的包含)知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(三)
|
11月前
|
存储 Java C++
汇编语言、寄存器分类及程序计数器
汇编语言、寄存器分类及程序计数器
86 0
|
11月前
|
编译器 C语言
进阶C语言 第七章-------《程序的编译(预处理操作)+链接》 (预编译、编译、汇编、#define、条件编译,#include的包含)知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(二)
进阶C语言 第七章-------《程序的编译(预处理操作)+链接》 (预编译、编译、汇编、#define、条件编译,#include的包含)知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(二)