当前位置:网站首页>王爽汇编语言第四章:第一个程序
王爽汇编语言第四章:第一个程序
2022-08-04 08:17:00 【Deteriorate_Kr】
文章目录
前言
现在我们将开始编写完整的汇编语言程序,用编译器将它们编译成为可执行文件(如:*.exe文件),在操作系统中运行。
这一章,我们将编写第一个这样的程序。
一、一个源程序从写出到执行的过程
一个汇编语言程序从写出到最终执行的简要过程:
编写--〉编译--〉连接--〉执行

第一步:编写汇编源程序
使用文本编辑器(如Edit、记事本等),用汇编语言编写汇编源程序。这一步工作的结果是产生了一个存储源程序的文本文件。
第二步:对源程序进行编译连接


这一步工作的结果:产生了一个可在操作系统中运行的可执行文件。
第三步:执行可执行文件中的程序

二、源程序
下面就是一段简单的汇编语言源程序
1.伪指令

上图中出现了3种伪指令
(1) XXX segment →XXX end




(2) end

(3)assume,假设某一段寄存器与程序中的某一段相关联

2.源程序中的程序



3.标号

4.程序的结构




5.程序返回


6. 语法错误和逻辑错误


三、编辑源程序

(2)
(3) 将程序保存为 c:\1.asm后,退出edit,结束对源程序的编辑

文件保存在我们的挂载目录下。
四、编译,得到.obj文件

我直接挂载在了MASM目录下,直接执行MASM.exe

我的1.asm文件也在MASM目录下



(5) 忽略了交叉引用文件的生成后,屏幕显示如下图


五、连接,得到.exe文件



自己电脑上的如下图







番外




连接的作用

六、以简化的方式进行编译和连接,忽略中间文件



在link后面加上被连接的目标文件的路径、文件名,在命令行结尾再加上分号,按Enter键后,连接程序就对当前路径下的1.obj进行处理,在当前路径下生成可执行文件1.exe,并在过程中自动忽略中间文件的生成。
七、 1.exe的执行


八、谁将可执行文件中的程序装载进入内存并使它运行?


问题4.1


问题分析4.2


操作系统的外壳

问题4.1和4.2的分析

小结

九、程序执行过程的跟踪





(阴影部分是已经被使用的内存)

注意:有一步称为重定位的工作我们在上面没有讲解,因为这个问题和操作系统的关系较大,我们不作讨论。
总结







边栏推荐
- 【CNN基础】转置卷积学习笔记
- C Language Lectures from Scratch Part 6: Structure
- Cross-species regulatory sequence activity prediction
- BFM模型和Landmarks可视化
- 『递归』递归概念与典型实例
- [Computer recording screen] How to use bandicam to record the game setting graphic tutorial
- leetcode 22.8.1 二进制加法
- ShowMeAI —— Show u 三连
- binder通信实现
- 24.循环神经网络RNN
猜你喜欢

dalle:zero-shot text-to-image generation

【Attention】Dual Attention(DANet) & Fully Attention(FLA)

JMeter 常用的几种断言方法,你会几种呢?

Distributed Computing MapReduce | Spark Experiment

智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!

秒懂大模型 | 3步搞定AI写摘要

RT-Thread Studio学习(十一)IIC

华为设备配置VRRP与路由联动监视上行链路

Distributed Computing Experiment 1 Load Balancing
![[Paper Notes] - Low Illumination Image Enhancement - Supervised - RetinexNet - 2018-BMVC](/img/54/685fb2620aa53416437943705d3d38.png)
[Paper Notes] - Low Illumination Image Enhancement - Supervised - RetinexNet - 2018-BMVC
随机推荐
一天学会JDBC06:PrepaerdStatemtnt
ShuffleNet v2 network structure reproduction (Pytorch version)
[STM32] STM32F103 series name and package, memory
【虚幻引擎UE】UE5实现WEB和UE通讯思路
Distributed Computing MapReduce | Spark Experiment
js - the first letter that appears twice
金仓数据库KingbaseES客户端编程接口指南-JDBC(8. JDBC 元数据处理)
力扣 剑指 Offer 04. 二维数组中的查找
Yolov5更换主干网络之《旷视轻量化卷积神经网络ShuffleNetv2》
1161. Maximum Level Sum of a Binary Tree
yolo x 跑起来,详细的不行,且内含800错误解决办法
使用单调栈解决接雨水问题——LeetCode 42 接雨水+单调栈说明
解决报错: YarnScheduler: Initial job has not accepted any resources
一天搞定JDBC01:连接数据库并执行sql语句
金仓数据库 KDTS 迁移工具使用指南 (6. 注意事项)
金仓数据库 KDTS 迁移工具使用指南 (4. BS 版使用说明)
智汇华云 | 华云软件定义网络 DCI介绍
Linux之Redis 缓存雪崩,击穿,穿透
binder通信实现
[Paper Notes] - Low Illumination Image Enhancement - Supervised - RetinexNet - 2018-BMVC