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


    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

  • 相关阅读:
    利用数组创建的顺序表实现各种功能
    poj3181 Dollar Dayz
    【网络协议】TCP的流量控制机制
    6.6.1 F# 中函数调用的类型判断
    oracle ORA-06550
    为基于 x86 的 Android* 游戏选择合适的引擎
    linux下apache https 虚拟主机配置
    Hibernate学习笔记(六) — Hibernate的二级缓存
    08_Android中的SimpleAdapter的使用
    【从零学习openCV】IOS7人脸识别实战
  • 原文地址:https://www.cnblogs.com/haoyuanyuan/p/3228363.html
Copyright © 2020-2023  润新知