知识大搜罗程序员首页投稿(暂停使用,暂停投稿)

汇编干货笔记->4.1 编译源程序

2017-09-26  本文已影响32人  Dongle聊测试

以下是文字提取,阅读完毕的同学可以离开了
你随意选择;IDE;
我使用的工具是;记事本;
直接在记事本下输入edit
保存后缀为;.asm;

源程序已经;完成;
下面的工作是如何;编译;
说到编译,自然会有对应的;编译器;
编译器与连接工具我已经准备好
请在;下面文字提取部分下载;
http://pan.baidu.com/s/1c6iB5G
首先把text1.asm与文件夹里所有内容放到同一文件夹;
我这里放到了:C:\Users\YuRuotong\Desktop\text

然后cmd
cd到text
输入:;masm text1.asm;
;完成编译;
此时会在text目录下生成一个.obj文件

然后需要将.obj连接
输入;link text1.obj;
紧接着;一路回车;
得到;text1.exe;
注意:这里生成的;程序是32bit;
64bit电脑;无法打开;

其实这里有一个;更为简便;的方法
就是;拖动;
你可以直接拖动text1.asm到;MASM.EXE;
生成.obj,然后拖动.obj到LINK.EXE
你甚至可以直接拖动到;ML.EXE;
;直接生成;exe文件

这里还提供一种追踪.exe的;运行过程;
打开;dosbox;,挂载;exe所在目录
然后把;debug32.exe;拷贝到text目录下
输入;debug32 text1.exe;
输入;-r;查看情况
CX存储的是;程序长度;
我们程序的;机器码;有13个字节

这里我想介绍下.exe是如何被;装入内存;的
首先要找到一块;偏移地址为零;的空闲内存区域
设它目前;段地址为:SA;
因此;起始地址为SA:0000;

然后这里很重要,敲黑板,;当当当;
在这段内存的;前256个字节;
创建一个名为;PSP;的数据区
DOS要利用PSP和.exe;进行通信;
从;256个字节开始;才是我们的程序

而且这里PSP与程序虽然;物理地址连续;
但是却被划分到;不同的段;
所以会有下面图片的;段地址;
最后将该内存的段地址;存入DS;中
;初始化;其他寄存器
设置CS:IP;指向;程序的入口

使用;u命令;可以列出所有指令
内存起始地址为:1C95:0000
PSP地址:1C95:0000
程序地址:1C95+10H:0000=1CA5:0000
也就对应了指令MOV AX,0123h

到了这里,我们就可以使用;T命令;逐步执行
遇到int21时候,记得要用;p命令;

最后还要啰嗦一下
下面1,2两处
1代表command
2代表debug
上面我们输入完p,程序要返回到debug
你可以输入q从debug返回到command

如果用图表说明
就是下面这种情况

上一篇 下一篇

猜你喜欢

热点阅读