当前位置:网站首页>王爽汇编语言第四章:第一个程序
王爽汇编语言第四章:第一个程序
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的分析

小结

九、程序执行过程的跟踪





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

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







边栏推荐
- 解决:Hbuilder工具点击发行打包,一直报尚未完成社区身份验证,请点击链接xxxxx,项目xxx发布H5失败的错误。
- 微信消息从发送到接收,经历了什么?如何防止丢包
- 线程安全问题
- Redis分布式锁的应用
- 智汇华云 | 华云软件定义网络 DCI介绍
- Distributed Computing Experiment 1 Load Balancing
- 秒懂大模型 | 3步搞定AI写摘要
- 【论文笔记】Delving into the Estimation Shift of Batch Normalization in a Network
- 金仓数据库 KDTS 迁移工具使用指南 (7. 部署常见问题)
- 8.2学习记录
猜你喜欢

yolo x 跑起来,详细的不行,且内含800错误解决办法

BFM模型和Landmarks可视化

1161. Maximum Level Sum of a Binary Tree

unittest使用简述

IntelliJ新建一个类或者包的快捷键是什么?

【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解

金仓数据库 KDTS 迁移工具使用指南 (5. SHELL版使用说明)

How many assertion methods are commonly used in JMeter?

【虚幻引擎UE】UE5基于Gltf加载插件实现gltf格式骨骼动画在线/本地导入和切换

【CNN基础】转置卷积学习笔记
随机推荐
MySQL group_concat()详解
IntelliJ新建一个类或者包的快捷键是什么?
Redis分布式锁的应用
一天学会JDBC03:Statement的用法
【UE虚幻引擎】UE5三步骤实现AI漫游与对话行为
【论文笔记】Understanding Long Programming Languages with Structure-Aware Sparse Attention
yolo x 跑起来,详细的不行,且内含800错误解决办法
秒懂大模型 | 3步搞定AI写摘要
redis---分布式锁存在的问题及解决方案(Redisson)
金仓数据库 KDTS 迁移工具使用指南 (5. SHELL版使用说明)
关于#sql#的问题:后面换了一个数据库里面的数据就不能跑了
【论文笔记】Delving into the Estimation Shift of Batch Normalization in a Network
高等代数_证明_对称矩阵属于不同特征值的特征向量正交
LeetCode 135. 分发糖果
8.2学习记录
一天学会JDBC04:ResultSet的用法
金仓数据库KingbaseES客户端编程接口指南-JDBC(7. JDBC事务处理)
经典二分法查找的进阶题目——LeetCode33 搜索旋转排序数组
第一次用postgreSQL,想装主从,用的12.7 tar.gz版本。安装好后没在 share目录下找到样例配置recovery.conf.sample,是安装方式不对,还是路径不对?
金仓数据库KingbaseES客户端编程接口指南-JDBC(6. JDBC 大对象数据处理)