Call Funktion
-
Hallo ich versuche gerade den Text Hallo 2 mal hintereinander auszugeben vorhin funktionierte es aber jetzt auf einmal nicht mehr hab ich da was falsch gemacht ?
.MODEL SMALL .STACK 100h .DATA Hallo1 DB "hallo",10,13,"$" .CODE start: mov ax,@data mov ds,ax mov dx,offset Hallo1 ; meldung im register dx speichern mov cx , 2 call RepStr mov ah,4Ch int 21h RepStr PROC NEAR push ax ; ax wert aufm stack speichern push cx ; cx wert auf dem stack speichern mov ah,09h LoopLbl: int 21h Loop LoopLbl pop cx pop ax ret RepStr endp end start
-
So auf den ersten Blick kein Fehler erkennbar.
Was "funktioniert nicht" (was passiert statt der erwarteten Ausgabe)?
Was hast du schon versucht, bzw. veraendert?
Schon mal versucht, mit einem Debugger zu arbeiten?
-
Nobuo T schrieb:
So auf den ersten Blick kein Fehler erkennbar.
Was "funktioniert nicht" (was passiert statt der erwarteten Ausgabe)?
Was hast du schon versucht, bzw. veraendert?
Schon mal versucht, mit einem Debugger zu arbeiten?Kopiert push cx eigentlich den Inhalt des Registers cx auf den Stack oder schiebt ihn dahin? Bzw ist es sichergestellt, dass der Inhalt von cx sich nach push cx nicht geändert hat?
-
Ja, "push cx" ist von der Funktion aequivalent zu folgendem Code
sub sp, 2 mov [ss:sp], cx
-
Den Text aus der Alten Datei hab in ein neue Datei kopiert und jetzt gehts es ...
-
LOL das ist interessant.
Datei mit dem Namen test.asm erstellt. <--- Funktioniert
Datei umbenannt in call.asm <--- Funktioniert NICHT
Also Datei wieder in test.asm umbenannt und siehe da es funktioniert wieder.
Hat da wer eine logische erklärung für ?
-
Mhhm wenn ich die Datei nicht call.asm nenne geht es nicht.
Dann nenn ich sie einfach anders.
-
Wie sieht denn der Aufruf aus?
Kommandozeile? Batchdatei? Makefile?
Was steht da genau?
-
Tatsächlich.!
Wenn die Datei "call.asm" heißt, spruckt er garnichts auf den Schirm aus.Assembliert durch: ml call.asm
Aufruf: call.exe