Diskussion:Assembler-Programmierung für x86-Prozessoren/ Sprünge und Schleifen
Wo sind den im Kapitel "Sprünge und Schleifen" die Schleifen?
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"
BearbeitenDas "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
BearbeitenUm 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)