永发信息网

汇编程序从哪里开始执行

答案:3  悬赏:70  手机版
解决时间 2021-02-26 05:59
  • 提问者网友:你给我的爱
  • 2021-02-25 08:58
汇编程序从哪里开始执行
最佳答案
  • 五星知识达人网友:平生事
  • 2021-02-25 09:23
如果你看过PE头,就明白了。编译生成后的EXE格式的文件,程序执行时,会由Windows解析PE头并加载到内存,由PE头决定程序的执行地址。PE头是系统默认的数值,当然,我们也可以修改。你所说的0000h其实就是一个虚拟地址里的开头部分,在真正的物理内存里,它可不是这个值,这个值由Windows根据PE头信息进行确定。如果你针对的是程序代码的执行,程序是从start处开始执行,在编译程序时,遇到宏调用的地方,编译过程中系统会将宏的代码插入到调用处,之后再进行编译,而不是像函数调用那样。对于子程序,就是一种函数调用,开始调用子程序时,系统会将当前执行的地址等信息保存在栈中,之后去调用子程序,子程序完成后,系统会将先前保存在栈中的信息进行出栈,恢复到原来的状态,接着继续向下执行程序。追问那你说的pe头是针对什么的执行。pe头是什么,不清楚。。书上也没说追答只有深入了解exe可执行文件时,才会触碰到它。一般写程序时不用考虑它,当你编译链接程序时,系统会默认加上的;系统加载你的exe可执行程序时,首先查看的是PE头,根据PE头将程序加载到合适的内存地址。并参照PE头信息从某个物理内存地址开始执行程序,这个物理内存地址一般是你写的程序代码的入口地址。一般不用了解这么多的,有些软件工程师都不太明白这些东西呢,所以你也别把它太当会事儿,除非你真想深入的了解它。如果你想知道它的结构,在百度上直接搜“PE头“就能搜出一大堆与之相关的东西。我一句话也给你解释不清楚,所以还得你自己去看看。
全部回答
  • 1楼网友:深街酒徒
  • 2021-02-25 11:14
从何处开始执行,要看 PC 的数值。
复位后,PC 的数值就是 0000H。
  • 2楼网友:胯下狙击手
  • 2021-02-25 10:01
程序入口,是编程时指定的。
在完整段定义格式时,程序入口一般是一个语句标号(或过程名)。而在程序结束伪操作中引用这个标号,这样就确定了程序运行的开始点。
比如:
START: MOV ……
……
END START
若程序使用简化段定义格式,则用“.STARTUP”伪操作指定程序的开始点并同时完成段寄存器的初始化。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯