汇编语言学习笔记(四)

时间:2022-10-04 03:29:40

 1.一个汇编语言程序从写出到最终执行的简要过程?
    第一步:编写汇编源程序
    第二步:对源程序进行编译连接(结果是:产生了一个可在操作系统中运行的可执行文件)
    第三步:执行可执行文件中的程序
2.在汇编语言源程序中,包含两种指令,一种是汇编指令,一种是伪指令。
         汇编指令是有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行。
         伪指令没有对应的机器指令,最终不能被CPU所执行。伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作。
3.伪指令的种类:
   ①.XXX segment     XXX ends
   ②.end
   ③.assume
4.程序的结构
   ①定义一个段,名称为abc
       abc segment
              :
       abc end
    ②在这个段中写入汇编指令,来实现我们的任务
       abc segment
           mov ax,2
           add  ax,ax
           add  ax,ax
       abc end
    ③然后,要指出程序在何处结束
        abc segment
           mov ax,2
           add  ax,ax
           add  ax,ax
       abc end
       end
     ④abc当作代码段来用,所以,应该将abc和cs联系起来
      assume  cs:abc
         abc segment
           mov ax,2
           add  ax,ax
           add  ax,ax
       abc end
       end
5.程序返回
   mov ax,4c00H
   int 21H
   这两条指令所实现的功能就是程序返回,在目前阶段,我们不必去理解int 21H的含义和mov ax,4c00H的含义。
6.编译源程序和连接成可执行文件
   用到的编译器是:微软的masm5.0   masm.exe
   用到的连接器是:微软的Overlay Linker3.60  Link.exe
   编译源程序.asm,生成的目标文件.obj,中间会生成中间文件.lst和.crf,可以不用生成这些文件。
   连接目标文件.obj,生成可以执行文件.exe,中间会生成中间文件.map和.lib,也可以不用生成这些文件。
7.程序执行过程的跟踪
   在dos下,执行命令:
   debug  文件名称.exe    在debug下运行,并跟踪程序执行过程
   -r    可以查看,把.exe程序加载进内存后,哥哥寄存器的设置情况
   -u   可以以汇编代码的形式查看,内存中各个地址中存放的机器码
   -t    可以单步执行,并跟踪程序的运行情况
 8. 程序被装入内存的什么地方?
    ①程序加载后,ds中存放着程序所在内存区的段地址,这个内存区的偏移地址为0,则程序所在的内存区的地址为ds:0
    ②这个内存区的前256个字节中存放的是PSP,DOS用来和程序进行通信。从256字节处向后的空间存放的是程序。
        从ds中可以得到PSP的段地址SA,PSP的偏移地址为0,则物理地址为SA*16+0。