Autor Beitrag
YooMan
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 17.03.03 17:49 
Hi Leute!

Ich muss bis morgen in Delphi mithilfe des Assemblers einen Multiplizierer erstellen. Kann mir da jemand helfen? Ich hab nämlich irgendwie keinen Plan wie das gehen soll. Also theoretisch müsste man doch den 1. Multiplikator solang mit sich selbst addieren, bis die Anzahl dieser Vorgänge dem Wert des 2. Multiplikators entspricht, oder? :?!?:

Kann mir das vielleicht einer erklären? Oder vielleicht direkt den Quelltext dazuschreiben?

Vielen vielen Dank! :)
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Di 18.03.03 19:56 
Hä? Wozu? Das geht doch hunterdtausendmillionenmal schneller mit "MUL" bzw "FMUL" (ich kenne mich mit ASM nicht aus, kenne aber deise beiden mnemonics).

Aber du hast schon Recht: 2*5=2+2+2+2+2=5+5. Bei floats... na ja, 2*2.5=2+(2*0,5). Dann wären wir wieder beim multiplizieren.

Oder 2*2.5=2+(20*5/10). Dann wären wir beim dividieren.

Außerdem: Wenn du es mit Delphi machst (Pascal), dann ist das höchstens um Nanosekunden langsamer, denn Delphi erstellt mittlerweile furchtbar gut optimieren Assembler.

_________________
Life is a bad adventure, but the graphic is really good!
Adam Weishaupt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40



BeitragVerfasst: Do 17.07.03 17:02 
NO NO NO!!!

ich kenne mich mit assembler sehr gut aus und es geht bestimmt nicht so!!

also multiplizieren geht so: 1.faktor*2.faktor=produkt

1.faktor=al-register
2.faktor=register oder operand
produkt=ax-register

z.b. du willst 50*100 rechnen, dann sieht das so aus:

mov al,50
mul 100

das wars!! das ergebnis wird automatisch im ax-register abgelegt!
das da oben ist eine BYTE-MULTIPLIKATION! d.h. die faktoren duerfen nicht 255 ueberschreiten!!