没有程序入口点TASM错误

时间:2010-03-27 18:21:33

标签: assembly x86 tasm

我正在尝试使用TASM开发一个简单的内核,使用以下代码:

; beroset.asm
;
; This is a primitive operating system.
;
;**********************************************************************
code segment para public use16 '_CODE'
        .386
        assume cs:code, ds:code, es:code, ss:code
        org 0
Start:
        mov     ax,cs
        mov     ds,ax
        mov     es,ax
        mov     si,offset err_msg
        call    DisplayMsg
spin:
        jmp     spin


;****************************************************************************
; DisplayMsg
;
; displays the ASCIIZ message to the screen using int 10h calls
;
; Entry:
;    ds:si ==> ASCII string
;
; Exit:
;
; Destroyed:
;    none
;
;
;****************************************************************************
DisplayMsg proc
        push    ax bx si
        cld
nextchar:
        lodsb
        or      al,al
        jz      alldone
        mov     bx,0007h
        mov     ah,0eh
        int     10h
        jmp     nextchar
alldone:
        pop     si bx ax
        ret
DisplayMsg endp


err_msg db      "Operating system found and loaded.",0

code ends
        END

然后我这样编译:

  

C:\ DOCUME〜1 \森\桌面和GT; tasm / la / m2 beroset.asm
  Turbo Assembler版本4.1版权所有(c)1988,1996 Borland International

     

汇编文件:beroset.asm
  错误消息:无
  警告信息:无
  通行证:2
  剩余记忆:406k

     

C:\ DOCUME〜1 \森\桌面和GT; tlink beroset,loader.bin
  Turbo Link版本7.1.30.1。版权所有(c)1987,1996 Borland International
  致命:没有程序入口点

     

C:\ DOCUME〜1 \森\桌面和GT;

我可以更正此错误?

1 个答案:

答案 0 :(得分:1)

我想说你需要在最后一行添加Start:来结束end Start部分,如下所示:

code ends
end Start

但是在那段代码中你永远不会初始化堆栈......它不会工作,但它会打印出“找到并加载操作系统。”。

<强>更新 实际上,这就是诀窍。我刚刚添加end Start代替END,并且“无入口点”错误消失了。但是你得到了堆栈警告。

所以你去吧。 =)

关注堆栈:只需在所有内容之前添加:

.model  small
.stack