COMANDI ASSEMBLY Il termine assembly deriva dal programma
COMANDI ASSEMBLY Il termine assembly deriva dal programma traduttore in linguaggio macchina assembler, l’assemblatore non fa altro che assemblare il codice macchina partendo da istruzione scritte in linguaggio mnemonico assembly.
Esistono diversi tipi di comandi, in tutto ci sono 15 tipologie. 1. Istruzioni di spostamento o assegnazione. 2. Istruzioni aritmetiche. 3. Istruzioni bitwise logiche. 4. Istruzioni bitwise di rotazone/traslazione. 5. Istruzioni di confronto. 6. Istruzioni di salto. 7. Istruzioni di gestione stringhe. 8. Istruzione di lettura/scrittura da e per I/O. 9. Istruzioni di attesa. 10. Istruzioni di spostamento o assegnazione. 11. Istruzioni aritmetiche. 12. Istruzioni logiche bitwise. 13. Istruzioni bitwise di rotazione/taslazione. 14. Istruzioni di confronto. 15. Istruzioni di confronto.
ISTRUZIONI DI SPOSTAMENTO O ASSEGNAZIONE. Istruzioni assembly che servono per lo spostamento di dati da un registro ad un altro.
ISTRUZIONI BITWISE LOGICHE. Istruzioni logiche servono principalmente per la manipolazione di bit.
ISTRUZIONI DI LETTURA E SCRITTURA DA E PER I/O. Istruzioni che servono per la lettura e scrittura delle informazioni da e per I/O.
ISTRUZIONI BITWISE ROTAZIONE
ISTRUZIONI DI CONFRONTO
ISTRUZIONI DI ATTESA
MOV destinazione, sorgente ISTRUZIONE DI TRASFERIMENTO GENERICO Trasferisce un byte o una word Tra due registri Tra un registro e una locazione di memoria Per trasferire un dato da una locazione di memoria a un’altra: MOV AX, from. Var; copia from. Var in AX MOV to. Var, AX; e quindi in to. Var Non è possibile caricare una costante (come l’indirizzo di un segmento) in un registro di segmento:
PUSH SORGENTE POP DESTINAZIONE L’unico operando (sempre una word) può essere un registro o una locazione di memoria NON può essere una costante MOV AX, 100; costante in AX PUSH AX; e quindi sullo stack MOV AX, OFFSET Var; prima in AX PUSH AX; e quindi sullo stack PUSHF (PUSH Flags onto stack) POPF (POP Flags off stack) Trasferiscono il contenuto del registro flag (16 bit) nello stack e viceversa PUSHF= PUSH del registro flag POPF= POP del registro flag NECESSARIE IN QUANTO IL REGISTRO FLAG NON HA UN NOME
XCHG DESTINAZIONE SORGENTE Scambia (e. XCHan. GE) il contenuto (byte o word) dei due operandi-due registri o un registro e una locazione di memoria Per scambiare il contenuto di due locazioni di memoria: XCHG AX, var 1 XCHG AX, var 2; var 2<-var 1 XCHG AX, var 3; var 1<-var 2
LEA REG 16, MEM 16 LEA (Load Effective Address): Calcola l’EA del secondo operando (un riferimento a una word in memoria) e Lo carica nel primo operando (un registro generale a 16 bit) LEA BX, Table; MOV BX, OFFSET Table LEA BX, [Table+BP+SI] Il secondo esempio non ha un’istruzione MOV equivalente, in quanto l’operatore OFFSET richiede un’espressione costante.
SUB DESTINAZIONE, SORGENTE SBB DESTINAZIONE, SORGENTE SUB (SUBtract) sottrae l’operando sorgente all’operando destinazione e memorizza il risultato nell’operando destinazione SBB (Subtract with Borrow) effettua la stessa operaazione, comprendendo nella sottrazione il flag del riporto (CF) Destinazione_=sorgente+CF L’istruzione SBB permette di effettuare la sottrazione di numeri maggiori di 16 bit Sottrazione di due numeri di 32 bit (AX: BX)<- (AX: BX)-(CX: DX) SUB BX, DX; sottrae i 16 bit meno significativi SBB AX, CX; sottrae i 16 bit più significativi Le istruzioni di sottrazione modificano il contenuto dei flag in modo analogo alle istuzioni di somma.
GENERAL PURPOSE TRASFERIMENTO DI INDIRIZZI MOV destinazione, sorgente: muove un byte o una word LEA reg 16, mem 16: carica un indirizzo effettivo (EA) PUSH sorgente: Push di una word nello stack LDS reg 16, mem 32: carica un indirizzo completo in DS: reg 16 POP destinazione: Pop di una word dallo stack LES reg 16, mem 32: carica un indirizzo completo in ES: reg 16 XCHG destinazione, sorgente: Scambia un byte o una word ARRIVEDERCI E GRAZIE !!
Realizzato da: Lorenzo Cerami_Gabriele Salemi_Giuseppe Lanzetta. Classe III I A. S. 2015/2016
- Slides: 15