Impossibile accedere etichette attraverso registri di segmento, errore di assemblaggio

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

  •  19-09-2019
  •  | 
  •  

Domanda

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'errore che sto ottenendo è errore "A2074: non può accedere etichette attraverso registri di segmento"

Sto cercando di utilizzare il soffset per scorrere il ByteArray.

È stato utile?

Soluzione

Non sono sicuro di cosa c'è in Irvine16.inc, ma scommetto che sta dicendo .model small,... a un certo punto.

Se si aggiunge

ASSUME DS:_DATA

quindi i vostri messaggi di errore andrà via, anche se dubito se questo è sufficiente a rendere l'esecuzione del programma.


Ok, ho un'idea. Penso che si dovrebbe passare agli esempi a 32 bit. Questo è un modello di appartamento in cui sono impostati i registri di segmento dal sistema operativo e non utilizzati dai programmi. Ho appena scaricato esempi Irvine e il progetto di esempio, che risulta essere di 32 bit ha assemblare ed eseguire.

Nel strano e contorto mondo che è codice macchina x86, il modello a 16 bit è un po 'più complessa rispetto al modello a 32-bit, almeno dal punto di vista di un programma utente.

Altri suggerimenti

Questo errore è causato dal tentativo di assemblare un programma DOS (.model! = Piatto) ad un file COFF obj. Inoltre ML.EXE getta error A2006:undefined symbol : DGROUP. La sorgente deve essere montato ad un vecchio file di moda OMF. Costruire il file con le seguenti righe di comando:

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

ml.exe è parte dell'installazione di Visual Studio. link16.exe fa parte del di Irvine suite di biblioteca (" Programmi di esempio e il codice sorgente della libreria di collegamento. .. ").

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top