汇编语言(学习笔记----源程序)

1、汇编指令

2、伪指令:没有对应的机器码的指令,最终不被CPU所执行

3、谁来执行伪指令呢??

    伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作

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

     segment说明一个段开始;ends说明一个段结束

5、一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间使用

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

7、End是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源程序的编译。

8、如果程序写完了,要在结尾处加上伪指令end,否则,编译器在编译程序时,无法知道程序在何处结束。

9、assume:含义为“假设”

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

11、通过assume说明这种关联,在需要的情况下,编译程序可以将段寄存器和某一个具体的段相联系

12、标号:一个标号指代一个地址;

      codesg:放在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。

13、程序返回:应该在程序的末尾添加返回的程序段。

      mov  ax,4c00H

      int 21H  (中断机制)

      这两条指令所实现的功能就是程序返回 

14、连接的作用有以下几个:

      当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件后,在用连接程序将他们连接到一起,生成一个可知行文件;

15、汇编程序从写出到执行的过程:

编程---->1.asm--->编译---->1.obj---->连接---->1.exe------>加载----->内存中的程序----->运行

16、EXE文件中的程序加载过程:debug调试即可明显的看出

     1、程序加载后,ds中存放这程序所在内存区的段地址,这个内存区的偏移地址为0,则程序所在的内存区的地址为 ds:0

     2、这个内存区的前256个字节中存放的时PSP,dos用来和程序进行通信

     3、从256字节处向后的空间存放的是程序

     4、从ds中可以得到psp的段地址sa,psp的偏移地址为0,则物理地址为sa*16+0

     5、因为psp占256(100H)字节,,所以程序的物理地址是:

        sa*16+0+256=sa*16+16*16=(sa+16)*16+0

     6、要使用P命令执行int 21

你可能感兴趣的:(学习笔记)