Impossible d'accéder à l'étiquette par le biais des registres de segment, erreur dans l'assemblage

StackOverflow https://stackoverflow.com/questions/1512734

  •  19-09-2019
  •  | 
  •  

Question

INCLUDE Irvine16.inc

.data
    byteArray   BYTE 6 DUP(?)
    listSize = ($ - byteArray)
    aSum        WORD 0
    soffset = 0
.code
main PROC
    mov     ax, @data
    mov     ds, ax
    mov     cx, listSize
Loop1:
    mov     ax, 0
    movzx   ax, [byteArray + soffset]
    add     aSum, ax
    soffset = soffset + 1
    loop Loop1
    exit
main ENDP
END main

L'erreur que je reçois est erreur « A2074: ne peut pas accéder à l'étiquette par le biais des registres de segment »

Je suis en train d'utiliser la soffset en boucle à travers le byteArray.

Était-ce utile?

La solution

Je ne sais pas ce qui est dans Irvine16.inc, mais je parie qu'il dit .model small,... à un moment donné.

Si vous ajoutez

ASSUME DS:_DATA

alors vos messages d'erreur vont disparaître, même si je doute que c'est suffisant pour faire fonctionner le programme.


Ok, j'ai une idée. Je pense que vous devriez passer aux exemples 32 bits. C'est un modèle plat où les registres de segment sont mis en place par le système d'exploitation et non utilisés par les programmes. Je viens de télécharger les exemples et irvine l'exemple de projet, qui se trouve être 32 bits et n'assembler exécuter.

Dans le wierd et dans le monde tordu qui est le code machine x86, le modèle 16 bits est un peu plus complexe que le modèle 32 bits, au moins du point de vue d'un programme utilisateur.

Autres conseils

Cette erreur est due en essayant de monter un programme DOS (.model! = Plat) au dossier d'un COFF. De plus ML.EXE jette error A2006:undefined symbol : DGROUP. devrait être assemblé à la source d'un ancien fichier OMF de mode. Construire le fichier avec les lignes de commande suivantes:

ml.exe /omf hello.asm
link16.exe hello.obj, hello.exe;

ml.exe fait partie de l'installation de Visual Studio. link16.exe fait partie Suite bibliothèque Irvine ( » Exemples de programmes et le code source de bibliothèque de liens. .. »).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top