汇编语言 王爽教材 第四章 第一个程序

源程序从编辑到写出

对一个汇编程序 , 首先要编写源程序 , 然后编译 , 然后连接 , 最后执行

编译的目的是产生目标文件

连接的目的是对目标文件产生连接 , 进而产生可执行程序

Q:可执行程序里有什么?

A:
程序内容 + 数据 + 描述信息

其中 , 描述信息包括所需内存大小 , 程序大小等

在执行程序过程中 , 操作系统按照可执行文件的描述信息将机器码和数据加载入内存

对CS:IP等进行初始化 , 然后交给CPU执行

编辑源程序

分类:源程序分为伪指令部分和汇编指令部分

伪指令

segment ends
用于将程序分为多个段

assume
意为"假设" , 用于将某段寄存器和某个segment...ends定义的段相关联

Q:所写出的程序结构是什么样的?

A:
分段编写. 如分为数据段 , 代码段 ,堆栈段等

程序返回:

当一个程序P2在可执行文件中时 , 必须有一个正在运行的程序P1 , 使得将P2从可执行文件中加载进入内存后 ,
将CPU的控制权交给P2 , 才能使P2运行

而当P2完成运行后 , 应将CPU控制器还给使得它运行的程序P1 , 此后P1继续运行

这个过程被称为程序返回 , 在汇编指令中表现为:

MOV AX, 4c00H
int 21H

Q:DOS环境下如何编辑源程序?
A:
使用Edit指令
将程序保存为*.asm , 结束编辑

(这里似乎并不是所有的DOSBox都自带Edit , 我后面是自己下的)

编译 , 连接 , 运行

如果是".asm" 那么直接编译

否则全写 , masm xx.txt形式

obj -> exe

Q:连接作用?

A:
1.源程序很大时 , 分成了多个文件 , 通过连接将其连接在一起

2.程序中调用了某个库文件子程序时 , 需要将该库文件和目标文件连接到一起

3.一个源程序编译后 , 得到的机器码目标文件 , 但是还不能用来生成可执行文件 , 需连接

Q:执行 1.exe时发生了什么?
A:
DOS中有一个command.com程序 , shell

DOS启动时 , 先完成初始化工作

然后运行command.com

再执行其他相关任务

再在屏幕上显示提示符 , 如:C:\

用户输入 1.exe时 , command根据文件名找到可执行文件

然后把它加载入内存

运行结束后 , 程序返回 , 将CPU控制权返回给command

Q:如何快速进行编译连接?
A:
masm 文件名.asm;
link 文件名.obj;
即 , 加上一个分号就好了

posted @ 2025-04-05 19:21  Guaninf  阅读(24)  评论(0)    收藏  举报