1 / 22

esempio

esempio. scriviamo un programma in linguaggio macchina che: trasferisce il contenuto delle 2 parole della RAM di indirizzi 64 e 68 nei registri R 0 ed R 1 somma i contenuti dei registri R 0 ed R 1 trasferisce il risultato nella parola della RAM all’indirizzo 60. 1110 00 1111 00

phuong
Download Presentation

esempio

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. esempio • scriviamo un programma in linguaggio macchina che: • trasferisce il contenuto delle 2 parole della RAM di indirizzi 64 e 68 nei registri R0 ed R1 • somma i contenuti dei registri R0 ed R1 • trasferisce il risultato nella parola della RAM all’indirizzo 60

  2. 111000 111100 1000000 1000100 1001000 ..0100110 ..01000 1111111100 10000000000 10000000100 10000001000 1000000110010000010000 000000000000..010000 000000000001..010001 0000001000000001.... 000000010000..001111 RAM byte byte 56 60 64 68 72 parola 38 8 1020 1024 1028 1032 1036 1040 Copia 64 in R0 Copia 68 in R1 Somma R0 e R1 Copia R0 in 60 RAM

  3. Problemi del linguaggio macchina: • i programmi in binario sono difficili da scrivere, capire e modificare. • il programmatore deve occuparsi di gestire la RAM: difficile ed inefficiente. primo passo  Assembler

  4. Caratteristiche dell’Assembler • codici mnemonici per le operazioni • nomi mnemonici (identificatori) al posto degli indirizzi RAM dei dati • nomi mnemonici (etichette) al posto degli indirizzi RAM delle istruzioni (usati nei salti) • avanzate: tipi dei dati INT e FLOAT (normalmente non presenti)

  5. codice-op mnemonici: • trasferimento: LOAD (RAM  CPU) e STORE (CPU  RAM) • aritmetiche: ADD,SUB,MULT,DIV,MOD, FADD,FSUB,FMULT,FDIV • input/output: READ (U-INP  CPU), WRITE (CPU  U-OUT) • test: COMP,FCOMP • salto: BREQ,BRGT,BRLT,BRGE,BRLE, BRANCH • terminazione: STOP

  6. dichiarazioni degli identificatori dei dati istruzioni assembler stesso esempio del linguaggio macchina Z : INT; X : INT38; Y : INT8 ; LOAD R0 X; LOAD R1 Y; ADD R0 R1; STORE R0 Z;

  7. esempio carica due valori dalla RAM, li somma e mette il risultato al posto del maggiore dei 2 numeri sommati (nel caso siano uguali, non importa in quale dei due si mette la somma)

  8. X:INT 38; Y:INT 8; LOAD R0 X; LOAD R1 Y; LOAD R2 X; ADD R2 R1; COMP R0 R1; BRGE maggiore; STORE R2 Y; STOP; maggiore: STORE R2 X; STOP;

  9. flowchart LOAD R0 X; LOAD R1 Y; LOAD R2 X; ADD R2 R1; SI R0  R1? NO STORE R2 X; STOP; STORE R2 Y; STOP; test

  10. esempio Legge un reale X da input, ne calcola il valore assoluto e lo stampa.

  11. ZeroF: RAM 0 X: ? Absx: ? R0: CPU ? R1: ? RC: ? ZeroF : FLOAT 0; X:FLOAT; AbsX:FLOAT; READ STINP X; LOAD R0 ZeroF; LOAD R1 X; FCOMP R1 R0; BRGE maggiore; FSUB R0 R1; STORE R0 AbsX; BRANCH stampa; maggiore: STORE R1 AbsX; stampa: WRITE STOUT AbsX; STOP; -234.43 234.43 0 234.43 -234.43 -1

  12. READ STINP X; LOAD R0 ZeroF; LOAD R1 X; flowchart NO SI R1  R0? FSUB R0 R1; STORE R0 AbsX; maggiore: STORE R1 AbsX; stampa: WRITE STOUT AbsX; STOP;

  13. NO SI R1  R0? FSUB R0 R1; STORE R0 AbsX; STORE R1 AbsX; condizione o test

  14. Laboratorio Guidato 1° Presso il Laboratorio del Dip. Matematica 11.30-12.30 Chimica Ind. 12.30-13.30 Sc. Mat. e Sc. Geol. 16.00-17.00 Chimica Via Paolotti Via Marzolo Via Belzoni Lab.

  15. Cose da Fare • Inserire nome, cognome, numero di matricola e corso di studi. • Si ottiene un nome di utenza (Username) ed una parola di accesso (Password) che permettono di accedere al laboratorio. Ricopiarle accuratamente su di un foglio di carta e conservarle.Se le si perde o si commettono errori nella trascrizione non si può più accedere al laboratorio.

  16. Usando username e password entrare nel sistema operativo Linux • Usare Netscape per mettersi in lista per il compitino • Aprire una shell di Linux • Aprire emacs per scrivere un programma Assembler nel file prog usando il comando: • emacs prog &

  17. Il programma deve leggere le basi A e B e l’altezza H di un trapezio, calcolarne l’area e stamparla. Prepararsi il programma assembler scritto su di un foglio di carta.

  18. Eseguire tale programma nella shell usando il comando: • interprete prog • Se ci sono errori correggere il programma e rieseguirlo • Quando funziona salvarlo, chiudere emacs ed uscire da Linux

  19. Esempio Esempio potenza Leggere un intero positivo N e stampare i bit della sua rappresentazione interna.

  20. N: INT ; Bit : INT; Nbit : INT 32; Zero : INT 0; Uno : INT 1; Due : INT 2; READ STINP N; LOAD R1 Uno; LOAD R2 Due; LOAD R0 Zero; LOAD R3 Nbit; Ciclo: COMP R0 R3; BRGE Esci; LOAD R4 N; MOD R4 R2; STORE R4 Bit; WRITE STOUT Bit; LOAD R4 N; DIV R4 R2; STORE R4 N; ADD R0 R1; BRANCH Ciclo; Esci: STOP;

  21. N: ? Bit: ? Nbit: .100000 Zero: ……0000 Uno: ……0001 Due: ……0010 R0: ? R1: ? R2: ? R3: ? R4: ? RC: ? ….00101 N: INT ; Bit : INT; Nbit : INT 32; Zero : INT 0; Uno : INT 1; Due : INT 2; READ STINP N; LOAD R1 Uno; LOAD R2 Due; LOAD R0 Zero; LOAD R3 Nbit; ……0000 ……0001 ……0010 .100000

  22. N: ….00101 Bit: ? Nbit: .100000 Zero: ……0000 Uno: ……0001 Due: ……0010 R0: ……0000 R1: ……0001 R2: ……0010 R3: .100000 R4: ? RC: ? ….00000 ….00010 ….00001 Ciclo: COMP R0 R3; BRGE Esci; LOAD R4 N; MOD R4 R2; STORE R4 Bit; WRITE STOUT Bit; LOAD R4 N; DIV R4 R2; STORE R4 N; ADD R0 R1; BRANCH Ciclo; Esci: STOP; ……0001 ….00001 ….00000 .100000 ……0001 .0111111 ……0011 ……0010 ……0001 ….00000 ….00101 ….00010 ….00010 ….00000 ….00001 ….00001 ….00010 ….00001 ….00001 ….00101 -1 -1 -1 0

More Related