Xhack
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.
Xhack

Un forum dedicato all'hacking
 
IndiceIndice  PortalePortale  CercaCerca  Ultime immaginiUltime immagini  RegistratiRegistrati  Accedi  

 

 assembler,le jump

Andare in basso 
AutoreMessaggio
giozh°_°
Moderatore
Moderatore
giozh°_°


Numero di messaggi : 156
Data d'iscrizione : 18.08.07

assembler,le jump Empty
MessaggioTitolo: assembler,le jump   assembler,le jump EmptyLun Ago 27, 2007 8:48 am

Ciao. oggi introdurrò altre semplici istruzioni fondamentali e inizieremo a scrivere qualche piccolo programma:cheers:.
L'istruzione di oggi è la jump (salto) che fondamentalmente è usata per due scopi: realizzare dei cicli(do while e for del c++) e delle scelte (if else).
le jump principali sono:
JMP jump salto incondizionato
JZ jump zero salto se si è azzerato un registro
JNZ jumop not zero salto se non si è azzerato un registro
JE jump equal salto se il contenuto di 2 registri è uguale
JL jump less salto se il valore del 1° reg è minore del 2°
JG jump greater salto se il 1° reg è maggiore del 2°
JLE jump less or equal come sopra,salta anche se uguali
JGE jump greater or euqual come sopra, salta anche se uguali
JC jump on carry salta se si è avuto un bit di riporto
JNC jump not carry salta se non si è avuto un bit di riporto

vediamo un piccolo programma
Codice:

            mov bx,0010
loop:      inc bx
            jmp loop
questo programma mette il valore 0010 in bx e lo incrementa all'infinito.
altro esempio
Codice:

            mov cl,05h
            mov bl,0ah
torna:    dec bl
            dec cl
            jnz torna
            mov[0300],bl
vediamo se avete capito...metto 05 in cl (che sarà il nostro contatore) metto 0ah(10 in decimale),decremento di 1 bl e cl, se il valore di cl non è zero (JNZ) il programma va a torna e ripete le istruzioni finche la condizione non è falsa,poi quando cl arriva a zero metto il contenuto di bl nella cella 0300.
come avete notato dopo ogni jump c'è un nome, che è scritto anche davanti l'istruzione da cui il il programma dovrà tornare dopo la jump. questo nome si chiama label (etichetta), e se qualsiasi jump è vera dovrà tornare ad eseguire il prog dalla label indicata, altrimenti il programma andrà avanti tranquillamente. quindi ricordate sempre che quando scriverete programmi in assembler di lasciare sempre uno spazio per le label.
un'altra istruzione è la CMP, che serve per confrontare il contenuto di due registri.di solito dopo una cmp c'è una jump. esempio: confronta 2 registri,se il contenuto del primo > del secondo fai un'operazione, altrimenti fai quest'altra operazione.
provate ad esercitarvi facendo un piccolo programma:
mettete 2 numeri a vostra scelta (in esadecimale mi raccomando) in 2 registri.fate la somma. se il risultato è >5 (e qui scatta la CMP e la JUMP) lo copiate nella locazione 0200, altrimenti nella 0300.
Byez afro
Torna in alto Andare in basso
 
assembler,le jump
Torna in alto 
Pagina 1 di 1
 Argomenti simili
-
» assembler (ci proviamo)
» assembler, gli interrupt
» assembler, le istruzioni base
» assembler (black ho bisogno di te)
» assembler, utiliti per tastiera

Permessi in questa sezione del forum:Non puoi rispondere agli argomenti in questo forum.
Xhack :: Programmazione :: Assembly-
Vai verso: