当前位置:网站首页>Wang Shuang's Assembly Language Chapter 4: The First Program
Wang Shuang's Assembly Language Chapter 4: The First Program
2022-08-04 08:32:00 【Deteriorate_Kr】
文章目录
前言
现在我们将开始编写完整的汇编语言程序,Compile them into executable files with a compiler(如:*.exe文件),在操作系统中运行.
这一章,我们将编写第一个这样的程序.
一、一个源程序从写出到执行的过程
The brief process of an assembly language program from writing to final execution:
编写--〉编译--〉连接--〉执行

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


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

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

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




(2) end

(3)assume,Suppose a certain segment of registers is associated with a certain segment in the program

2.program in source program



3.标号

4.程序的结构




5.程序返回


6. 语法错误和逻辑错误


三、编辑源程序

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

The file is saved in our mount directory.
四、编译,得到.obj文件

I directly mounted itMASM目录下,直接执行MASM.exe

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



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


五、连接,得到.exe文件



The picture below is on your computer







番外




连接的作用

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



在link后面加上被连接的目标文件的路径、文件名,Add a semicolon to the end of the command line,按Enter键后,连接程序就对当前路径下的1.obj进行处理,在当前路径下生成可执行文件1.exe,并在过程中自动忽略中间文件的生成.
七、 1.exe的执行


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


问题4.1


问题分析4.2


操作系统的外壳

问题4.1和4.2的分析

小结

九、程序执行过程的跟踪





(The shaded area is memory that has already been used)

注意:There is a step called relocation that we didn't cover above,因为这个问题和操作系统的关系较大,我们不作讨论.
总结







边栏推荐
- 一天搞定JDBC01:连接数据库并执行sql语句
- MYSQL JDBC图书管理系统
- 阿里云的数据库系统怎么升级更新的www.zgysffm.com怎么加快访问速度?
- 【Attention】Dual Attention(DANet) & Fully Attention(FLA)
- 千万级别的表分页查询非常慢,怎么办?
- Linux之Redis 缓存雪崩,击穿,穿透
- 设计信息录入界面,完成人员基本信息的录入工作,
- 高等代数_证明_对称矩阵一定能够相似对角化
- 给Unity Behavior Designer(Unity行为树) 的Can See Object 画圆锥辅助图
- 经典动态规划问题的递归实现方法——LeetCode39 组合总和
猜你喜欢

一天搞定JDBC02:开启事务

预测性维护学习之路

学会 Arthas,让你 3 年经验掌握 5 年功力
![[Computer recording screen] How to use bandicam to record the game setting graphic tutorial](/img/a7/0ac5e2028c5f1b013da56b795143e7.jpg)
[Computer recording screen] How to use bandicam to record the game setting graphic tutorial

『递归』递归概念与典型实例

Cross-species regulatory sequence activity prediction

How many assertion methods are commonly used in JMeter?

最近的一些杂感-20220731

IDEA引入类报错:“The file size (2.59 MB) exceeds the configured limit (2.56MB)

binder通信实现
随机推荐
redis分布式锁的实现
BFM模型和Landmarks可视化
技术实现 | 图像检索及其在高德的应用
技术实现 | 图像检索及其在淘宝的应用
金仓数据库的单节点如何转集群?
dalle:zero-shot text-to-image generation
经典动态规划问题的递归实现方法——LeetCode39 组合总和
Interpretation of new features | MySQL 8.0 online adjustment REDO
1161. Maximum Level Sum of a Binary Tree
如何从PG导入数据到kingbaseES
智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
虚拟机没有USB网卡选项怎么解决
form表单提交到数据库储存
一天学会JDBC04:ResultSet的用法
大家好,请教一个问题啊,我们通过flinkcdc把Oracle数据同步到doris,目前的问题是,只
Detailed explanation of TCP protocol
Typora_Markdown_图片标题(题注)
redis stream 实现消息队列
IDEA引入类报错:“The file size (2.59 MB) exceeds the configured limit (2.56MB)
经典二分法查找的进阶题目——LeetCode33 搜索旋转排序数组