zoukankan      html  css  js  c++  java
  • 汇编语言(学习笔记----源程序)

    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

  • 相关阅读:
    正态分布与中心极限定理
    超几何分布与二项分布及其期望
    cf492E. Vanya and Field(扩展欧几里得)
    ZR#317.【18 提高 2】A(计算几何 二分)
    小米OJ刷题日志
    cf519D. A and B and Interesting Substrings(前缀和)
    cf519C. A and B and Team Training(找规律)
    BZOJ2118: 墨墨的等式(最短路 数论)
    Service生命周期图
    python2.7中使用mysql (windows XP)
  • 原文地址:https://www.cnblogs.com/haoyuanyuan/p/3228363.html
Copyright © 2011-2022 走看看