Sto imparando sulla divisione in linguaggio assembly. Secondo il libro da cui sto imparando, il risultato dell'operazione idiv è collocato in eax e il resto in edx.Come implementare l'operatore mod in assembly
Un esercizio nel libro è quello di attuare number = result % divisor
in assemblea.
Avrei pensato che sarebbe stato equivalente a una normale operazione di divisione tranne edx sarebbe stato il risultato.
Questo non ha funzionato tuttavia ed edx restituito apparentemente immondizia.
Perché? Come hai implementato lo pseudo-codice sopra in assembly?
Vorrei codificare una piccola funzione C e osservare l'assembly generato (ad esempio con 'gcc -O -fverbose-asm -S tiny.c') –
La tua domanda è simile a http://stackoverflow.com/questions/8021772/assembly-language-how-to-do-modulo/8022107 Mostra il tuo codice effettivo se hai problemi specifici (molto probabilmente non stai cancellando la parte superiore superiore di rdx: rax, edx: eax o dx: ascia). – user786653
Difficile da indovinare senza vedere il codice, ma un errore comune è dimenticare di zero edx prima dell'idiv. –