Нет точки входа в программу TASM Ошибка - PullRequest
1 голос
/ 27 марта 2010

Я пытаюсь разработать простое ядро, используя 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 \ Nathan \ Desktop> tasm / la / m2 beroset.asm
Turbo Assembler Версия 4.1 Авторское право (c) 1988, 1996 Borland International

Сборочный файл: beroset.asm
Сообщения об ошибках: нет
Предупреждающие сообщения: нет
Проходит: 2
Оставшаяся память: 406k

C: \ DOCUME ~ 1 \ Nathan \ Desktop> tlink beroset, loader.bin
Turbo Link версия 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Смертельно: нет точки входа в программу

C: \ DOCUME ~ 1 \ Nathan \ Desktop>

Что я могу исправить эту ошибку?

1 Ответ

1 голос
/ 27 марта 2010

Я бы сказал, что вам нужно завершить раздел Start:, добавив end Start в последней строке, например:

code ends
end Start

Но опять же в этом коде вы никогда не инициализируете стек ... Он не будет работать, но он может вывести «Операционная система найдена и загружена».

UPDATE: На самом деле, это сделало свое дело. Я просто добавил end Start вместо END, и ошибка «Нет точки входа» исчезла. но вы получаете предупреждение стека.

Итак, поехали. =)

В отношении стека: Просто добавьте это прежде всего:

.model  small
.stack 
...