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

  • 相关阅读:
    Markdown语法
    IDEA常用快捷键及基本操作
    这一份MySQL书单,可以帮你搞定90%以上的面试题!
    你真的以为计算机网络不重要吗,这份书单帮你搞定相关面试题!
    学好程序员必知必会的数据结构,这一份书单你值得拥有!
    送你一份Redis书单,以后使用缓存的问题不用再问我啦!
    这本最适合夯实基础的经典 Java 书籍,可能80% 的 Java 程序员没有认真看过!
    荐书在精不在多,推荐一份夯实Java基础的必备书单!
    拿万元月薪必备的书单,学JAVA的程序员必看的5本书!
    8岁上海小学生B站教编程惊动苹果,库克亲送生日祝福
  • 原文地址:https://www.cnblogs.com/haoyuanyuan/p/3228363.html
Copyright © 2011-2022 走看看