Syntax Fehler



  • Also ich sags ja nur ungern, aber wenn du eine Binärdatei direkt ausführst (nicht in einem Emulator), dann bekommst du im Fehlerfall höchstens ein "Segmentation fault (core dumped)" bzw. das Windowsäquivalent dazu und keine "Syntax Fehler"-Meldung.

    Warum du bei den Accents einen Fehler bekommst kann ich mir nur dadurch erklären, dass du per Copy 'n Paste aus der PDF kopiert hast.



  • Mhhm jetzt funktioniert es irgendwie war der Assembler am spinnen O_o



  • Hallo ich hab nochmal eine Frage

    Frage DB "Geht es Ihnen gut (j/n)?$" ;Die Frage und die Antworten enden
    Antwort1 DB 13,10,"Toll !$"          ;mit einem $ um DOS zu zeigen, dass
    Antwort2 DB 13,10,"Schade !$"        ;es keine Zeichen mehr ausgeben soll
                                         ;13=Carriage Return
                                         ;10=Zeilenvorschub, d.h. zur naechsten
                                         ;Zeile an den Anfang gehen.
    

    Was bringt dieser Teil hier:

    Antwort1 DB 13,10,"Toll !"Antwort2DB13,10,"Schade!" Antwort2 DB 13,10,"Schade !"

    Durch die 10 z.b. soll ja ein Zeilenvorschub erfolgen und durch die 13 ein Return.

    Nur seh ich da nix von das Programm sieht ohne diese Zahlen genau so aus wie mit.

    Mit Zahlen:

    Antwort1 DB 13,10,"Toll !"Antwort2DB13,10,"Schade!" Antwort2 DB 13,10,"Schade !"

    Ohne Zahlen:

    Antwort1 DB "Toll !"Antwort2DB"Schade!" Antwort2 DB "Schade !"

    http://www.assembler.my100megs.com/ASMPage.pdf



  • Ach ja noch was das Tutorial wäre vielleicht was für das FAQ

    http://www.assembler.my100megs.com/ASMPage.pdf



  • Hallo ich hab nochmal eine Frage

    Frage DB "Geht es Ihnen gut (j/n)?$" ;Die Frage und die Antworten enden 
    Antwort1 DB 13,10,"Toll !$" ;mit einem $ um DOS zu zeigen, dass 
    Antwort2 DB 13,10,"Schade !$" ;es keine Zeichen mehr ausgeben soll 
    ;13=Carriage Return 
    ;10=Zeilenvorschub, d.h. zur naechsten 
    ;Zeile an den Anfang gehen. 	
    
    Frage DB "Geht es Ihnen gut (j/n)?$" ;Die Frage und die Antworten enden 
    Antwort1 DB 13,10,"Toll !$"          ;mit einem $ um DOS zu zeigen, dass 
    Antwort2 DB 13,10,"Schade !$"        ;es keine Zeichen mehr ausgeben soll 
                                         ;13=Carriage Return 
                                         ;10=Zeilenvorschub, d.h. zur naechsten 
                                         ;Zeile an den Anfang gehen.
    

    Was bringt dieser Teil hier:

    Antwort1 DB 13,10,"Toll !$" 
    Antwort2 DB 13,10,"Schade !$"
    

    Durch die 10 z.b. soll ja ein Zeilenvorschub erfolgen und durch die 13 ein Return.

    Nur seh ich da nix von das Programm sieht ohne diese Zahlen genau so aus wie mit.

    Und hier hätte ich noch nochmal eine Frage.
    mov ah,07h kann ich mir das so vorstellen das dass einfach eine eingabe ist
    sowie z.b.

    cin>>
    

    bei c++ ?

    Wenn ja kann man die eingabe auch noch in einer anderen Variable speichern als in al

    cmp al,"j"
    

    wobei al ist ja eigentlich auch keine Variable oder ?

    Weil man deklariert ja al nicht.

    mov ah,07h   ;tastaur eingabe
        int 21h
    
    cmp al,"j"´
    

    Edit und Anmerkungen dazu:
    1. Wenn du deinen kompletten Post wiederholst, wird er auch nicht schneller beantwortet.
    2. Wir haben auch fuer asm eigene Tags - und eine Vorschau-Funktion. So kannst du pruefen, ob alle Tags richtig gesetzt sind.
    3. Ich habe das Tut bereits in die FAQ aufgenommen und jeder duerfte inzwischen geschnallt haben, dass du es toll findest, brauchst es also nicht an jeden deiner Posts an zu haengen.



  • Sry für die flasche Code Tags und so.

    Ich wollte noch sagen das ich dass mit den Zeilenumbrüchen jetzt selber hinbekommen habe ....



  • Syntax Fehler schrieb:

    Und hier hätte ich noch nochmal eine Frage.
    mov ah,07h kann ich mir das so vorstellen das dass einfach eine eingabe ist
    sowie z.b.

    cin>>
    

    bei c++ ?

    Das mov ah, 07h macht allein nicht viel. int 21h, Funktion 7 (Funktionsnummer steht in ah) ist IMHO vielleicht eher mit getch, denn mit cin zu vergleichen...

    Syntax Fehler schrieb:

    Wenn ja kann man die eingabe auch noch in einer anderen Variable speichern als in al

    Naajaaa, im Grunde kann das Variablen-Konzept in Hochsprachen in Assembler vieles sein. idR. meint man mit "Variable" aber einen kleinen Speicherbereich. al ist aber ein Register der CPU und liegt nicht im Speicher. Register bezeichnet man ueblicherweise nicht als Variablen.
    int 21h, Funktion 7 Speichert seinen Rueckgabewert immer per Definition in al. Eben weil diese System-Funktion so geschrieben wurde. Du kannst al hinterher natuerlich hinschieben, wo du willst. Ist in diesem einfachen Beispiel aber wenig zweckmaessig.

    Syntax Fehler schrieb:

    Ich wollte noch sagen das ich dass mit den Zeilenumbrüchen jetzt selber hinbekommen habe ....

    Und was war des Raetsels Loesung?



  • Ty für die Antwort.

    Das Rätsels Lösung war:

    Da ich nur 1 Ausgabe hatte konnte ich natürlich keinen Zeilenumbruch sehen 😃

    Als ich das Programm dann mal umgeschrieben habe das es 2 Ausgaben macht da konnte ich auch meinen Zeilenumbruch bewundern. 🙂



  • Ah noch eine Frage was bedeutet das mit Dos Funktion 7 und so ?

    Sind das irgendwelche Funktionen die Nummern haben, wenn ja kann man die irgendwo nachschauen ?



  • Ein Interrupt, aufgerufen durch das Mnemonic "int" kannst du dir wie einen Funktionsaufruf vorstellen. 256 verschiedene Interrupts gibt es, damit also 256 verschiedene Funktionen, die verschiedensten Krimskrams erledigen.
    Aus Gruenden der Einfachheit und Kompatibilitaet teilt man eine Interruptfunktion wiederum in verschiedene Unterfunktionen auf, indiziert ueber Funktionsnummern, die idR. in Registern uebergeben werden. Im Fall von DOS int 21h zB. in ah.

    Nachschlagen kann man die verschiedenen Interrupt-Funktionen zB. in http://www.ctyme.com/rbrown.htm



  • k danke.


Anmelden zum Antworten