In particolare, mi incuriosisce la flag di segno.
Vuoi vedere che questa flag diventa NG semplicemente se il risultato di un'operazione ha il primo bit pari a 1?
Per verificarlo, faccio una somma che mi dia il primo bit pari a 1:
text segment public start: mov al,01111111B mov bl,10000000B add al,bl mov ah,4ch int 21h text ends end start
-r AX=0000 BX=0000 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1771 ES=1771 SS=1781 CS=1781 IP=0000 NV UP EI PL NZ NA PO NC 1781:0000 B07F MOV AL,7F -t AX=007F BX=0000 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1771 ES=1771 SS=1781 CS=1781 IP=0002 NV UP EI PL NZ NA PO NC 1781:0002 B380 MOV BL,80 -t AX=007F BX=0080 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1771 ES=1771 SS=1781 CS=1781 IP=0004 NV UP EI PL NZ NA PO NC 1781:0004 02C3 ADD AL,BL -t AX=00FF BX=0080 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1771 ES=1771 SS=1781 CS=1781 IP=0006 NV UP EI NG NZ NA PE NC 1781:0006 B44C MOV AH,4C -Sì! Verificato! Ovviamente, se stiamo facendo un'operazione senza segno, ce ne freghiamo.
C'è un'altra flag che cambia, la seconda, che da PO diventa PE. Che significa? Giobe, aiutami tu!
Ecco: sarebbe il Parity Flag. Ricordando che in inglese Even e Odd significano Pari e Dispari, PO significa che nel risultato c'è un numero dispari di 1 mentre PE significa numero pari di 1.
Nessun commento:
Posta un commento