汇编程序从哪里开始执行

[复制链接]
查看11 | 回复3 | 2013-6-29 18:59:16 | 显示全部楼层 |阅读模式
如果你看过PE头,就明白了。编译生成后的EXE格式的文件,程序执行时,会由Windows解析PE头并加载到内存,由PE头决定程序的执行地址。PE头是系统默认的数值,当然,我们也可以修改。你所说的0000h其实就是一个虚拟地址里的开头部分,在真正的物理内存里,它可不是这个值,这个值由Windows根据PE头信息进行确定。如果你针对的是程序代码的执行,程序是从start处开始执行,在编译程序时,遇到宏调用的地方,编译过程中系统会将宏的代码插入到调用处,之后再进行编译,而不是像函数调用那样。对于子程序,就是一种函数调用,开始调用子程序时,系统会将当前执行的地址等信息保存在栈中,之后去调用子程序,子程序完成后,系统会将先前保存在栈中的信息进行出栈,恢复到原来的...
回复

使用道具 举报

千问 | 2013-6-29 18:59:16 | 显示全部楼层
从何处开始执行,要看 PC 的数值。复位后,PC 的数值就是 0000H。...
回复

使用道具 举报

千问 | 2013-6-29 18:59:16 | 显示全部楼层
程序入口,是编程时指定的。在完整段定义格式时,程序入口一般是一个语句标号(或过程名)。而在程序结束伪操作中引用这个标号,这样就确定了程序运行的开始点。比如:START:MOV …………ENDSTART若程序使用简化段定义格式,则用“.STARTUP”伪操作指定程序的开始点并同时完成段寄存器的初始化。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行