曲曲的秘密学术基地

纯化欲望、坚持严肃性

欢迎!我是曲泽慧(@zququ),目前在深圳(ICBI,BCBDI,SIAT)任职助理研究员。


病毒学、免疫学及结构生物学背景,可以在 RG 上找到我已发表的论文

本站自2019年7月已访问web counter

汇编语言 4.1 4.2 源程序

4.1 一个源程序从写出到执行的过程

做一个程序从写出到执行分为以下步骤。

第一步:编写汇编源程序。

第二步:对源程序进行编译连接。

使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件。再用连接程序对目标文件进行连接,生成可以在操作系统中直接运行的可执行文件

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

  1. 程序(从源程序中的汇编指令翻译过来的机器码)以及数据(原程序中定义的数据)
  2. 相关的描述信息

第三步:执行可执行文件中的程序。

操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置CS:IP指向第一条要执行的命令),然后由CPU执行程序。

主要流程如下图:

流程图

4.2 源程序

如下一段简单的汇编语言源程序:

1  assume cs:codesg
2  codesg segment
3
4         mov ax, 0123H
5         mov bx, 0456H
6         add ax, bx
7         add ax, ax
8
9         mov ax, 4c00H
10        int 21H
11
12 codesg ends
13 end

这里4~10行代码称为汇编指令,除去汇编指令以外的其他行称为伪指令。

汇编指令是有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行。

伪指令没有对应的机器指令,最终不被CPU所执行,由编译器来执行的命令,编译器根据伪指令来进行相关的编译工作。

代码示例中的伪指令详解:

  1. segment 与 ends指令

这是一对成对使用的伪指令,其在可被编译器编译的汇编程序时必须要用到的一对伪指令。其功能是定义一个段。

一个有意义的汇编程序中至少有一个段,用来存放代码。

  1. end

end是汇编程序结束的标记,结束对源程序的编译。否则,编译器在编译程序时,无法知道程序在何处结束。

  1. assume

假设某一段寄存器和程序中的某一个用segment…ends定义的段相关联。

源程序中的程序

源程序包括伪指令与汇编指令。

将源程序文件的所有内容称为源程序,将原程序中最终由计算机执行、处理的指令或数据成为程序。

Last One

Correlation of Discrete Signals

The related information of correlation is mostly from David Dorran video at youtube, it is very clear and easy understanding.What Is CorrelationCorrelation is a measure of how similar signals are. They are present in things like discrete Fourier t...…

数学More
Next One

汇编语言 3.10 栈段

3.10 栈段对于8086PC机,可以根据需要,将一组内存单元定义为一个段。我们可以将长度为N(N<=64KB)的一组地址连续、起始地址为16的倍数的内存单元,当作栈空间来用,从而定义了一个栈段。例如10010H~1001FH这段长度为16字节的内存空间当作栈来用,以栈的方式进行访问。这段空间就可以成为一个栈段,段地址为1001H,大小为16字节。通过将SS:SP指向我们定义的栈段来使得如push、pop等栈操作指令访问我们定义的栈段。问题 1如果将10000H~1FFFFH这段空间...…

汇编语言More