Anteprima
Vedrai una selezione di 3 pagine su 7
Istruzioni assembly Pag. 1 Istruzioni assembly Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
Istruzioni assembly Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Istruzioni Assembly

MOV DST, SRC Copia SRC in DST Non posso copiare direttamente da memoria a memoria

PUSH SRC Inserisce SRC in cima allo stack Decrementa ESP (Stack Pointer) di tanti byte quanti ne contiene SRC

POP DST Preleva un valore dalla cima dello stack di grandezza dipendente da DST Incrementa ESP

Per tornare alle condizioni originari prima delle PUSH/POP eseguite occorre reimpostare ESP al valore di partenza (manualemente con una MOV)

XCHG DST, DS2 Scambia il contenuto di DS1 e quello di DS2

LEA DST, SRC Carica in DST l'indirizo di memoria di SRC Sfruttato anche per eseguire operazioni aritmetiche più o meno complesse. Ad esempio: LEA EAX, [EBX*2+10] equivalente a EAX := EBX*2+10

CMOVcc DST, SRC Copia il valore SRC in DST solo se la condizione cc risulta verificata

Tutte le operazioni devono essere eseguite tra registri e vari/registri con la stessa dimensione

ADD DST, SRC

Somma SRC a DST salvando su DST

SUB DST, SRC

Sottrae SRC a DST e salva su DST

MUL SRC

Moltiplicazione senza segno

  • SRC 8 bit AX = AL × SRC (8 bit)
  • SRC 16 bit DX:AX = AX × SRC (16 bit)
  • SRC 32 bit EDX:EAX = EAX × SRC (32 bit)

Non posso moltiplicare direttamente per una costante, devo obbligatoriamente copiarla su un registro

IMUL SRC

Moltiplicazione con segno

  1. IMUL SRC
  2. IMUL DST, SRC
  3. IMUL DST, SRC1, SRC2

1) Uguale a MUL per la distribuzione dei registri 2) SRC può anche essere un valore immediato 3) SRC2 è per forza un valore immediato C'è elevata probabilità di overflow. Controllare il flag OF (se è uguale a 1 c'è stato overflow).

DIV SRC

Divisione senza segno

SRC rappresenta il divisore (deve essere ≠ da zero)

  • SRC 8 bit AX ÷ SRC divide AX per SRC Il risultato è in AL, il resto in AH
  • SRC 16 bit DX:AX ÷ SRC DX AX
  • SRC 32 bit EDX:EAX ÷ tBX EDX EAX

LOOP Addr

Istruzione ottimizzata e compatta per l'esecuzione di cicli, la variabile contatore è obbligatoriamente ECX.

Addr è per forza un indirizzo relativo a 8 bit.

  • ECX viene decrementato automaticamente di 1
  • ECX viene controllato automaticamente
  • Se il valore di ECX è diverso da 0 salta ad Addr.
  • Siamo costretti a contare all'indietro.

LOOPcc Addr

Funziona come il LOOP ma ha una seconda condizione oltre fino allo decremento di cc.

Esce dal ciclo se ECX = 0 o se cc è falsa.

Occorre fare attenzione ad entrare in LOOP/LOOPcc con ECX=0. Per fare ciò posso usare l'istruzione JECXZ che controlla se ECX è uguale a zero e, in caso, salta ad Addr.

CALL Addr

Esegue un sottoprogramma a partire da Addr.

Prima di eseguire il salto ad Addr CALL memorizza il valore di EIP (l’istruzione successiva del main) nello stack (PUSH EIP).

RET

Istruzione di ritorno al programma chiamante.

Non è necessario specificare l’indirizzo di ritorno (per questo è possibile utilizzare lo stesso sottoprogramma diverse volte o per operazioni differenti in diverse istruzioni).

Tramite una POP EIP sulla stack il controllo torna all’istruzione chiamante.

Dettagli
A.A. 2013-2014
7 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher eleonora.guidi6 di informazioni apprese con la frequenza delle lezioni di Architetture degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Maltoni Davide.