www.bertinettobartolomeodavide.it

 

Se ritenete che il contenuto di questo sito ed il mio lavoro possano esservi stati utili in qualche modo e possano aver cambiato in piccola misura la vostra vita, potrete contribuire al mantenimento e alla diffusione dei materiali in esso contenuti con una donazione di importo completamente libero. Ovviamente non siete obbligati ma se qualcuno deciderà di aderire gliene sarò infinitamente grato!

CONDIZIONE VERO FALSO COMANDO 'J...' COME 'IF......THEN' IN ASSEMBLY.

DIGITIAMO:

-A 100                                            ----> inseriamo i comandi
14A0:0100 mov ax,0003                ----> valore in ax
14A0:0103 mov bx,0003                 ---> valore in bx
14A0:0106 cmp ax,bx                    ----> compara i valori presenti in ax e bx
14A0:0108 jz 0113                         ----> se ax e bx sono UGUALI
14A0:010A mov ah,09                  
14A0:010C mov dx,0200
14A0:010F int 21                            ----> risposta se ax e bx NON sono uguali
14A0:0111 int 20                            -----> termina il programma
14A0:0113 mov ah,09                    
14A0:0115 mov dx,0230
14A0:0118 int 21                            -----> risposta se ax è uguale a bx 
14A0:011A int 20
14A0:011C

-a200                                            ----> inseriamo i comandi dall'indirizzo 200h in avanti
14A0:0200 db'sbagliato$'              ------> stringa se è diverso  
14A0:020A
-a230                                            -----> inseriamo i comandi dall'indirizzo 200h in avanti
14A0:0230 db'esatto$'                    ----> stringa se è uguale
14A0:0237

-g 11c                                            ----> esatto
esatto                                            ----> risultato: esatto perché ax e bx sono uguali (proviamo a modificare ax con 4)
L'esecuzione del programma è terminata normalmente

altre opzioni:

PS: il comando 'J..' tiene conto del registro 'ZERO-FLAG' se è a '0' o a '1'.

I flag sono indicati con il comando 'r':

-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=14A0 ES=14A0 SS=14A0 CS=14A0 IP=0100 NV UP EI PL NZ NA PO NC ---> questi sono i FLAG a zero.
14A0:0100 B80300 MOV AX,0003

Se noi eseguiamo il programma fino all'indirizzo 11ah in modo da non eseguire il comando int 20 avremo i flag e tutti gl'altri registri non azzerati:

-g 11a
esatto
AX=0924 BX=0003 CX=0000 DX=0230 SP=FFEE BP=0000 SI=0000 DI=0000
DS=14A0 ES=14A0 SS=14A0 CS=14A0 IP=011A NV UP EI PL ZR NA PE NC  ----> ora alcuni FLAG sono a uno.
14A0:011A CD20 INT 20

Il discorso dei flag è abbastanza complicato a voi vi basti sapere questo e tutto funzionerà benissimo.

1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16

Se ti interessa scaricare questo tutorial in formato PDF premi questa scritta!!!

(disponibile anche su www.manuali.it)

(presente anche su www.tutorialpc.it)

 

Dott. Bartolomeo Davide Bertinetto

www.bertinettobartolomeodavide.it