43
Linguaggio macchina

Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Embed Size (px)

Citation preview

Page 1: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Linguaggio  macchina  

Page 2: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Von  Neumann  

•  John  Von  Neumann  (1903-­‐1957)  –  Inventore  dell’EDVAC  (Electronic  Discrete  Variables  AutomaFc  Computer),  la  prima  macchina  digitale  programmabile  tramite  un  soIware  basata  su  quella  che  poi  sarà  definita  l’architeNura  di  Von  Neumann  

Page 3: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Macchina  di  Von  Neumann  

•  È  il  modello  secondo  il  quale  è  organizzata  la  maggior  parte  dei  moderni  elaboratori  

•  ComponenF  della  macchina  di  Von  Neumann:  

Page 4: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Il  modello  di  Von  Neumann:  CPU  •  La  CPU  o  unità  centrale  di  elaborazione  è  cosFtuita  dai  circuiF  eleNronici  capaci  di  leggere  (dalla  memoria  centrale),  decodificare  (interpretare)  ed  eseguire  (impartendo  gli  opportuni  comandi  alle  varie  parF  del  sistema)  le  istruzioni  di  un  programma,  una  alla  volta  

•  L’esecuzione  delle  istruzioni  può  comportare  operazioni  di  elaborazione  di  daF  (per  esempio,  operazioni  aritmeFche)  o  di  trasferimento  di  daF  (per  esempio  dalla  memoria  centrale  all’interfaccia  di  una  periferica)  

Page 5: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Il  modello  di  Von  Neumann:  memoria  centrale  

•  La  memoria  centrale  conFene  le  istruzioni  di  un  programma  e  i  daF  necessari  alla  sua  esecuzione  

•  Le  periferiche  sono  le  apparecchiature  che  consentono  all’elaboratore  di  scambiare  informazioni  con  il  mondo  esterno,  mediante  operazioni  di  ingresso  (verso  l’elaboratore)  e  uscita  (verso  l’esterno)  

Page 6: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Il  modello  di  Von  Neumann:  periferiche  

•  Vengono  considerate  appartenenF  alla  macchina  di  Von  Neumann  solo  interfacce  verso  le  periferiche,  mentre  le  periferiche  sono  considerate  componenF  separaF  

•  Nel  modello  di  Von  Neumann  anche  le  memorie  di  massa  sono  incluse  tra  le  periferiche,  in  quanto  funzionalmente  analoghe  a  queste  ulFme,  dal  punto  di  vista  dell’interazione  con  l’elaboratore  

Page 7: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Il  modello  di  Von  Neumann:  bus  

•  Il  bus  di  sistema  assicura  l’interconnessione  tra  gli  elemenF  della  macchina  di  Von  Neumann:  tuX  i  trasferimenF  di  daF  avvengono  aNraverso  il  bus  

•  Il  bus  meNe  in  collegamento  logico  i  due  elemenF  coinvolF  nel  trasferimento,  in  funzione  dell’operazione  da  eseguire,  mentre  il  collegamento  fisico  è  sempre  presente  

Page 8: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Il  modello  di  Von  Neumann  •  Le  fasi  di  elaborazione  si  succedono  in  modo  sincrono  rispeNo  alla  cadenza  imposta  da  un  orologio  di  sistema  (clock)  

•  L’unità  di  controllo,  contenuta  dentro  la  CPU,  durante  ogni  intervallo  di  tempo  coordina  le  aXvità  che  vengono  svolte  dentro  la  stessa  CPU  o  negli  altri  elemenF  del  sistema  

•  Il  limite  più  evidente  del  modello  di  Von  Neumann  è  la  rigida  sequenzialità  del  suo  funzionamento  

•  Le  evoluzioni  di  questo  modello  prevedono  per  lo  più  l’introduzione  di  forme  di  parallelismo  nella  esecuzione  delle  aXvità  di  elaborazione  

Page 9: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  le  istruzioni  

•  DaF  e  istruzioni  di  programma  sono  codificate  in  forma  binaria,  mediante  sequenze  finite  di  bit  

•  Un’istruzione  codificata  si  compone  di  due  parF:  il  codice  operaFvo  e  uno  o  più  operandi  

•  Il  codice  operaFvo  individua,  secondo  una  convenzione  dipendente  dalla  specifica  macchina,  l’istruzione  da  eseguire  

•  Per  ogni  macchina  esistono  tanF  codici  operaFvi  differenF  quante  sono  le  istruzioni  presenF  nell’insieme  (set)  delle  istruzioni  che  la  macchina  è  in  grado  di  interpretare  ed  eseguire  

Page 10: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  le  istruzioni  

•  Gli  operandi  contengono,  in  una  forma  codificata  dipendente  dalla  specifica  macchina,  le  informazioni  necessarie  a  reperire  i  daF  sui  quali  l’istruzione  deve  operare  

•  Il  linguaggio  macchina  è  quindi  streNamente  legato  all’architeNura  della  macchina  

Page 11: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  la  memoria  centrale  

•  ConceNualmente  la  memoria  centrale  può  essere  vista  come  una  sequenza  di  celle:  ogni  cella  di  memoria  conFene  una  parola  o  word  

•  Le  parole  di  un  elaboratore  hanno  tuNe  la  stessa  lunghezza,  mentre  elaboratori  differenF  possono  avere  parole  di  lunghezza  differente  

•  Valori  Fpici  della  lunghezza  di  parola:  8/16/32/64  bit  

•  SchemaFcamente  la  memoria  può  essere  rappresentata  come  una  tabella  

Page 12: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  la  CPU  

•  La  figura  mostra  i  componenF  funzionali  della  CPU  e  le  loro  interconnessioni  

Unità  di  controllo  (CU):  è  responsabile  del  prelievo  delle  istruzioni  dalla  memoria  centrale,  della  loro  decodifica  e  dell’invio  di  segnali  di  controllo  che  danno  luogo  alle  operazioni  necessarie  per  l’esecuzione  dell’istruzione  decodificata  

Page 13: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  la  CPU  

Orologio  di  sistema  (clock):  sincronizza  le  operazioni  rispeNo  ad  una  certa  frequenza  

Page 14: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  la  CPU  

Unità  aritmeFco-­‐logica  (ALU):  effeNua  le  operazioni  aritmeFche  e  logiche  (eventualmente)  richieste  per  l’esecuzione  dell’istruzione  

Page 15: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  la  CPU  

•  La  CPU  conFene  inoltre  diversi  registri.  I  principali  sono:  –  Registro  daF  (DR),  lungo  H  bit  –  Registro  indirizzi  (AR),  lungo  K  bit  –  Registro  istruzione  corrente  (CIR),  lungo  H  bit:  conFene  in  ogni  istante  l’istruzione  in  esecuzione  

–  Contatore  di  programma  (PC),  lungo  K  bit:  conFene  l’indirizzo  della  successiva  istruzione  da  eseguire  

–  Registro  interruzioni  (INTR),  conFene  informazioni  sullo  stato  di  funzionamento  delle  periferiche  

–  Registri  contenenF  operandi  e  risultato  delle  operazioni  aritmeFco-­‐logiche  (per  esempio  A  e  B)  

–  Registri  di  lavoro,  contenenF  daF  ed  istruzioni  di  uso  frequente,  oppure  risultaF  intermedi  

Page 16: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  la  CPU  

•  Registro  di  stato  (SR),  conFene  indicazioni  relaFve  al  risultato  delle  operazioni  effeNuate  dalla  ALU.  Tra  queste:  –  Bit  di  carry  o  riporto  (indica  la  presenza  di  un  riporto)  –  Bit  di  zero  (è  1  se  c’è  valore  nullo  in  A)  –  Bit  di  segno  (è  il  segno  del  risultato  di  un’operazione)  –  Bit  di  overflow  (è  1  quando  il  risultato  dell’ulFma  operazione  aritmeFca  supera  il  massimo  valore  rappresentabile,  cioè  2H  se  H  è  la  lunghezza  di  A)  

•  Le  moderne  ALU  sono  in  grado  di  eseguire  operazioni  molto  sofisFcate  oltre  ovviamente  le  operazioni  algebriche  e  logiche  

Page 17: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Funzionamento  della  macchina  di  Von  Neumann:  la  CPU  

•  L’unità  di  controllo,  dopo  aver  disposto  il  caricamento  di  A  e  B  con  i  due  operandi,  invia  alla  ALU  il  codice  relaFvo  all’operazione  da  eseguire  

•  Al  termine  dell’esecuzione  dell’operazione,  che  impegna  un  certo  numero  di  periodi  di  clock,  il  registro  A  è  caricato  col  risultato,  mentre  il  registro  B  ha  un  contenuto  non  definito  (tranne  che  per  la  divisione  intera,  per  la  quale  B  conFene  il  resto)  

Page 18: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Come  si  esegue  un  programma  •  Un  programma  (sequenza  di  istruzioni  in  linguaggio  macchina  ricaricabile)  viene  caricato  in  memoria  centrale  

•  Si  alloca  lo  spazio  per  i  daF  necessari  al  programma  

•  La  CPU  estrae  le  istruzioni  e  daF  dalla  memoria  centrale,  le  decodifica  e  le  esegue  uFlizzando  registri  interni  (accesso  veloce)  

•  L’esecuzione  può  comportare  il  trasferimento  di  daF  in  input  e  output  tra  memoria  centrale  e  periferiche  aNraverso  il  bus  di  sistema  

Page 19: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Programma  in  linguaggio  macchina  •  Le  istruzioni  sono  codificate  in  bit  ed  inserite  insieme  agli  altri  daF  nella  memoria  centrale  istruzione=  operazione  di  base  sui  registri  e  sulla  RAM  

•  Un  programma  è  una  sequenza  di  istruzioni  codificate  

•  Un  programma  viene  interpretato  sequenzialmente  aNraverso  il  registro  PC  che  idenFfica  la  prossima  istruzione  da  eseguire  

•  Per  rappresentare  le  cella  della  memoria  (RAM)  si  usa  la  notazione    M[i]=  contenuto  della  cella  con  indirizzo  i  

Page 20: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Il  linguaggio  macchina  

•  È  scriNo  in  binario  •  PermeNe  di  allocare  memoria  •  ConFene  un  set  di  istruzioni  di  base  •  L’istruzione  può  avere  formato:  – Senza  operando  – Ad  1  operando  – A  più  operandi  

Page 21: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esempio  di  linguaggio  •  Codice  operaFvo  a  3  bit  (8  combinazioni),  5  bit  per  indirizzo  

•  000  –  nop  •  001  –  stop  •  010  –  add  (indirizzo)  +  (registro  accumulatore)  •  011  –  jump  •  100  –  write  •  101  –  read  •  110  –  load  carica  (indirizzo)  in  accumulatore  •  111  –  store  meNe  (accumulatore)  in  (indirizzo)  

Page 22: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Ciclo  macchina  per  l’esecuzione  di  un’istruzione  

•  Si  compone  sempre  di  tre  fasi:  1.  Fase  di  fetch  2.  Fase  di  decodifica  3.  Fase  di  esecuzione  

•  Supponiamo  di  aver  caricato  le  istruzioni  nella  memoria  a  parFre  dalla  cella  con  indirizzo  0  

Page 23: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esecuzione  tramite  ciclo  di  fetch  •  Inizializzazione:  memoria  0  del  registro  PC  •  Ciclo  di  fetch:  

1.  Recupera  il  valore  nella  cella  con  indirizzo  PC  nella  RAM  e  lo  memorizza  nel  registro  RIC  (registro  istruzione  corrente)  

2.  Somma  1  al  valore  contenuto  in  PC  e  lo  memorizza  in  PC  

3.  Decodifica  il  valore  contenuto  in  RIC  (estrae  il  codice  operazione  e  il  parametro)  

4.  Esegue  l’istruzione  5.  Torna  al  punto  1  a  meno  che  l’istruzione  non  sia  

quella  di  ‘fine  programma’  

Page 24: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Fase  di  decodifica  •  Vediamo  che  succede  su  RIC  

•  Esempio:  codice  operaFvo  di  3  bit  •  000  –  nop  •  001  –  stop  •  010  –  add  •  011  –  jump  •  100  –  write  •  101  –  read  •  110  –  load  •  111  –  store    •  Viene  riconosciuta  e  selezionata  l’istruzione  da  eseguire  

Page 25: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Fase  di  esecuzione  •  Esempio  RIC:  010|00011  •  00011  è  l’indirizzo  dell’addendo  che  viene  sommato  al  contenuto  

del  registro  A  della  ALU.  Occorre  quindi:  –  Trasferire  il  contenuto  di  00011  in  R1  –  LeNura  –  Inviare  registro  daF  all’ALU  –  Dare  il  comando  di  somma  

•  Il  risultato  rimane  in  A  

•  Esempio  RIC:  011|00001  •  Questa  è  l’istruzione  di  trasferimento  del  controllo  (salto)  

incondizionato  all’istruzione  di  indirizzo  00001  del  programma  in  esecuzione.  Quindi  occorre  trasferire  il  contenuto  di  00001  in  PC  

Page 26: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Osservazioni    

•  Il  ciclo  di  fetch  permeNe  di  eseguire  programmi  in  modo  sequenziale  incrementando  PC  di  1  Prima  istruzione  RIC=M[0]  Incremento  PC  Istruzioni  seguenF  RIC=M[1].  Ecc.  

•  Posso  oNenere  dei  cicli  cambiando  il  valore  di  PC  tramite  l’istruzione  PC=…  

Page 27: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Linguaggio  Assembly  

•  Un  linguaggio  simbolico  molto  vicino  al  linguaggio  binario  (macchina)  ma  più  comodo    –  I  codici  operaFvi  binari  sono  sosFtuiF  da  codici  simbolici,  ad  esempio  ADD  

–  Esistono  direXve  per  riservare  celle  di  memoria  – Al  posto  degli  indirizzi  è  possibile  uFlizzare  eFcheNe  simboliche  

•  C’è  una  corrispondenza  uno  a  uno  fra  i  due  linguaggi  

•  L’assembler  quindi  dipende  dalla  macchina  

Page 28: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

C  -­‐  assembly  

main(){int  x,  y;  x=10;  y=x;}  SET  r1,  10    imposta  in  r1  il  valore  10  STORE  X,  r1  salva  il  contenuto  di  r1  in  X  LOAD  r1,X    carica  la  variabile  X  in  r1  STORE  Y,  r1  salva  r1  nella  variabile  Y  

Page 29: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

For  e  while  for  (i=10;i>0;  i-­‐-­‐){…//loop1  body}  SET  r0,  0  SET  r1,  10      r1  per  i  SET  r2,  1      r2  il  valore  da  soNrarre  LOOP1TOP:  …        loop1  body  

 SUB  r1,  r1,  r2    soNrae  1  da  r1    CMP  r1,  r0    JMP  NEQ,  LOOP1TOP  conFnua  fino  a  che  r1=0  

LOOP1END:    while  (x!=20){…//loop2  body}  SET  r2,  10      r2  condizione  di  terminazione  LOOP2TOP:  

 LOAD  r1,  X    carica  x    CMP  r1,  r2    JMP  EQ,  LOOP2END  se  uguale  esci    …      loop2  body    JUMP  LOOP2TOP  

LOOP2END:  

Page 30: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

IF  if  (x==  10)  {…//then  part1}    else  {…//else  part  1}  

LOAD  r1,X      carica  x  in  r1  SET  r2,  10      set  r2  a  10  CMP  r1,r2  JMP  NEQ,  ELSE1    if  r1<<r2,  jump  a  else    …        altrimenF  fa  then  part  1    JUMP  END1    salta  oltre  else  

ELSE1:    …        else  part  1  

END1:  

Page 31: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Il  programma  assemblatore  •  Determina  gli  indirizzi  corrispondenF  alle  varie  eFcheNe  simboliche  e  costruisce  la  tabella  dei  simboli  

•  Istruzione  per  istruzione  sosFtuisce  la  codifica  binaria  al  codice  operaFvo  e  alle  eFcheNe.  La  codifica  binaria  dei  numeri  seguirà  la  convenzione  della  macchina  (ad  esempio  modulo  e  segno  etc.)  

•  Il  programma  in  codice  binario  è  quindi  caricato  in  memoria  per  l’esecuzione  

•  A  questo  punto  occorre  assegnare  al  PC  l’indirizzo  della  cella  contenente  la  prima  istruzione  eseguibile  

Page 32: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esercizio    •  Codifica  singola  istruzione:  

 •  Codici  operaFvi  istruzioni:  

–  0001:  ADD  sorgente  (op1),  des3nazione  (op2)  -­‐  ovvero  somma  quanto  indicato  da  sorgente  con  il  valore  indicato  in  desFnazione  e  lo  salva  in  desFnazione;  ad  es  ADD  R1,  R2  significa  somma  ad  R2  il  valore  di  R1.  

–  0110:  LOAD  sorgente  (op1),  des3nazione  (op2)  -­‐  ovvero  carica  quanto  indicato  da  sorgente  in  desFnazione;  ad  es  LOAD  0001,  R1  significa  carica  in  R1  il  valore  1.  

–  0111:  STORE  sorgente  (op1),  des3nazione  (op2)  -­‐  ovvero  salva  quanto  indicato  da  sorgente  in  desFnazione;  ad  es  STORE  R1,  0001  significa  salva  nell’indirizzo  di  memoria  1  il  valore  contenuto  in  R1.  

Page 33: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esercizio    

•  Modalità  di  riferimento  degli  operandi  (vale  sia  per  operando  1  che  per  operando  2):  – 00:  registro  – 01:  indirizzo  di  memoria  – 10:  valore  immediato  

•  Dato  il  codice  Assembler  di  un  frammento  di  programma  definire  la  corrispondente  codifica  in  linguaggio  macchina  

Page 34: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esercizio    

LOAD  34,  R1  (dove  34  rappresenta  un  valore  numerico)  

LOAD  2,  R2  (dove  2  rappresenta  un  valore  numerico)  

ADD  R1,  R2  

Page 35: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Soluzione    

0110-­‐10-­‐100010-­‐00-­‐000001  0110-­‐10-­‐000010-­‐00-­‐000010  0001-­‐00-­‐000001-­‐00-­‐000010  

Page 36: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esercizio    

LOAD  2,  R1  (dove  2  rappresenta  un  valore  numerico)  

ADD  2,  R1  (dove  2  rappresenta  un  valore  numerico)  

STORE  R1,  4  (dove  4  rappresenta  un  indirizzo  di  memoria)  

Page 37: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Soluzione    

0110-­‐10-­‐000010-­‐00-­‐000001  0001-­‐10-­‐000010-­‐00-­‐000001  0111-­‐00-­‐000001-­‐01-­‐000100  

Page 38: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esercizio    

LOAD  4,  R1  (dove  4  rappresenta  un  valore  numerico)  

ADD  R1,  R2  STORE  R2,  7  (dove  7  rappresenta  un  indirizzo  di  memoria)  

Page 39: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Soluzione    

0110-­‐10-­‐000100-­‐00-­‐000001  0001-­‐00-­‐000001-­‐00-­‐000010  0111-­‐00-­‐000010-­‐01-­‐000111  

Page 40: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esercizio    

•  Dato  il  frammento  in  linguaggio  macchina  0110-­‐10-­‐000001-­‐00-­‐000010  0001-­‐10-­‐000010-­‐00-­‐000010  0111-­‐00-­‐000010-­‐01-­‐000110  •  Al  termine  dell’esecuzione  delle  tre  istruzioni  che  valori  assumono  il  registro  R2  e  la  cella  di  memoria  di  indirizzo  6?  

Page 41: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Soluzione    •  Per  prima  cosa  scriviamo  le  istruzioni  in  linguaggio  assembler  

LOAD  1,  R2  (dove  1  rappresenta  un  valore  numerico)  

ADD  2,  R2  (dove  2  rappresenta  un  valore  numerico)  STORE  R2,  6  (dove  6  rappresenta  un  indirizzo  di  memoria)  

•  Sia  R2  che  la  cella  di  memoria  di  indirizzo  6  alla  fine  dell’esecuzione  delle  tre  istruzioni  contengono  il  valore  3  

Page 42: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Esercizio    

•  Dato  il  frammento  in  linguaggio  macchina  e  dato  che  il  registro  R2  conFene  il  valore  numerico  binario  000011  

0110-­‐10-­‐000001-­‐00-­‐000001  0001-­‐00-­‐000001-­‐00-­‐000010  0111-­‐00-­‐000010-­‐01-­‐000100  •  Al  termine  dell’esecuzione  delle  istruzioni  quali  valori  assumono  il  registro  R2  e  la  cella  di  memoria  di  indirizzo  4?  

Page 43: Linguaggio(macchina - lepillole.it · Il(modello(di(Von(Neumann(• Le(fasi(di(elaborazione(si(succedono(in(modo(sincrono(rispeNo(allacadenzaimpostadaun(orologio(di(sistema (clock)

Soluzione    

•  Scriviamo  il  codice  assembler  corrispondente  LOAD  1,  R1  (dove  1  rappresenta  un  valore  numerico)  

ADD  R1,  R2  STORE  R2,  4  (dove  4  rappresenta  un  indirizzo  di  memoria)  

•  Sia  R2  che  la  cella  di  memoria  di  indirizzo  4  alla  fine  dell’esecuzione  contengono  il  valore  4