link errors
-
ich hab erst vor ein paar tagen angefangen in assembler zu proggen, aber nachdem ich einige "compiler" ausprobiert hab lässt der erste erfolg immernoch auf sich warten...
das hauptptoblem ist das ich mit den fehlermeldungen, die übrigens nur beim linken auftachen, nix anfangen kann...1. Code
MODEL TINY ;Für COM-Files CODE SEGMENT ;Beginn Code-Seg ASSUME CS:CODE;Zuweisung an CS ORG 100h ;Startadresse COM start: ;Startlabel MOV AX,0902h ;Funkt. 9h, ASCII-Code 2h MOV BX,15 ;Farbcode Weiß MOV CX,1 ;Anzahl der Zeichen = 1 INT 10h ;Zeichen auf Screen bringen MOV AX,4C00h ;Funkt. 4Ch INT 21h ;DOS-Exit CODE ENDS ;Ende Code-Seg END start ;Ende des Proggys(aus "the reald adoks way to assembler", linked in masm)
error:
"link 2001: unresolved external symbol"2. Code
daten segment meldung db "hallo Welt!","$" daten ends stapel segment byte stack dw 128 dup (?) stapel ends code segment assume cs:code,ds:daten,es:nothing,ss:stapel start: mov ax,daten mov ds,ax mov dx, offset meldung mov ah,9h int 21h mov ah, 4ch int 21h code ends end start(ebenfalls aus einem tut, linked in tasm)
error:
"Warning: no stack"1. Frage: warum fangen die codes total verschieden an? in einem andern tut steht dann wieder jeder code fängt mit
.386 .DATA usw.an. Die syntax für masm und tasm ist doch gleich oder etwa nicht?
2. Frage: was bedeuten die errors (also was stack is und so weiss ich schon)?
-
Zu 1:
Nein. TASM unterstuetzt auch MASM-Syntax, umgekehrt funktioniert das jedoch nicht.Zu 2:
Die Fehlermeldungen sind doch an sich recht selbsterklaerend:
In Fall 1 hast du hast du irgendwo in deiner Objektdatei ein nichtaufgelöstes externes Symbol.
Im 2. Fall wird aus irgendeinem Grund darauf hingewiesen, dass dein Programm keinen Stack hat.Mit MASM kenne ich mich nicht aus. Schau dir nochmal genau an, mit welchen switches da gearbeitet wird und überprüfe mit der Hilfeseiten des Assemblers und Linkers (Option /?), was genau die Befehlszeilen zum Assemblieren/Linken jeweils eigentlich tun sollten.
Ich vermute aber einfach mal, dass du versucht hast, ein 16Bit Programm mit dem 32Bit MASM-Packet zu erstellen. => klappt nicht.Bei dem TASM-Code habe ich keine Fehlermeldung beim Linken gesehen.
Mit welchem Befehl assemblierst/linkst du den code?
Wie auch immer, im 2. Fall handelt es sich nur um eine Warnung, die du fuer dieses Beispiel notfalls auch ignorieren kannst.
-
wie gesagt ich bin ein zimelicher anfänger
Nobuo T schrieb:
Zu 2:
Die Fehlermeldungen sind doch an sich recht selbsterklaerend:
In Fall 1 hast du hast du irgendwo in deiner Objektdatei ein nichtaufgelöstes externes Symbol.wirkt auf mich bisher noch etwas kryptisch...

Nobuo T schrieb:
Im 2. Fall wird aus irgendeinem Grund darauf hingewiesen, dass dein Programm keinen Stack hat.
wie kann ich das ändern?
Nobuo T schrieb:
Mit welchem Befehl assemblierst/linkst du den code?
cmd->tlink
dannach hallo.exe, allerdings erhalte ich dann nur eine leerzeile.
ein weiteres problem, das ich auch anfangs bei C hatte: die ausgabe erscheint nur für null komma ... sekunden. wie kann ich das programm unterbrechen und durch benutzereingabe fortsetzen?
-
nichmal eine minute nach dem letzten post hab ich das zweite bsp. nochmal probiert. jetzt klappts, warum auch immer

danke!