Diskussion:Assembler-Programmierung für x86-Prozessoren/ Sprünge und Schleifen
Abschnitt hinzufügenWo sind den im Kapitel "Sprünge und Schleifen" die Schleifen?
- Ganz einfach: Weiter ist der Autor noch nicht gekommen. Kannst du es vielleicht weiterschreiben? -- Klaus 22:33, 16. Mai 2006 (UTC)
- Nicht mehr nötig. Hab das Kapitel jetzt eingefügt. -- Daniel B 20:23, 18. Jul 2006 (UTC)
Satzbau
[Bearbeiten]<quote>Wenn der Schleifen um 2 oder 3 verringert werden die meisten Assemblerprogrammierer stattdessen auf den dec Befehl zurückgreifen, da dieser schneller ist als der sub Befehl.</quote> An dem Satz stimmt doch etwas nicht...
"IF-ELSE" oder "IF-THEN"
[Bearbeiten]Das "IF-ELSE" Beispiel ist ein wenig verwirrend. In eine höhere Programmiersprache übersetzt wäre es ja nur ein einzelner IF-Block, der abhängig von der Bedingung entweder ausgeführt wird, oder nicht. Ein ELSE gibt es eigentlich nicht, denn die Anweisungen, die auf den IF-Block folgen (das Beenden), werden in beiden Fällen ausgeführt. Sollte es nicht eher "IF-THEN" heißen? -- 84.141.240.47 22:21, 9. Sep 2006 (CEST)
Fakultätsbeispiel
[Bearbeiten]Um auf das richtige Ergebnis zu kommen, müßte es bei der Initialisierung aber "mov bx, 0" heißen und nicht "mov bx, 1" (vor "schleife"). Andernfalls erhält man (n+1)! (statt der gewünschten n!).
- Leider hast du Unrecht, dass bx den wert 0 bekommen muss. Weil sonst eine Multiplikation mit 0 statt findet. Und das resultat den Wert 0 bekommt.
- CX:7->6 : BX = 1
- CX:6->5 : BX = 2
- CX:5->4 : BX = 3
- CX:4->3 : BX = 4
- CX:3->2 : BX = 5
- CX:2->1 : BX = 6
- CX:1->0 : BX = 7
- Abbruch
- Damit wird die Fakultät von 7 Berechnet. -- ThePacker 16:03, 11. Jan. 2007 (CET)
Wieso soll dann eine Multiplikation mit 0 stattfinden ? In der Schleife steht doch am Anfang "inc bx". Außerdem ist 9D80h=8!=40320, während für 7!=5040=13B0h herauskommt (habe ich übrigens ausprobiert !).
- Okay, dann kann man alternativ die inc und mul zeile verttauschen oder bx auf null setzen. Ich hab nur flüchtig drüber geschaut. -- ThePacker 18:46, 11. Jan. 2007 (CET)