Frage

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

Der Fehler Ich erhalte fehler „A2074: nicht zugreifen kann Etikett durch Segmentregister“

Ich versuche, die soffset einer Schleife durch die byteArray zu verwenden.

War es hilfreich?

Lösung

Ich bin sicher nicht das, was in Irvine16.inc, aber ich wette, es .model small,... irgendwann sagt.

Wenn Sie fügen

ASSUME DS:_DATA

dann Fehlermeldungen gehen weg, obwohl ich bezweifle, das ist genug, um das Programm zum Laufen zu bringen.


Ok, ich habe eine Idee. Ich glaube, Sie zu den 32-Bit-Beispiele schalten soll. Das ist ein flaches Modell, bei dem die Segmentregister werden durch das Betriebssystem und nicht die, welche von Programmen aufgebaut. Ich habe gerade heruntergeladen die irvine Beispiele und das Beispielprojekt, das 32-Bits werden passiert hat zusammenbauen und laufen.

In den wierd und verdrehter Welt, die x86-Computer-Code, das 16-Bit-Modell ist ein bisschen komplexer als das 32-Bit-Modell, zumindest aus der Sicht eines Anwenderprogrammes.

Andere Tipps

Dieser Fehler wird verursacht, indem man versucht, ein DOS-Programm (.model! = Flach) auf einen COFF OBJ-Datei zu montieren. Zusätzlich wirft ML.EXE error A2006:undefined symbol : DGROUP. Die Quelle soll auf eine alte Art und Weise OMF Datei zusammengefügt werden. Erstellen Sie die Datei mit folgenden Befehlszeilen:

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

ml.exe ist Teil der Visual Studio-Installation. link16.exe ist Teil der Irvine Bibliothek Suite (“Beispielprogramme und Link Library-Quellcode. .. ").

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top