彙編程序中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表示鏈接成功


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章