# [NASM] modulo Operator



## Schnacki (10. Dezember 2007)

Hallo,

ich habe mal eine schnelle Frage.
Gibt es in Nasm einen Modulobefehl? (was wie % in c)


----------



## deepthroat (10. Dezember 2007)

Hi.





Schnacki hat gesagt.:


> Hallo,
> 
> ich habe mal eine schnelle Frage.
> Gibt es in Nasm einen Modulobefehl? (was wie % in c)


Schnelle Antwort: http://web.mit.edu/nasm_v0.98/doc/nasm/html/nasmdoc3.html#section-3.5.6

Gruß


----------



## Schnacki (10. Dezember 2007)

Darin wird aber nicht erklärt wie der lautet.


----------



## stephsto (15. Dezember 2007)

Hallo,

ich glaube du verstehst da was falsch. NASM ist ein Assembler und dort gibt es generell nur "Assemblerbefehle". Diese kannst du im Instruction Set der 80x86-Reihe nachlesen. Ich habe es Mal überflogen und wie vermutet gibt es keinen Modulo Befehl. Das was deepthroat meinte sind Preprocessor Befehle. Das heißt, dass du zum Beispiel so etwas durchaus machen kannst:

mov ax, 0x4%3

Das Problem dabei ist, dass es natürlich wenig bringt. Das wird erst interessant, wenn man es mit Adressbereichen und so weiter zutun bekommt.


----------



## TheAlchimist (26. Juni 2008)

Moinsen!

Auch wenn der Thread schon etwas älter ist:
Es gibt durchaus einen "Modulo"-Befehl. Er lautet "DIV" ;-)

DIV führt eine Ganzzahl-Division durch, in der 8-Bit-Version wird die Zahl in AX durch den angebenen Wert durch und liefert dir in AL das Ergebnis - und in AH den REST, also den Modulo-Wert. 

Als 16-Bit Befehl wird das Registerpaar DX:AX geteilt, DX enthält den Rest und AX das Ergebnis.

Bei einem 32-Bit-Operanden werden EDX:EAX geteilt, EDX enthält den Rest und EAX wieder das Ergebnis.

Ob eine 8-Bit, 16-Bit oder 32-Bit-Operation durchgeführt wird, entscheidet der Assembler an dem hinter DIV angegbenen Operanden. Je nachdem ob dieser 8, 16 oder 32 Bit breit ist, wird der entsprechende Befehl übersetzt.

Ich hoffe, dass hilft jetzt noch weiter.

MfG
TheAlchimist


----------

