• 09.07.2025, 16:05
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

powerslide

unregistriert

modulo 10 in assembler

Sonntag, 21. März 2004, 13:21

Hallo,
ich hab ein kleines problem.. und zwar..

modulo 10 in assembler ausdrücken

modulo 8 is einfach:

Quellcode

1
andl $7 ; %eax

zumindest solte da das richtige ruaskommen :)
aber bei mod10 steig ich nicht durch
also helft mir mal ;)

slide

r1ppch3n

Moderator

Re: modulo 10 in assembler

Sonntag, 21. März 2004, 13:43

das ist so einfach das glaubst du gar ned

schlag domma nach was 'div' macht ;D (bzw 'idiv' für vorzeichenrichtige division ;))

powerslide

unregistriert

Re: modulo 10 in assembler

Sonntag, 21. März 2004, 14:10

ich glaub so einfach isses ned.. schliesslich stehen mir nur elemntare logische operationen und shift-befehle zur verfügung

r1ppch3n

Moderator

Re: modulo 10 in assembler

Sonntag, 21. März 2004, 14:29

hmm... hatt nur kurz in meinen unterlagen nachschaut (x86 assembler halt...)

alternativ könntest sowas zsammbaun:

Quellcode

1
2
3
4
5
6
jmp S2
S1:
  sub ax,0Ah
S2:
  cmp ax, 0Ah
jnb S1


sub has doch wenigstens noch, oder? ;)

powerslide

unregistriert

Re: modulo 10 in assembler

Sonntag, 21. März 2004, 15:16

ahh.. jezz habis no aweng umbaut dasses auf dem 6805hc lüppt .. hihi.. froi

Quellcode

1
2
3
4
5
6
7
8
9
10
//y = x modulo 10

    movl x , %eax
    jmp 2
1: 
    subl $10 , %eax
2: 
    cmp $10 , %eax
    jl 1
    movl %eax , y


feiniiii

sollte passen oder?

r1ppch3n

Moderator

Re: modulo 10 in assembler

Sonntag, 21. März 2004, 15:25

hmmm... die syntax is dann doch n bisi anders als ichs gewohnt bin (bisher hab i nur n bisi auf x86 und nem 8051 'geproggt' und auch das nicht ganz freiwillig...) abers scheint zu passen ;)

capt2001

Senior Member

Re: modulo 10 in assembler

Montag, 22. März 2004, 16:10

hab auch geflucht als wir damals mips asm gecodet haben...alles sehr ungewohnt...aber wenn man sich erstmal an die masse von registern bei risc gewöhnt hat, dann ist x86 nur noch deprimierend :/

r1ppch3n

Moderator

Re: modulo 10 in assembler

Montag, 22. März 2004, 17:27

push, pop, push, pop, push, pop, ...
jo, das kann einem irgendwann wirklich auf den zeigern gehn ;D

capt2001

Senior Member

Re: modulo 10 in assembler

Montag, 22. März 2004, 19:33

n bisschen optimierungsarbeit für den code oben erhöht leider die komplexität beträchtlich, wenn mans sauber machen will. das ganze funktioniert zwar schon so wie oben, für grosse zahlen jedoch...subtraktion kostet ja fast nichts, der sprung noch weniger, der vergleich auch nicht soviel, auch die sprungvorhersage macht wohl keine probleme, so dass man bei pipelines nicht mit problemen rechnen muss...aber die pure masse der schleifenwiederholungen...immerhin zahl/10 stück :/ bei maxint ne spassige sache...

ansonsten bleiben ja nur möglichkeiten wie konventionelle divisionsalgorithmen (die sind dann auch universell verwendbar), alternativ eine schleife mit einer grösseren potenz oder eine totale eigenbau-lösung, die dann nur mit 10 funktioniert und nicht ohne weiteres ausbaubar ist (z.b. betrachtung einzelner stelligkeiten). die erste und die dritte möglichkeit haben den vorteil, dass ihre laufzeit ziemlich unabhängig von der zahl ist.

schnell modulo rechnen ist schon ein bisschen tricky, wenn der asm befehlssatz das nicht zur verfügung stellt :/

r1ppch3n

Moderator

Re: modulo 10 in assembler

Montag, 22. März 2004, 19:50

i hab nie behauptet das wär das absolute nonplusulltra, i wollt nur eben ne funktionierende lösung zsammbasteln ;)