Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ==============================
- ;FONDAMENTALI |
- ==============================
- h, l;registri 8 bit
- dl ; registro da cui viene preso il valore da stampare
- al ; registro in cui viene salvato il carattere letto da tastiera
- cx ; registro per ciclo contatore
- ;registri : ax,bx,cx,dx
- al + ah = ax ;16 bit
- A -> a = "+32"
- ==============================
- ;TEORIA |
- ==============================
- --------------------------------------------------------------------------------
- mov cx,10 ;Comando per l'iterazione
- myloop:
- ;istruzioni da eseguire
- ;istruzioni da eseguire
- ;istruzioni da eseguire
- loop myloop ; salta a 27 tante volte quante cx
- --------------------------------------------------------------------------------
- jmp myjmp
- ;istruzione da saltare
- myjmp:
- ;istruzioni da eseguire
- --------------------------------------------------------------------------------
- cmp cosa1,cosa2 ; compara cosa1 con cosa2
- je tagequal ; salta se uguale
- jg taggreat ; salta se cosa1 > cosa2
- jl tagless ; salta se cosa2 > cosa1
- ;codice che viene eseguito senza saltare
- ;codice che viene eseguito senza saltare
- tagequal:
- ;salta tutti i tag
- ;codice che viene eseguito se comparazione risulta uguale
- taggreat:
- ;salta tutti i tag
- ;codice che viene eseguito se comparazione risulta maggiore
- tagless:
- ;salta gli altri tag
- ;codice che viene eseguito se comparazione risulta minore
- --------------------------------------------------------------------------------
- ==================
- | CODE SNIPPETS |
- ==================
- ;Snippet per stampare una cosa
- mov dl,cosaDaStampare ;valore in dl verra stampato
- mov ah,2 ;indico la funzione da eseguire [2 = stampa]
- int 21h ;chiamo funzione per stampare
- --------------------------------------------------------------------------------
- ;Snippet per leggere una cosa
- mov ah,1 ;indico la funzione da eseguire [1 = input]
- int 21h ;chiamo funzione per l'input
- mov doveVoglioSalvareIlValore,al ;valore inserito viene salvato in al di default
- --------------------------------------------------------------------------------
- ;Programaa che SALVA SERIE di VALORI in MEMORIA [es. 200h, 201h, 202h,...]
- mov bl,200h ; scrivo in memoria da [default 200h]
- mov cx,10 ; faccio il ciclo di [DEFAULT 10] volte
- LeggiEsalvaInMemoria:
- mov ah,1 ; dico di eseguire la funzione per leggere da tastiera
- int 21h ; chiamo la funzione
- mov [bl],al ;salvo il dato inserito {il computer lo salva in al} nella cella di memoria con valore bl [200h] in questo caso {1o ciclo}
- inc bl ; incrementa la cella di memoria
- loop LeggiEsalvaInMemoria ; va all'etichetta e riparte il ciclo
- --------------------------------------------------------------------------------
- ;LEGGE serie valori DA MEMORIA
- mov cx,10 ; ciclo 10 volte default
- leggeloop:
- mov dl,[bx] ; [bx] rappresenta primo dato di una serie da stampare [es. 200h, 201h, 202h,...]
- inc bx
- ;STARTOF STAMPATURA {per + info vedi [63]}
- mov dl,cosaDaStampare ;valore in dl verra stampato
- mov ah,2 ;indico la funzione da eseguire [2 = stampa]
- int 21h ;chiamo funzione per stampare
- ;ENDOF STAMPATURA
- loop leggeloop
- --------------------------------------------------------------------------------
- ;Programma che CONFRONTA BH,BL e mette MAGGIORE IN BH
- ;prende i 2 valori se bh maggiore passa, se no inverti
- cmp bh,bl
- jg pass
- ; STARTOF scambia i valori
- mov dh,bh
- mov dl,bl
- mov bh,dl
- mov bl,dh
- ; ENDOF scambia i valori
- pass:
- ;dopo controllo (bh > bl)
- ;contiua programma....
- --------------------------------------------------------------------------------
- ;STAMPA {cosa} SE {input}
- cmp InputDellUtente,TermineConfronto ;confronta le 2 cose
- je seUguale ;se SI vai a seUguale
- jmp Esci ;Salta alla fine SE confronto ERRATO
- seUguale: ;Versione SI
- ;Codice per comparazione corretta
- ;Codice per comparazione corretta
- Esci: ;Versione NO
- ;Codice per comparazione errata
- ;Codice per comparazione errata
- --------------------------------------------------------------------------------
- ;Compara 2 input
- ;Dice se n1 rispetto a n2 e'
- ;|| uguale || maggiore || minore
- ;Sostituisci codice dentro con cio che ti serve. QUESTO CODICE STAMPA
- cmp bh,bl ;bh = n1 || bl = n2
- je uguale ; Caso n1 = n2
- jg maggiore ; Caso n1 > n2
- jl minore ; Caso n1 < n2
- uguale: ;Se n1 = n2
- mov dl,3Dh ;Stampa il carattere "="
- mov ah,2
- int 21h
- maggiore: ;Se n1 > n2
- mov dl,3Eh ;Stampa il carattere ">"
- mov ah,2
- int 21h
- minore: ;Se n1 < n2
- mov dl,3Ch ;Stampa il carattere "<"
- mov ah,2
- int 21h
- --------------------------------------------------------------------------------
- ;Inverte input
- ;vedi 78 per creare la serie
- mov bx,[CellaUltimoValore] ;Deve partire dalla CELLA dell'ULTIMO VALORE nella SERIE
- mov cx,10 ;numero valori, [default 10]
- leggiSerieAlContrario:
- mov dl,[bx] ;preparo il valore dell'ultima cella ad essere stampato [sposto in dl]
- mov ah,2 ;vedi 65 per ulteriori info
- int 21h
- dec bx ;passa al valore PRECEDENTE della SERIE [es. 210h, 209h, 208h, 207h,...]
- loop leggiSerieAlContrario ; vedi 20
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement