2017-04-01 1 views
1

Lors de la liaison de ce fichier d'assemblage à l'aide de la commande Tlink /tdc, j'ai reçu le message d'erreur FATAL: Cannot generate COM file : invalid initial entry point adress.. Je ne sais pas comment réparer ce BUG. Que dois-je changer dans mon code pour que ce programme puisse démarrer?FATAL: impossible de générer le fichier COM: point d'entrée initial non valide adresse

.MODEL HUGE 
org 100h 

;.386 
.code 
Dane   SEGMENT 
DL_TABLICA  EQU  10 
Tablica   DB  01h, 02h, 00h, 10h, 12h, 33h 
       DB  15h, 09h, 11h, 08h, 0Ah, 00h 
Najmniejsza  DB  ? 
Dane ends 
Kod SEGMENT 
ASSUME CS:Kod, DS:Dane 
       ;jmp  Poczatek 

Start: 


       mov  ax, 4C00h 
       int  21h 
Kod ENDS 

End  ;Endprog 
Start 

Répondre

3
  1. Le .MODEL pour les programmes .COM est "minuscule".

  2. Les programmes COM ont un seul segment. Vous ne devriez donc pas utiliser de directive SEGMENT, ENDS ou ASSUME. Un seul .CODE sert le but. Par conséquent, au début devrait être le code, pas de données.

  3. Un programme .COM démarre toujours au début. Pour lui donner une étiquette est juste pour satisfaire TLINK.

  4. Un programme .COM commence par DS = CS. Vous n'avez pas besoin d'initialiser DS (mov ax, @datamov ds, ax).

Un simple Bonjour programme mondial:

MODEL tiny 
.CODE 
.386      ; Just to show at what position it has to be 
ORG 0100h 

Start: 

    mov ah, 09h    ; http://www.ctyme.com/intr/rb-2562.htm 
    mov dx, OFFSET hello 
    int 21h 

    mov ax, 4C00h   ; http://www.ctyme.com/intr/rb-2974.htm 
    int 21h 

hello: db "Hello World", '$' 

End Start