Ciao a tutti ! Avrei bisogno di chiarimenti sul funzionamento del programma sottoriportato!!! Non riesco a capire come agisce il comando IDIV , in questo caso divido un registro a 16 bit ( AX ) per uno a 8 bit ( BL )...
Secondo il mio ragionamento il valore contenuto in AX viene diviso per BL ( ovvero -4 ) ma il risultato non torna, e se faccio il debug con visual studio, BL non assume il valore -4 , ma '252', come se da 0 tornasse indietro 255...254...253...252.
Se qualcuno ha voglia di darmi una delucidazione su come lavora la CPU con queste istruzioni glie ne sarei molto grato ! Grazie
Mat è uno short int ( 16 bit ) e vale 6569.
__asm
{
MOV AX,Mat
OR AX, 0FFF1h
MOV BL, -4
IDIV BL // Divisione con segno di AX per r/m8 : ris in AL e resto in AH
PUSH AX
POP Ris
}