Sortieren mit Bubble-Sort history menue Letztmalig dran rumgefummelt: 28.06.07 07:48:27

Bubble-Sort

ist wahrscheinlich fehlerfrei und kann unbedenklich verwendet werden

ZIP-Archiv mit allen benötigten Assmbler-Routinen

die beliebte alphabetisch sortierte Schnell-Liste

die beliebte numerisch sortierte Schnell-Liste

Allgemeine FLAG-Wirkung

FLAG-Wirkung auf OP-Code-Gruppen

Algotithmus Bubblesort: Eine gegebene Menge von Elementen soll via Bubble-Sort sortiert werden.
Eingangsparameter: Divident in DE Divisor in HL und BC
Ausgangsparameter: Quotient in BC und HL

Verfahren:

Die Division ist die Umkehrung der Multiplikation. Es soll eine Division mit einem Dividenden (DV) von 32 Bit und einem Divisor (DR) von 16 Bit betrachtet werden. Der Quotient (Q) möge 16 Bit sein.
Dann gilt:

DV : DR = Q Rest R oder:


 

Bringt man die Gleichung auf die Form

R = DV - Q - DR

und schreibt den Quotienten Q als Dualzahl

Q = Q15 · 215 + Q14 · 214 + ... Q1 · 21 + Q0

so kann man unser Verfahren aus der Gleichung

R = DV - 215 Q15 DR - 214 Q14 DR -... 21 Q1 DR - Q0 DR

ableiten.

Man probiert, ob 215 - DR vom Dividenden DV abzuziehen geht. Wenn »ja«, ist Q15 = 1, und es werden 215 - DR abgezogen; wenn »nein«, ist Q15 = 0, und 215 - DR werden nicht abgezogen. Danach verfährt man ebenso mit 214 - DR bis 20 - DR. Für die Division ergibt sich damit folgendes Blockschema (Bild unten).
 

Bildung von Dividend - Divisor
Ist das Ergebnis negativ, so wird der Divisor wieder zum Ergebnis dazugezählt (Rückstellung des Restes) und in die letzte Stelle des Quotienten eine 0 eingetragen.
Ist das Ergebnis positiv, so wird keine Rückstellung des Restes vorgenommen. In die letzte Quotientenstelle trägt man eine 1 ein.
2. Quotient und Dividend werden gemeinsam 1 Stelle nach links verschoben. 3. 1. und 2. werden so oft wiederholt, wie der Quotient Stellen haben soll.
Am Ende steht der Quotient im Quotientenregister und im Dividendenregister der Rest. Da im Divisorregister der Divisor - 2'6 steht und wir mit einem 16-Bit-Divisor arbeiten, müssen Punkt 1 und 2 einmal zusätzlich durchlaufen und die nach der ersten Linksverschiebung aus dem Restregister austretende vorderste Stelle in einem weiteren Register aufgefangen werden.
 

Marke Operation Operand Kommentar
  PN B1  
;BASISPROGRAMM EUER MULTIPLIKATION
;16 X 16 BIT-MULTIPLIKATION, UNSIGNIERT, ERGEBNIS 32 BIT
;MULTIPLIKAND IN DE
;MULTIPLIKATOR IN BC
       
MUL2: LD HL,0  
  LD A,17 ;ZAEHLER
K3: RR B
  RR C  
  DEC A  
  RZ    
  JRNC K7-#  
  ADD HL,DE  
K7: RR H  
  RR L  
  JR K3-#  
  END    

Beispiel für eine kleine Anweisungstabelle in vollständiger Assembler-Codierung



zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost im Juni 2007

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist