1.一个源程序从写出到执行的过程
编写源程序
对源程序进行编译链接
编译产生目标文件,连接程序对目标文件进行连接,生成可执行文件,包含程序(机器码)和数据(定义的数据)、相关描述信息(程序多大)
执行
2.源程序

伪指令:
(1)段名 segment
...
段名 ends
segment和ends成对使用,定义一个段的开始和结束
一个程序至少有一个段,用来存放代码
(2)end
汇编程序结束标记
(3)assume
含义是“假设”,他假设某个段寄存器和程序中的某一个用segment...ends定义的段相关联
本程序用assume cs:codesg将用作代码段的codesg与cs联系起来
程序返回:
一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件中加载入内存后,将CPU的控制权交给P2,P2才得以运行,P1停止运行。
P2运行完毕后,将CPU的控制权还给使他得以运行的程序的过程:程序返回
mov ax.4c00H
int 21H
以上指令实现程序返回
4.编译

简化的编译连接

8.谁将可执行文件中的程序装载进入内存并使他运行?
任何通用的操作系统都要提供一个称为shell(外壳)的程序,用户使用这个程序来操作计算机系统进行工作
dos中有一个commmand.com,此程序称为命令解释器,即dos的shell
dos启动时,先初始化,然后运行command,执行完其他相关任务,就在屏幕显示由当前盘符和当亲路径组成的提示符,等待用户输入
要执行一个程序,输入该程序的可执行文件的名称
cmd找到该文件,将这个可执行文件中的程序加载入内存,设置CS:IP指向程序的入口,然后cmd停止运行。程序运行结束,返回cmd,继续显示提示符
9.程序执行过程的跟踪
debug可以将程序加载入内存,设置CS:IP指向程序入口,但debug不放弃对CPU的控制
debug后,cx中存放的是程序的长度
exe文件中程序的加载过程:

程序加载后,ds存放程序的段地址,偏移地址为0,所以程序所在的内存区的地址为ds:0
此内存区的前256个字节(100H)存放PSP,是dos用来和程序进行通信的,后面是程序
程序的物理地址:SA+10H:0
ds=129E,则psp的地址为129e:0,程序地址为12AE:0
所以cs=12AE,IP=0000


程序结束返回到debug,因为是debug加载的程序
用Q命令退出debug,返回到cmd,因为debug是cmd加载的
浙公网安备 33010602011771号