以下是文字提取部分,阅读完毕的同学可以离开了
考虑这样一个问题
我们想用;循环;累加一组数据
显然这段数据;不在内存中;
;无法做到;循环操作
但你有没有想过
程序在运行时,会被;装入内存;
我们完全可以;借用这段内存;来放数据
;dw;是定义字型数据
这里定义了八个字型数据
我们说过,cs存放代码段的;段地址;
既然数据;在代码段中;
那么cs也必然是;数据的段地址;
它的;偏移地址;是0~E
;0,2,4,6,8,A,C,E;
下面我debug一下这个程序
红线部分是我们;存放的数据;
从IP=;0010;开始
是我们的;代码区域;
现在存在;一个问题;
debug中我们;可以设置;CS:IP=1CA5:10
但可执行文件.exe并;不知道程序入口;在哪里
exe文件只会;从CS:IP处;开始执行
你可以用start:;指定程序入口;
在;源程序一篇中;
我们说过end;代表程序的结束;
而这里end start指明了;程序的入口在start;
也就是说mov bx,0是程序的;第一条指令;
既然end可以指定程序的入口
那么如何知道;哪一条指令;是程序的入口
源程序一章讲过
可执行文件=;描述文件;+程序
;编译和连接;后
end start将;被转换为;入口地址
存储在;描述信息中;
当程序被;加载到内存;后
;加载者;会从描述信息中读取到入口地址
这个加载者就是前面我们说过的
;p1程序;
最后
;欢迎光临小站:yuruotong.com;