【汇编语言】第一个程序(一)—— 一个源程序从写出到执行的过程

server/2024/10/23 12:17:44/

在这里插入图片描述

文章目录

  • 前言
  • 1. 第一步:编写汇编源程序
  • 2. 第二步:对源程序进行编译连接
  • 3. 第三步:执行可执行文件中的程序
  • 结语

前言

📌

汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原理,提升代码效率,尤其在嵌入式系统和性能优化方面有重要作用。此外,它在逆向工程和安全领域不可或缺,帮助分析软件运行机制并增强漏洞修复能力。

本专栏的汇编语言学习章节主要是依据王爽老师的《汇编语言》来写的,和书中一样为了使学习的过程容易展开,我们采用以8086CPU为中央处理器的PC机来进行学习。

在这一章节的内容学习中,我们终于可以编写一个完整的汇编程序了,我们以前都是在Debug中写一些指令,在Debug中执行。现在我们将开始编写完整的汇编语言程序,用编译和连接将它们编译连接成为可执行文件(如:*.exe文件),在操作系统中运行。

一个汇编语言程序从写出到最终执行的简要过程:

在这里插入图片描述

1. 第一步:编写汇编源程序

使用文本编辑器(如记事本、Nodepad++、UltraEdit等),用汇编语言编写汇编源程序。

在这里插入图片描述

这一步工作的结果是产生了一个存储源程序的文本文件。

2. 第二步:对源程序进行编译连接

使用汇编语言编译程序(MASM.EXE)对源程序文件中的源程序进行编译,产生目标文件;

再用连接程序(LINK.EXE)对目标文件进行连接,生成可在操作系统中直接运行的可执行文件。

可执行文件中包含两部分内容:

  • 程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)
  • 相关的描述信息(比如:程序有多大、要占多少内存空间等)

3. 第三步:执行可执行文件中的程序

在操作系统中,执行可执行文件中的程序。

操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如:设置CS:IP指向第一条要执行的指令),然后由CPU执行程序。

完整的执行过程

在这里插入图片描述

结语

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下。

也可以点点关注,避免以后找不到我哦!

Crossoads主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的动力!
在这里插入图片描述


http://www.ppmy.cn/server/134170.html

相关文章

Mac中安装以及配置adb环境

一、adb介绍 Android 调试桥 (Android Debug Bridge) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。adb 提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。…

代码随想录算法训练营第二十三天|Day23 回溯算法

39. 组合总和 题目链接/文章讲解:https://programmercarl.com/0039.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.html 视频讲解:https://www.bilibili.com/video/BV1KT4y1M7HJ 思路 int* path; int pathTop; int** ans; int ansTop; int* length; void backT…

sentinel原理源码分析系列(五)-构建调用链路

上节分析构建插槽链,Sentinel的资源调用好比一个个连续的检查口,能否通过,使用检查规则和统计指标,本章开始分析插槽,首先分析构建调用链路的两个插槽 构建调用链路 构建调用链路为指标统计搭建好结构,调…

git基础操作步骤

第一种情况: 对方已经建立了个空的仓库,我们复制其url到要提交的项目文件下,输入cmd, 首先 git config --global user.email “youexample.com” git config --global user.name “Your Name” 然后 git init git add . git com…

构建后端为etcd的CoreDNS的容器集群(一)、生成自签名证书

笔者拟使用官方的etcd和CoreDNS容器镜像生成带自签名的分布式DNS容器集群。按计划需做生成自签名证书、部署etcd集群、配置CoreDNS以使用etcd作为后端共三步,本文为第一步。 一、生成自签名证书 1、准备CFSSL工具 官网下载: [rootlocalhost ~]# cd /o…

uni-app 实现好看易用的抽屉效果

在移动应用开发中,抽屉效果是一种常用的用户界面设计,它能有效地节省空间,同时提供导航和其他功能。本文将介绍如何在uni-app中实现一个好看且易用的抽屉效果,帮助你提升应用的用户体验。 一、什么是抽屉效果? 抽屉效…

Gin 协程mysql客户端

一、Gin框架 mysql配置 这里选择yaml文件配置 二、配置读取 viper 读取yaml文件中对应配置 三、mysql 的协程客户端 文件位置 package databaseimport ("database/sql""fmt""github.com/spf13/viper""log""net/http"&quo…

BIMBase构思渲染,一个强大的免费渲染插件

最近设计圈的小伙伴们都在热议AI出图的魔力 试想一下 假如你只剩一两个小时就要交图/方案阶段性汇报 还要用V-Ray/Blender辛辛苦苦渲染一整天吗😣 借助AI工具 设计师可以将更多的时间与精力放在创作构思上 而不是埋头于画图或等待渲染效果图 同时避免了因电脑…