• 10.07.2025, 05:10
  • Register
  • Login
  • You are not logged in.

 

powerslide

Unregistered

modulo 10 in assembler

Sunday, March 21st 2004, 1:21pm

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

modulo 10 in assembler ausdrücken

modulo 8 is einfach:

Source code

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

Sunday, March 21st 2004, 1:43pm

das ist so einfach das glaubst du gar ned

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

powerslide

Unregistered

Re: modulo 10 in assembler

Sunday, March 21st 2004, 2:10pm

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

Sunday, March 21st 2004, 2:29pm

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

alternativ könntest sowas zsammbaun:

Source code

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

Unregistered

Re: modulo 10 in assembler

Sunday, March 21st 2004, 3:16pm

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

Source code

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

Sunday, March 21st 2004, 3:25pm

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

Monday, March 22nd 2004, 4:10pm

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

Monday, March 22nd 2004, 5:27pm

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

Monday, March 22nd 2004, 7:33pm

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

Monday, March 22nd 2004, 7:50pm

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