汇编程序中Fatal:No Program entry point错误的解决办法

    不得不说,我觉得一本真正可以称得上是好的教材都应该像王爽老师写的《汇编语言》那样,不追求书有多厚,也不追求书的内容有多高深莫测,更不追求书有多么晦涩难懂,看起来有多么的高大上,而应该是用极其耐心的解释以及合理的逻辑结构为读者解惑。相比于现在很多所谓的入门级教材而言,这本书思路清晰,解释到位,因而绝对可以称得上是良心之作。

    今天在阅读到《汇编语言》这本书的第四章时,遇到了一个小小的问题,在此做一个简单记录。

    从本书的第四章开始,正式由散碎的单条指令转入整体化的汇编程序。按照我们学校的要求,我使用的编译器是Tasm,可能是因为王爽老师在编写这本书时使用的是Masm,因而在使用过程中出现了一点偏差,这也是产生这次我所描述的错误的根源。但是这个根源在程序里面是可以进行修改的。

    该例如下:编程运算2^3

assume cs:abc
abc segment
     mov ax,2
     mov ax,ax
     mov ax,ax
abc ends
end

    代码的具体解释在此不做过多解释,这里着重解释一下出现的错误

    首先,打开虚拟盒,进行一波编译链接前的常规操作:


在使用tasm.exe进行编译的时候没有发生问题,但是在使用tlink.exe进行链接的时候却歇菜了,报出的错误正是标题中的Fatal:No Program entry point。它的意思是没有程序入口,这个错误在Masm5中不会出现,但是Tasm却对此有严格要求,因此在不改变编译器的情况下,我们通过修改程序可以实现,只要给出程序入口就可以了。


我们对代码做如下修改,增加start和end start:

assume cs:abc
abc segment
start: mov ax,2
       mov ax,ax
       mov ax,ax
abc ends
end start
end
这样修改之后,问题就迎刃而解啦,出现warning:No stack表示链接成功


发布了12 篇原创文章 · 获赞 39 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/sjq__python_web/article/details/79842753