汇编语言 王爽教材 第四章 第一个程序
源程序从编辑到写出
对一个汇编程序 , 首先要编写源程序 , 然后编译 , 然后连接 , 最后执行
编译的目的是产生目标文件
连接的目的是对目标文件产生连接 , 进而产生可执行程序
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;
即 , 加上一个分号就好了

浙公网安备 33010602011771号