Masm First Program

Masm First Program

  下面我们来描述一下,汇编语言程序从写出到最终执行的简要过程。具体步骤如下:

  第一步:编写汇编程序。文件格式:文件名.masm

  第二步:对源程序进行编译连接。

  使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件;再用连接程序对目标文将进行连接,生成可操作系统中直接运行的可执行文件。

  可执行文件包括两部分,①程序(从源程序中的汇编指令翻译过来的机器码)和(源程序中定义的数据)②相关的描述的消息(比如,程序有多大、有占用多少内存空间等)。

  第三步:执行可执行文件中的程序。

  操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化,然后由CPU执行程序。

  整个执行过程,如下图描述:

 

  现在给出一段简单的程序来讲述相关内容。

assume cs:codeseg
 codeseg segment
             mov ax,0123H
             mov bx,0456H
             add ax,bx
             add ax,ax
             mov ax,4c00H
             int    21H
 codeseg ends
 end

  说明:

  ⒈  伪指令

       在汇编语言源程序中,包括两种指令,一种是汇编指令,一种是伪指令。汇编指令是有对应的机器码的指令,可以被编译位机器指令,最终为CPU所执行。而伪指令没有对应的机器指令,最终不被CPU所执行。而是被编译器执行的指令。

      上一实例中,segment和ends 一对编写汇编程序必须使用的伪指令,其功能是定义一个段,segment表示为段开始,ends 表示为段结束,在定义一个段时必须有一个名称来作为标识。end是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到伪指令end,就结束对源程序的编译。assume表示假设某一段寄存器和程序中的某一个用segment ...ends定义的段相关联。

  ⒉源程序中的“程序”

      用汇编语言写的程序,包括伪指令和汇编指令,源程序中的汇编组成了最终由计算机执行的程序,而源程序中的伪指令是由编译器来处理的。

  ⒊程序的结构

     汇编程序结构同我们了解的高级程序有一些不一样,前者由代码、数据、运算法则等组成,后者由一些段构成的,其中段中存放代码、数据、或将某个段当作栈空间。     

   4.程序返回

      汇编程序执行过程,最先一汇编指令的形式存在源程序中,经编译、链接转变为机器吗,存储在可执行文件中。对于一个单系统(如DOS)而言,执行程序过程如下:P2在可执行文件中,这必须有一个正在运行的程序P1,将P2从执行文件中加载入内存后,将CPU的控制权交给P2,P2才能得以运行。P2开始运行后,P1暂停运行。待P2运行完毕后,应该将CPU 的控制权还给使它得以运行的程序P1,此后,P1继续运行。

      现在我们知道一个程序结束后,将CPU的控制权交还给使它得以运行的程序,被称作程序返回。

       前面我们熟悉的两条指令:

       mov ax,4c00H

       int 21H

       以上其实现的功能就是程序返回,解释将后续揭晓。

  了解了汇编源程序的后来,下面来说一下源程序的编译事项。主要了解如何编译源程序和在编译过程中产生的相关文件。

  编译源文件方式:使用编译器(masm.exe)执行汇编源程序。执行完成后,将生成3个文件分别是目标文件(.obj)也是我们需要最终结果、列表文件(.lst)、交叉引用文件(.crf),后两个文件只是中间结果。

  通过对源程序的编译,我们还需要做的是连接编译成功的目标文件。

  连接执行方式:使用连接工具(link.exe)执行一生成的obj文件。这一步是将目标文件与系统可执行文件相结合,使其可被系统运行。

  连接目标程序成功后,将生成系统可执行文件(.exe)。

  对于上面的简述,进而知道汇编程序从写出到执行的过程简要描述如下:

 

  注:在初次学习汇编时请勿使用IDE工具,尽量使用masm、link、debug等

转载于:https://my.oschina.net/heli/blog/1611053

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值