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:
ja -> salta se ax è maggiore di bx
jae -> salta se ax è maggiore o uguale a bx
jb -> salta se ax è minore di bx
jbe -> salta se ax è minore o uguale a bx
jnz -> salta se ax è diverso da bx
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)