汇编语言的执行过程

来源:互联网 发布:js valueof 比较大小 编辑:程序博客网 时间:2024/06/04 18:11

编写源程序 --->  生出.asm汇编文件  --->  编译器编译   ---->    生成.obj目标文件------> 连接器链接 ------> 生成.exe可执行文件------> 通过command加载-----> 送往内存------>  cpu运行程序

源程序:包含着伪指令和汇编指令和一些标号,伪指令就是由编译器执行的指令,编译器根据伪指令进行相应的的编译工作比如assume、segment、ends、end,汇编指令是由编译器编译为机器指令即目标文件cpu执行

程序:源程序中最终由cpu来执行的、处理的数据和指令称为程序

程序返回:程序执行完毕之后需要返回。程序返回的过程:一个程序a2要想要执行必须要先有一个已经在执行的程序a1,将a2加载到内存之后,将cpu的控制权交给a2,这样a2才可以被执行。a2开始运行之后,a1暂停运行。当a2运行完之后将cpu控制权交还给a1,a1继续执行,这个过程称为程序的返回,在末尾加两句mov ax,4c00int 21H,这时程序就返回,暂时不需要理解这两句指令是什么意思,在这里面的a1其实就是dos里面的command(命令解释器),command来执行用户输入的dir、cd等指令,当在command中输入可执行文件的名称的时候,command根据文件名找到可执行文件,将它加载到内存当中去,将cs:ip执行到程序的入口,之后command暂停运行,一直等程序运行完之后,在回到盘符下,等待用户继续输入。

编译和连接源程序:编译最后形成了一个机器代码,就是目标文件.obj,最后在对目标文件进行连接,连接其实就是编译时如果源程序过大的时候将源程序分为多个源程序来编译,将每个源程序编译成的目标文件连接在一起,或者是程序调用了某个库文件的子文件,需要将子文件和程序连接在一起生成可执行文件,程序进行了编译之后,得到了存有机器码的目标文件,目标文件里面的文件还不足以直接生成可执行文件,连接程序将这些内容最终处理为可执行文件