第一个程序(1)

169 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 4.1源程序从写出到执行的过程

image.png  

.con文件只有一个栈 (古老的黑客程序)

.exe可以设立多个栈多个段

 

使用汇编语言编译程序(MASM.exe)对源程序文件中的源程序进行编译,产生目标文件

再用连接程序(LINK.exe)对目标文件进行连接,生成可在操作系统中直接运行的可执行文件

可执行文件中包含两部分内容:

image.png

对编译、连接的理解

1.编写代码,生成.c或.cpp文件,这时候它还是文本的; 

 

2.编译,就是Compile,由C编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通过。如若无错,则生成中间代码,扩展名为obj,此时它便是二进制的了; 

 

3.连接,在汇编里称Link,在C里叫生成,即Build,它的作用是生成可执行的exe文件。由于一个程序的源码可由多个文件组成。这些文件在第二步 中分别编译,生成各自的目标文件,这一步的作用便是将这些obj文件,以及程序中需要的其它库文件(dll除外),统一到一个文件中来,形成单个的exe 文件。此exe文件便可以在操作系统下直接运行了。 

 

任何程序要执行都会首先加载到内存

伪指令

image.png

 

定义一个段

segment和ends是一对成对使用的伪指令,这是在写可被编译器编译的汇编程序时,必须要用到的一对伪指令。

segment和ends的功能是定义一个段,segment说明一个段的开始,ends说明一个段结束。

一个汇编程序是由多个段组 成的

image.png

image.png

4.2源程序

image.png

end是汇编程序的结束标记

image.png  

如果没有写end ,程序将无法结束,永远停留在内存中。

end和ends被搞混!!!!!

 

assume

image.png

image.png

 

 

 

image.png 程序是编译后的结果

伪指令

伪指令由编译器处理,通过伪指令让编译器知道哪里结束(开始),哪里指向CS(DS、SS),让编译器通过伪指令去处理机器码

汇编指令

汇编指令告诉计算机通用寄存器ax中的内容放入bx,(mov、 add。。。),编译为机器码

 

ATTENTION

用编辑器编辑的叫源程序 xxx.asm,编译后的数据叫做程序

image.png

 

  image.png

 

 

标号

image.png

 

源程序

image.png

 

 

DOS中的程序运行

dos是一个单任务操作系统

image.png  

 

cmd.exe程序为模拟DOS系统而设立的程序,虚拟8086模式的程序

程序返回

一个程序结束后,将CPU的控制权交还给使它得以运行的程序,我们称这个过程为:程序返回。

如何返回

image.png int 21H中断的标志,(中断机制)

段结束、程序结束、程序返回

image.png  

 

编辑源程序

1.asm

image.png

image.png

1.masm 1.asm

2.link 1.obj

3.1.exe

1.exe的执行

程序执行完成后,返回,屏幕上再次出现操作系统的提示符

image.png

image.png

 

以简化的方式进行编译和连接

eg:masm 1.asm;

link 1.obj

 

ML.exe 是masm.exe和link.exe结合

 

编译和连接的作用

image.png

image.png