È inutile. Proprio non riesco a capire come calcolarla a mano (cioè senza calcolatore).
Ma andiamo con ordine e faccio subito un esempio(valori espressi in esadecimale):
AX = FFFF (è un registro a 16 bit)
BL = 03 (è un registro a 8 bit)
IDIV BL
Nella divisione tra un numero a 16 bit con uno a 8 bit, il risultato è messo in AL e il resto in AH (almeno quando si lavora con IDIV, c' è il resto). Eseguendo questa operazione con l' assembler di visual studio, mi da:
AL (risultato) = 00
AH (resto)= FF
Ma perchè?![]()
Eppure:
Se il calcolo sopra lo faccio con la calcolatrice(quindi dovrebbe fare un DIV e non IDIV), come risultato mi da 5555.
Se il calcolo lo faccio a mano, tramite numeri binari, cioè 11111111111111111111 : 11 Mi da, in esadecimale 5555.
Se faccio l' operazione di cui sopra ma facendo DIV BL (quindi senza segno), mi arriva il messaggio di OVERFLOW in Visual Studio.
Ciò che chiedo è: qualcuno sa come funziona IDIV esattamente? Se dovessi farmi il calcolo a mano, intendo.
Ci risentiamo presto(spero), grazie per l' attenzione.