tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
471
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cArNi Tutorials.de Gastzugang
    Aufgabe:

    Eingabe:
    Beliebig viele positive Zahlen, die ab einer festen Adresse im Speicher stehen.

    Ausgabe:
    Wert1 + Wert2 + Wert3 + ....... + WertN
    N


    Bin da noch Nub drin, vielleicht hilft mir einer mal aus.
     

  2. #2
    Frankdfe Frankdfe ist offline Mitglied Gold
    Registriert seit
    Apr 2003
    Beiträge
    151
    Hallo!

    An Adresse liste stehen die Werte(hier 20 Werte)

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
     
    MOV BX, liste
    MOV CX,0
    MOV AX,0 ;AX enthält die Summe
     
    marke:
    MOV DX, [BX]
    ADD AX, DX 
    INC BX ; Gehe zum nächsten Wert
    INC CX
    CMP CX,20
    JNZ marke ; Wiederhole die Schritte 20 mal
     
    DIV CX ; AX=AX/20

    Ich hab das nicht getestet, aber im groben sollte das Funktionieren

    Gruß Frank
     
    Der Glückliche phantasiert nie. (Sigmund Freud)
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)
    Daraus folgt: Die Genie's sind nicht glücklich.

  3. #3
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    also da läst sich noch einiges verbessern... ersten solltest du 32bit register benutzen, dann verhinderst du das überlaufen beim addieren... des weiteren muss im pmode ein pointer 32bit haben.... da windows gefragt was ist das zu beachten
    Außerdem verarbeitet das progy so wie es is immer jeden wert doppelt...als low und als highbyte... also sollten wir für int werte wohl nicht 1 sondern 4 zum pointer addieren, nun ist es noch eine gute idee die anzahl der elemente nicht statisch festzuschreiben sondern sie in einem register zu übergeben und den wert decrementieren bis er null ist. für den pointer würd ich SI, den SourceIndexPointer benutzen....
    Außerdem sollte ein mov ---, 0 möglicht vermieden werden, da es CPUs gibt die dies nicht unstützen... zum löschen eines registers sollte daher besser ein xor durchgeführt werden...
    xor eax, eax setzt das eax register auf null, und das zuverlässiger als ein mov...
    des weiteren sieht es optisch besser aus wenn du die befehle klein schreibst finde ich...
    mov si, liste
    mov ecx, 20

    xor eax, eax
    mov ebx, ecx

    marke:
    mov edx, [si]
    add eax, edx
    add si, 4
    dec ecx
    jnz marke

    div ebx
     

Ähnliche Themen

  1. Assembler
    Von Spongi27 im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 06.02.08, 21:18
  2. OS - Assembler und C++?!
    Von Philipp9494 im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 02.07.07, 21:10
  3. Assembler ISR
    Von Don_Pazo im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 04.02.07, 19:45
  4. C und Assembler
    Von maltor im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 02.06.06, 12:31
  5. Assembler
    Von Chronix im Forum Sonstige Sprachen
    Antworten: 3
    Letzter Beitrag: 15.11.04, 22:02