汇编源程序在DOSBOX系统下编译连接的过程

首先要知道的是,我们写的程序叫做源程序
而操作系统能识别的是机器码,所以就需要把我们写的源程序转变为一个可执行文件(.exe文件)
这个笔记主要是记录怎么在DOSBOX中转换的。
先随便写点简单的代码,保存起来

assume cs: abc
abc segment
    mov ax,2
    mov cx,11
s:  add ax,ax
    loop s

    mov ax,4c00H
    int 21H
abc ends

end

我把这个源文件的名字命名成了P4-1.asm,这时候还没有进行编译连接,只有一个.asm文件。
在这里插入图片描述
进入dosbox系统,挂载文件,然后输入dir查看一下可以运行的东西
在这里插入图片描述
可以看到有p4-1.asm文件,然后输入masm p4-1.asm,然后点回车,出现0警告0错误就说明ok了,如果你的源程序写错了,它中间会提示你第几行出错了,以及出错的原因,和c语言的编译差不多,只是换了个环境。
可以看到编译的过程中出现了几个文件,简单的来讲一下吧
.OBJ 目标文件 这是我们编译中需要的文件
.LST 列表文件 中间过程产生的文件
.CRF 交叉引用文件,也是一个中间文件
以上文件中,我们需要的是.OBJ.文件。
如果觉得上述编译太麻烦了,也可以直接输入masm p4-1.asm;(多了个分号)然后点回车,就直接输出了。
在这里插入图片描述
上面的操作做完之后可以看到原来存放源程序的文件夹中多了个.OBJ后缀的东西
在这里插入图片描述

接下来的操作是连接生成可执行文件,输入link p4-1.obj,点回车到最后
在这里插入图片描述
如果想要一步完成也可以直接输入link p4-1.obj;(加分号)
我们可以看到最后有个警告no stack segment,因为我们的源程序中没有定义栈段,不用理会这个警告。
一样的,生成了三个文件
.EXE 可执行文件,这个是我们最终需要的文件,加载到系统的文件
.MAP 连接程序将目标文件连接连接为可执行文件过程中产生的中间结果
.LBI 库文件
再来看看文件夹中又多了些什么东西
在这里插入图片描述
现在就有了.exe文件了,这个文件可以加载到系统中运行,也可以加载到debug中跟踪运行
在这里插入图片描述
加载进去后,输入u指令可以查看程序是加载进去了
接下来是运行跟踪,如果程序不长的话,可以直接输入几个t指令就ok了
如果程序过长的话,那应该怎么办呢?介绍一个g指令,格式 g 偏移地址,就会自动运行到cs:偏移地址处了,看看下面的例子吧
在这里插入图片描述
通过u指令我们看到了,源程序最后一行代码的地址是076A:000D,然后直接输入g 000d 就跳转到了执行最后一行代码 INT 21H了。
这个程序中还有个循环,循环的次数较少,可以用t指令,如果循环的次数较多,我们直接输入p指令就行了,debug就会自动重复执行循环中的指令。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值