汇编语言第四章总结

  • 源程序

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

    (1)段名 segment

             段名 ends

             segment和ends是一对成对使用的伪指令,它们定义了一个段。一个汇编程序由多个段组成的,这些段用来存放代码、数据或当作栈空间来用。

    (2)end

             end是一个汇编程序的结束标记,即碰到了伪指令end就结束对源程序的编译(注意:ends标记了一个段的结束,而end是标记整个程序的结束

    (3)assume

             assume的含义为“假设”,它将有特定用途的段和相关的段寄存器关联起来。(例如用作代码段就和段寄存器cs相关联,用作栈段就和ss相关联,数据段就和ds相关联)

        2. 源程序中的“程序”——汇编指令:指源程序中最终由计算机执行、处理的指令或数据(汇编指令经编译、连接后转变为机器码)

        3. 标号:一个标号指代了一个地址。例如code在segment的前面作为一个段的名称,此名称最终会被编译、连接处理为一个段的段地址

        4. 程序的结构

    (1)先定义一个段,名称为code

    (2)在此段中写入汇编指令

    (3)指出程序在何处结束,利用end

    (4)用assume将段和其功能相关联的段寄存器联系起来

        5. 程序返回:一个程序结束后,将CPU的控制权交还给使它得以运行的程序

mov ax,4c00h
int 21h           ;由CPU执行,用于程序返回

        6. 语法错误和逻辑错误:程序在编译器发现的错误是语法错误,编译后在运行时发生的错误是逻辑错误

  • 编译,连接,执行源程序

        1. 编译:masm p1;(加;号可以忽略中间文件的生成,当p1.asm与masm不在同一文件中则要输入路径)

        (编译成功后将生成p1.obj的目标文件)

        2. 连接:link p1;(同理加;号可以简化步骤,当p1.obj与masm不在同一文件中也要输入路径)

        (连接成功后将生成p1.exe的可执行文件)

        3. 执行:p1

  • 程序执行过程的跟踪

        1. 在DOS中执行一个程序的时候,是由command将程序从可执行文件中加载入内存,并得以执行。当CS:IP一指向程序的入口,command就放弃了CPU的控制权,CPU立即开始运行程序,直至程序结束

         (commamd:命令解释器,DOS系统的外壳)

        2. 使用debug观察程序运行过程:debug p1.exe

        3. 用r查看各个寄存器:CX存放的是程序的长度

        4. dos系统中.exe文件加载的过程:

    (1)程序加载后,ds保存程序所在内存区的段地址,偏移地址为0,此程序所在的内存区的地址为ds:0;

    (2)此内存区的前256个字节中存放的是PSP(程序段前缀——记录了返回地址,程序数据大小等信息,dos用来和程序通信)

    (3)从256个字节处向后的空间存放的是程序,物理地址为 ds+10h(ds和cs的值总相差10h,ds=cs+10h

        5. 用t单步执行指令时要注意,到了int 21h时要用p命令执行

        6. 程序加载的顺序:(1)command加载debug,debug加载p1.exe;返回的顺序:(2)从p1.exe中的程序返回到debug,从debug返回到command

 

posted @ 2018-11-21 19:03  Cyiii  阅读(263)  评论(0编辑  收藏  举报