不得不说,我觉得一本真正可以称得上是好的教材都应该像王爽老师写的《汇编语言》那样,不追求书有多厚,也不追求书的内容有多高深莫测,更不追求书有多么晦涩难懂,看起来有多么的高大上,而应该是用极其耐心的解释以及合理的逻辑结构为读者解惑。相比于现在很多所谓的入门级教材而言,这本书思路清晰,解释到位,因而绝对可以称得上是良心之作。
今天在阅读到《汇编语言》这本书的第四章时,遇到了一个小小的问题,在此做一个简单记录。
从本书的第四章开始,正式由散碎的单条指令转入整体化的汇编程序。按照我们学校的要求,我使用的编译器是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表示链接成功