Esercizi di verifica del debito formativo:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercizi di verifica del debito formativo:"

Transcript

1 Esercizi di verifica del debito formativo: Facendo esclusivamente uso delle istruzioni del linguaggio macchina del microprocessore INTEL 8086 studiate in classe, rispondere alle seguenti domande: 1 ) Scrivere una sequenza d istruzioni che scambi i quattro bit meno significativi del codice binario contenuto del registro AL con i quattro bit più significativi. CL,4 ciclo: ADD AL,AL ADC AL,0 SUB CL,1 JNZ ciclo 2 ) Scrivere una sequenza d istruzioni che copi nel registro AL il codice BCD del numero intero senza segno minore di cento il cui codice ASCII è contenuto nel registro DX (il codice BCD di una cifra corrisponde ai quattro bit meno significativi del suo codice ASCII). AND ADD ADD ADD ADD ADD DL,AL AL,0F DH,DH DH,DH DH,DH DH,DH AL,DH 3 ) Scrivere una sequenza d istruzioni che copi nel registro DX il codice ASCII del numero intero senza segno minore di cento il cui codice BCD è contenuto nel registro AL (il codice ASCII di una cifra è uguale alla somma binaria tra il suo codice BCD e ( ) 2 ). DL,AL DH,0 ADD DX,DX ADD DX,DX ADD DX,DX ADD DX,DX DL,AL AND DX,0F0F OR DX,3030

2 4 ) Scrivere una sequenza d istruzioni che copi nel registro AL la rappresentazione binaria del numero intero senza segno minore di cento rappresentato in codice ASCII nel registro DX. ciclo: AX,DX AND AX,0F0F CL,0A ADD AL,AH SUB CL,1 JNZ ciclo INT 3 5 ) Scrivere una sequenza d istruzioni che copi nel registro DX il codice ASCII del numero intero senza segno minore di cento rappresentato in binario nel registro AL. DL,AL DH,0 ciclo: CMP DL,0A JB fine SUB DL,0A ADD DH,1 JMP ciclo fine: INT 3 6 ) Scrivere una sequenza d istruzioni che copi nel registro AX il contenuto della parola di memoria d indirizzo fisico (F01FA) 16. AX,F01F DS,AX AX,[000A] 7 ) Scrivere una sequenza d istruzioni che copi nel registro AX il contenuto della parola di memoria il cui indirizzo logico è contenuto nelle due celle di memoria d indirizzo fisico (F01FA) 16 (parte offset) e (F01FC) 16 (parte segment). AX,F01F DS,AX BX,[000A] ES,[000C] ES: AX,[BX]

3 8 ) Scrivere una sequenza d istruzioni che copi nei registri DX (parte alta) ed AX (parte bassa) l indirizzo fisico corrispondente all indirizzo logico (ES:DI). ADD ADC ADD ADC ADD ADC ADD ADC ADD ADC AX,ES DX,0 AX,AX DX,DX AX,AX DX,DX AX,AX DX,DX AX,AX DX,DX AX,DI DX,0

4 Scrivere la codifica, nel linguaggio assemblativo del microprocessore INTEL 8086, delle seguenti procedure: 1 ) Una procedura di nome GETBIN che acquisisce da tastiera un numero binario delimitato dal tasto INVIO, e ne restituisce il valore nel registro DX (si supponga che tale valore sia sempre minore di 65536). GETBIN: DX,0 ;DX = 0 CICLO: AH,0 INT 16 ;Richiedi il servizio del BIOS ;di lettura CODICE da tastiera. CMP AL,0Dh ;Se CODICE = INVIO allora JE FINE ;vai alla fine della procedura. ADD DX,DX ;DX = DX * 2 SUB AL,30h ;CIFRA = CODICE 30h. ADD DL,AL ;DX = DX + CIFRA. JMP CICLO ;Ritorna all inizio del ciclo. FINE: RET ;Fine della procedura GETBIN. 2 ) Una procedura di nome PUTBIN che visualizza sul monitor il contenuto del registro DX in binario. PUTBIN: CX,16 ;CONTATORE = 16 CICLO: ADD DX,DX ;CF = (DX * 2) DIV 2^16 ;DX = (DX * 2) MOD 2^16 AL,30h ADC AL,0 ;CODICE = CODICE(0) + CF AH,0Eh ;Richiedi il servizio del BIOS BX,0 ;di visualizzazione di un ca- INT 10h ;rattere sullo schermo. DEC CX ;CONTATORE = CONTATORE 1 JNZ CICLO ;Se CONTATORE <> 0 allora ;ritorna all inizio del ciclo. RET ;Fine della procedura PUTBIN.

5 3 ) Una procedura di nome GETOCT che acquisisce da tastiera un numero ottale delimitato dal tasto INVIO, e ne restituisce il valore nel registro DX (si supponga che tale valore sia sempre minore di 32768). GETOCT: DX,0 ;DX = 0 CICLO: AH,0 INT 16h ;Richiedi il servizio del BIOS ;di lettura CODICE da tastiera. CMP AL,0Dh ;Se CODICE = INVIO allora JE FINE ;vai alla fine della procedura. ADD DX,DX ADD DX,DX ADD DX,DX ;DX = DX * 2 * 2 * 2 = DX * 8 SUB AL,30h ;CIFRA = CODICE CODICE(0) ADD DL,AL ;DX = DX + CIFRA. JMP CICLO ;Ritorna all inizio del ciclo. FINE: RET ;Fine della procedura GETOCT. 4 ) Una procedura di nome PUTOCT che visualizza sul monitor il contenuto del registro DX in ottale (si supponga che tale valore sia sempre minore di 32768). PUTOCT: ADD DX,DX ;DX = (DX * 2) MOD 2^16 CX,5 ;CONTATORE = 5 CICLO: ADD DX,DX ;CF = (DX * 2) DIV 2^16 ;DX = (DX * 2) MOD 2^16 AL,0 ADC AL,0 ;CODICE = CF ADD DX,DX ;CF = (DX * 2) DIV 2^16 ;DX = (DX * 2) MOD 2^16 ADC AL,AL ;CODICE = CODICE * 2 + CF ADD DX,DX ;CF = (DX * 2) DIV 2^16 ;DX = (DX * 2) MOD 2^16 ADC AL,AL ;CODICE = CODICE * 2 + CF ADD AL,30h ;CODICE = CODICE + CODICE(0) AH,0Eh ;Richiedi il servizio del BIOS BX,0 ;di visualizzazione di un ca- INT 10h ;rattere sullo schermo. DEC CX ;CONTATORE = CONTATORE 1 JNZ CICLO ;Se CONTATORE <> 0 allora ;ritorna all inizio del ciclo. RET ;Fine della procedura PUTOCT.

6 5 ) Una procedura di nome GETHEX che acquisisce da tastiera un numero esadecimale delimitato dal tasto INVIO, e ne restituisce il valore nel registro DX (si supponga che tale valore sia sempre minore di 65536). GETHEX: DX,0 ;DX = 0 CICLO: AH,0 INT 16h ;Richiedi il servizio del BIOS ;di lettura CODICE da tastiera. CMP AL,0Dh ;Se CODICE = INVIO allora JE FINE ;vai alla fine della procedura. ADD DX,DX ADD DX,DX ADD DX,DX ADD DX,DX ;DX = DX*2*2*2*2 = DX * 16 CMP AL,41h ;Se CODICE >= CODICE(A) allora JNB LETTERA ;salta a LETTERA. SUB AL,30h ;CIFRA = CODICE CODICE(0). ADD DL,AL ;DX = DX + CIFRA. JMP CICLO ;Ritorna all inizio del ciclo. LETTERA: SUB AL,37h ;CIFRA = CODICE CODICE(A) + 10 ADD DL,AL ;DX = DX + CIFRA. JMP CICLO ;Ritorna all inizio del ciclo. FINE: RET ;Fine della procedura GETHEX.

7 6 ) Una procedura di nome PUTHEX che visualizza sul monitor il contenuto del registro DX in esadecimale. PUTHEX: CX,4 ;CONTATORE = 4 CICLO: ADD DX,DX ;CF = (DX * 2) DIV 2^16 ;DX = (DX * 2) MOD 2^16 AL,0 ADC AL,0 ;CODICE = CF ADD DX,DX ;CF = (DX * 2) DIV 2^16 ;DX = (DX * 2) MOD 2^16 ADC AL,AL ;CODICE = CODICE * 2 + CF ADD DX,DX ;CF = (DX * 2) DIV 2^16 ;DX = (DX * 2) MOD 2^16 ADC AL,AL ;CODICE = CODICE * 2 + CF ADD DX,DX ;CF = (DX * 2) DIV 2^16 ;DX = (DX * 2) MOD 2^16 ADC AL,AL ;CODICE = CODICE * 2 + CF ADD AL,30h ;CODICE = CODICE + CODICE(0) CMP AL,39h ;Se CODICE <= CODICE(9) allora JBE DISPLAY ;salta alla visualizzazione. ADD AL,7 ;CODICE = CODICE CODICE(0) ; 10 + CODICE(A) DISPLAY: AH,0Eh ;Richiedi il servizio del BIOS BX,0 ;di visualizzazione di un ca- INT 10h ;rattere sullo schermo. DEC CX ;CONTATORE = CONTATORE 1 JNZ CICLO ;Se CONTATORE <> 0 allora ;ritorna all inizio del ciclo. RET ;Fine della procedura PUTHEX.

8 7 ) Una procedura di nome GETDEC che acquisisce da tastiera un numero decimale delimitato dal tasto INVIO, e ne restituisce il valore nel registro DX (si supponga che tale valore sia sempre minore di 65536). GETDEC: DX,0 ;DX = 0 CICLO: AH,0 INT 16h ;Richiedi il servizio del BIOS ;di lettura CODICE da tastiera. CMP AL,0Dh ;Se CODICE = INVIO allora JE FINE ;vai alla fine della procedura. ADD DX,DX DX,CX ADD DX,DX ADD DX,DX ADD DX,CX ;DX = DX*2*2*2 + DX*2 = DX * 10 SUB AL,30h ;CIFRA = CODICE CODICE(0). ADD DL,AL ADC DH,0 ; DX = DX + CIFRA. JMP CICLO ;Ritorna all inizio del ciclo. FINE: RET ;Fine della procedura GETDEC.

9 8 ) Una procedura di nome PUTDEC che visualizza sul monitor il contenuto del registro DX in decimale. PUTDEC: AX,0 ;Inserisci nello stack il PUSH AX ;codice di terminazione 0. CICLO1: AX,DX ;Dividi DX per 10 copiando DX,0 ;il resto nel registro AX. DIVIDI: CMP AX,10 ;Se AX < 10 allora JB FINEDIV ;salta a FINEDIV. SUB AX,10 ;AX = AX - 10 INC DX ;DX = DX + 1 JMP DIVIDI ;Torna a DIVIDI. FINEDIV: ADD AX,30h ;Inserisci nello stack il PUSH AX ;codice ASCII della cifra JMP CICLO1 ;Torna all inizio di CICLO1 CICLO2: POP AX ;Estrai un elemento dallo CMP AX,0 ;stack e, se è il codice di JE FINE ;terminazione, vai a FINE. AH,0Eh ;Richiedi il servizio BIOS BX,0 ;visualizzazione di un ca- INT 10h ;rattere sullo schermo. JMP CICLO2 ;Torna all inizio di CICLO2 FINE: RET ;Fine della procedura PUTDEC.

10 Disegnare il flow chart e scrivere la codifica nel linguaggio assemblativo del microprocessore INTEL 8086 delle seguenti procedure: 1 ) Una procedura di nome GETSTR che acquisisca da tastiera una stringa di caratteri delimitati dal tasto INVIO, memorizzandola, in formato ASCIIZ, a partire dalla cella d indirizzo logico (DS:BX). GETSTR: DI,0 ;I = 0. CICLO: AH,0 ;leggi nel registro AL il codice INT 16h ;del carattere digitato. CMP AL,0Dh ;Se il AL = codice(invio) allora JE FINE ;vai alla fine della procedura. BYTE[BX+DI],AL ;STR[I] = codice digitato INC DI ;I = I + 1 JMP CICLO ;Ripeti il ciclo. FINE: BYTE[BX+DI],0 ;STR[I] = codice terminazione. RET ;fine della procedura GETSTR. 2 ) Una procedura di nome DISPSTR che visualizzi sul monitor, in ordine inverso, i caratteri della stringa memorizzata, in formato ASCIIZ, a partire dalla cella d indirizzo logico (ES:BP). DISPSTR: SI,0 ;I = 0. CICLO1: CMP ES:BYTE[BP+SI],0 ;Se STR[I]=0 allora JE CICLO2 ;vai a CICLO2. INC SI ;I = I + 1 JMP CICLO1 ;Ripeti CICLO1. CICLO2: CMP SI,0 ;Se I = 0 allora JE FINE ;vai alla fine. DEC SI ;I = I 1 AL,ES:BYTE[BP+SI];AL = STR[SI] AH,0Eh ;AH = numero del servi- BX,0 ;zio BIOS: visualizza INT 10h ;carattere su schermo JMP CICLO2 ;Ripeti CICLO2. FINE: RET ;Fine della procedura.

11 3 ) Una procedura di nome TRIMRIGHT che elimini tutti gli eventuali spazi vuoti presenti alla fine della stringa memorizzata, in formato ASCIIZ, a partire dalla cella d indirizzo logico (DS:BX). TRIMR: DI,0 ;I = 0 CICLO1: CMP BYTE[BX+DI],0 ;Se STR[I]=0 allora JE CICLO2 ;vai a CICLO2. INC DI ;I = I + 1 JMP CICLO1 ;Ripeti CICLO1 CICLO2: CMP DI,0 ;Se I = 0 allora JE FINE ;vai alla fine. DEC DI ;I = I 1 CMP BYTE[BX+DI],20h ;Se STR[I]<> allora JNE FINE ;vai alla fine. BYTE[BX+DI],0 ;STR[I]=0 JMP CICLO2 ;Ripeti CICLO2. FINE: RET ;Fine della procedura. 4 ) Una procedura di nome TRIMLEFT che elimini tutti gli eventuali spazi vuoti presenti all inizio della stringa memorizzata, in formato ASCIIZ, a partire dalla cella d indirizzo logico (DS:BX). TRIML: SI,0 ;I = 0 DI,0 ;J = 0 CICLO1: CMP BYTE[SI],20h ;Se STR[I] <> allora JNE CICLO2 ;vai a CICLO2. INC SI ;I = I + 1 JMP CICLO1 ;Ripeti CICLO1. CICLO2: AL,BYTE[SI] ;STR[I]=STR[J] BYTE[DI],AL CMP AL,0 ;Se STR[I] = 0 allora JE FINE ;vai alla fine. INC SI ;I = I + 1 INC DI ;J = J + 1 JMP CICLO2 ;Ripeti CICLO2 FINE: RET ;Fine della procedura.

12 5 ) Una procedura di nome FATT che calcoli il fattoriale del numero binario contenuto del registro CX, restituendone la rappresentazione binaria a 32 bit nei registri DX (parte alta) ed AX (parte bassa). FATT: DX,0 ;Parte alta di FATT = 0. AX,1 ;Parte bassa di FATT = 1. CICLO: CMP CX,0 ;Se NUM = 0 allora JE FINE ;vai alla fine. BX,AX ;BX = parte bassa di FATT. AX,DX ;AX = parte alta di FATT. MUL CX ;AX = (parte alta di FATT)*NUM. XCHG AX,BX ;Scambia AX con BX. MUL CX ADD DX,BX ;FATT = AX + BX* DEC CX ;N = N 1 ;AX = (parte bassa di FATT)*NUM. JMP CICLO ;Ripeti il CICLO FINE: RET ;Fine della procedura. 6 ) Una procedura di nome GET che acquisisce da tastiera un numero delimitato dal tasto INVIO, rappresentato nel sistema di numerazione posizionale in base BX, e ne restituisce il valore binario nel registro CX (si supponga che tale valore sia sempre minore di 65536). GET: CX,0 ;NUM = 0 CICLO: AH,0 ;Richiedi il servizio del BIOS INT 16h ;di lettura CODICE da tastiera. CMP AL,0Dh ;Se CODICE = INVIO allora JE FINE ;vai alla fine della procedura. SUB AL,48 ;CIFRA = CODICE CODICE (0). CMP AL,10 ;Se CIFRA < 10 allora JB MINORE ;vai a MINORE, altrimenti SUB AL,7 ;CIFRA = CIFRA 7. MINORE: AH,0 ;AX = CIFRA. XCHG AX,CX ;CX = CIFRA ed AX = NUM. MUL BX ;AX = AX * BASE. ADD CX,AX ;NUM = CIFRA + NUM * BASE. JMP CICLO ;Ripeti il ciclo. FINE : RET ;Fine della procedura.

13 7 ) Una procedura di nome PUT che visualizza sullo schermo il contenuto del registro AX nel sistema di numerazione posizionale in base BP. PUT: CX,0 ;i = 0. CICLO1: DX,0 ;CIFRA = NUM MOD BASE. DIV BP ;NUM = NUM DIV BASE. PUSH DX ;Salva CIFRA nello stack. INC CX ;i = i + 1. CMP AX,0 ;Se NUM <> 0 allora JNE CICLO1 ;ripeti il primo ciclo. CICLO2: POP AX ;Estrai CIFRA dallo stack. CALL CODICE ;Calcola il CODICE della CIFRA. AH,0Eh ;Richiedi il servizio del BIOS BX,0 ;che visualizza un carattere INT 10h ;sullo schermo. DEC CX ;i = i 1. JNE CICLO2 ;Se i <> 0 ripeti il II ciclo. RET ;Fine della procedura PUT. CODICE: CMP AX,10 ;Se CIFRA < 10 allora JB MINORE ;vai a MINORE, altrimenti ADD AX,55 ;CODICE = CIFRA RET ;Fine della procedura CODICE. MINORE: ADD AX,48 ;CODICE = CIFRA RET ;Fine della procedura CODICE. ;Seconda versione (ricorsiva) della procedura PUT: PUT: PUSH DX ;Salva DX nello stack. DX,0 ;Dividi NUM per BASE: DIV BP ;AX = quoziente, DX = resto. CMP AX,0 ;Se quoziente = 0 allora JE VISUA ;vai alla visualizzazione CALL PUT ;altrimenti esegui PUTNUM. VISUA: AX,48 ;AX = CODICE(0). CMP DX,10 ;Se CIFRA < 10 allora JB MINORE ;vai a minore AX,55 ;altrimenti AX = CODICE(A) 10. MINORE: ADD AX,DX ;AX = CODICE(CIFRA). AH,0Eh ;Richiedi il servizio del BIOS BX,0 ;di visualizzazione di un ca- INT 10h ;rattere sullo schermo. POP DX ;Ripristina il contenuto di DX. RET ;Fine della procedura PUT.

14 8 ) Un programma che visualizzi su un display a LED a sette segmenti collegato alla porta d uscita d indirizzo (0378) 16 ciascuna cifra esadecimale digitata sulla tastiera del computer. ;Codici a 7 segmenti delle cifre da 0 ad F : ZERO EQU b ;codice a 7 segmenti di 0. UNO EQU b ;codice a 7 segmenti di 1. DUE EQU b ;codice a 7 segmenti di 2. TRE EQU b ;codice a 7 segmenti di 3. QUATTRO EQU b ;codice a 7 segmenti di 4. CINQUE EQU b ;codice a 7 segmenti di 5. SEI EQU b ;codice a 7 segmenti di 6. SETTE EQU b ;codice a 7 segmenti di 7. OTTO EQU b ;codice a 7 segmenti di 8. NOVE EQU b ;codice a 7 segmenti di 9. A EQU b ;codice a 7 segmenti di A. BI EQU b ;codice a 7 segmenti di B. CI EQU b ;codice a 7 segmenti di C. DI EQU b ;codice a 7 segmenti di D. E EQU b ;codice a 7 segmenti di E. EFFE EQU b ;codice a 7 segmenti di F. ;Tabella dei codici a 7 segmenti delle cifre 0..F: TAB DB ZERO,UNO,DUE,TRE,QUATTRO,CINQUE,SEI DB SETTE,OTTO,NOVE,A,BI,CI,DI,E,EFFE ;Inizio del codice del programma: INIZIO: AH,0 ;Richiedi il servizio BIOS: INT 16h ;leggi CODICE da tastiera. CMP AL,0Dh ;Se CODICE = INVIO allora JE FINE ;vai a fine programma. SUB AL,48 ;Converti CODICE in CIFRA. CMP AL,10 ;Se CIFRA < 10 allora vai JB CODIFICA ;alla codifica, altrimenti SUB AL,7 ;CIFRA = CIFRA 7. CODIFICA: SI,AX ;INDICE = CIFRA. AL,TAB[SI];CODICE = TAB[INDICE]. DX,0378h ;Invia il CODICE alla porta OUT DX,AL ;d uscita d indirizzo 0378h JMP INIZIO ;Torna ad inizio programma. FINE: AX,4C00h ;Richiedi il servizio DOS INT 21h ;di terminazione programma.

15 9 ) Una procedura di nome SPOSTA che copi il contenuto di un blocco di celle di memoria centrale il cui indirizzo logico iniziale è contenuto nei registri DS (parte segment) e SI (parte offset) e la cui dimensione (numero di byte) è rappresentata in binario nei registri BX (parte alta) e CX (parte bassa), nell area di memoria d indirizzo logico iniziale ES (parte segment) e DI (parte offset). ;Se l indirizzo fisico del blocco sorgente è maggiore ;di quello del blocco di destinazione, la copia deve ;essere eseguita in ordine d indirizzo crescente: SPOSTA: CLD CICLO: SB ;Poni a zero il flag Direction. ;BYTE [ES,DI] = BYTE [DS,SI], ;SI = SI + 1, DI = DI + 1. ;Se SI = 0 allora ;vai al secondo confronto. CMP SI,0 JNE CMP2 AX,DS ADD AX,1000h DS,AX ;DS = DS h. CMP2: CMP DI,0 JNE CMP3 ;Se DI = 0 allora ;vai al terzo confronto. AX,ES ADD AX,1000h ES,AX ;ES = ES h. CMP3: SUB CX,1 ;Decrementa il numero di byte SBB BX,0 ;ancora da trasferire JNZ CICLO ;Se nel blocco ci sono ancora CMP CX,0 ;dei byte da trasferire allora JNE CICLO ;ritorna all inizio del ciclo. RET ;Fine della procedura.

16 ;Se l indirizzo fisico del blocco sorgente è minore ;di quello del blocco di destinazione, la copia deve ;essere eseguita in ordine d indirizzo decrescente: SPOSTA: ADD SI,CX ;SI = SI + CX AX,DS ;AX = DS JNC NORIP1 ;Se flag carry = 0 vai a NORIP1. ADD AX,1000h ;AX = AX + 2^12. NORIP1: DX,BX PUSH CX CL,12 SHL DX,CL ;DX = BX * 2^12. POP CX ADD AX,DX DS,AX ;DS = AX + DX ADD DI,CX ;DI = DI + CX AX,ES ;AX = ES JNC NORIP2 ;Se flag carry = 0 vai a NORIP2. ADD AX,1000h ;AX = AX + 2^12. NORIP2: ADD AX,DX ES,AX ;ES = AX + DX CICLO: SUB SI,1 ;SI = SI 1 JNB NOPR1 ;Se flag borrow = 0 vai a NOPR1. AX,DS SUB DS,1000h DS,AX ;DS = DS + 2^12 NOPR1: SUB DI,1 ;DI = DI 1 JNB NOPR2 ;Se flag borrow = 0 vai a NOPR2. AX,ES SUB ES,1000h ES,AX ;ES = ES + 2^12 NOPR2: AL,DS:[SI] ;AL = BYTE [DS,SI] ES:[DI],AL ;BYTE [ES,DI] = AL SUB CX,1 ;Decrementa il numero di byte SBB BX,0 ;ancora da trasferire JNZ CICLO ;Se nel blocco ci sono ancora CMP CX,0 ;dei byte da trasferire allora JNE CICLO ;ritorna all inizio del ciclo. RET ;Fine della procedura.

17 10 ) Una procedura di nome NSUK che dati due numeri naturali N e K, rappresentati in binario nei registri BX e CX, restituisca nei registri AX e DX rispettivamente la parte bassa e la parte alta della rappresentazione binaria di N su K. NSUK : CMP CX,0 ;Se K = 0 allora JE FINE ;vai alla fine della procedura. CMP CX,BX ;Se K = N allora JE FINE ;vai alla fine della procedura. DEC BX ;N = N 1. CALL NSUK ;Calcola NSUK1. PUSH DX ;Salva NSUK1 nello stack. PUSH AX DEC CX ;K = K 1. CALL NSUK ;Calcola NSUK2. INC BX ;N = N + 1. INC CX ;K = K + 1. POP SI ;Preleva NSUK1 dallo stack ADD AX,SI ;NSUK = NSUK1 + NSUK2. POP DI ADC DX,DI RET ;Fine della procedura. FINE: DX,0 ;NSUK = 1. AX,1 RET ;Fine della procedura.

18 Rispondere alle seguenti domande: 1 ) Che cos è la velocità d elaborazione di un processore? E il numero medio d istruzioni che il processore esegue nell unità di tempo. 2 ) Come si calcola la velocità d elaborazione di un processore? Dividendo la frequenza di funzionamento del processore per il numero medio di cicli necessari ad eseguire un istruzione. 3 ) Di che tipo è l architettura interna del microprocessore INTEL 8086? PIPELINE a due stadi. 4 ) Che cos è un indirizzo fisico? E un numero binario di 20 cifre che identifica una cella della memoria centrale. 5 ) Che cos è un indirizzo logico? E una coppia di numeri binari di 16 cifre che identifica una cella della memoria centrale. 6 ) Quand è che un indirizzo logico si dice normalizzato? Quando la sua parte offset è minore di sedici. 7 ) Come si calcolano gli indirizzi logici equivalenti ad un indirizzo logico normalizzato? Se I.L.N. = (segment, offset): Per k = 1, 2, 3, ripetere: offset (k) = offset + 16 * k; segm (k) = (segm k) MOD ) Qual è la proprietà caratteristica di un programma con modello di memoria TINY? Tutto il codice delle istruzioni e dei dati occupa non più di 64KB della memoria centrale. 9 ) Qual è la proprietà caratteristica di un programma con modello di memoria SMALL? Il codice delle istruzioni e quello dei dati occupano ciascuno non più di 64KB di memoria centrale. 10 ) Qual è la proprietà caratteristica di un programma con modello di memoria COMPACT? Il codice delle istruzioni occupa non più di 64KB di memoria centrale, quello dei dati occupa più di 64KB. 11 ) Qual è la proprietà caratteristica del modello di memoria MEDIUM? Il codice delle istruzioni occupa più di 64KB di memoria centrale, quello dei dati occupa non più di 64KB. 12 ) Qual è la proprietà caratteristica del modello di memoria LARGE? Sia il codice delle istruzioni, sia quello dei dati occupa più di 64KB di memoria centrale. 13 ) Che cosa contiene il registro DS? La parte segment degli indirizzi logici delle celle di memoria che contengono gli operandi delle istruzioni. 14 ) Che cosa contiene l INSTRUCTION QUEUE? I codici delle istruzioni da eseguire. 15 ) Scrivere le sigle di tutti i registri a 16 bit del microprocessore INTEL AX, BX, CX, DX, SP, BP, SI, DI, CS; DS, ES, SS, IP, FLAGS. 16 ) Che cosa indica il valore uno del flag zero? Che il risultat o di un istruzione aritmetica o logica è uguale a zero. 17 ) Che cosa indica il valore uno del flag carry? Che il riporto finale di un addizione o che il prestito finale di una sottrazione vale uno. 18 ) Quali tipi di operandi di destinazione sono ammessi dall istruzione E? Un registro generale di 8 o 16 bit, una cella di memoria di uno o due byte o un registro di segmento.

19 19 ) Quali tipi di operandi sorgente sono ammessi dall istruzione E? Un registro generale di 8 o 16 bit, una cella di memoria di uno o due byte, un registro di segmento o una costante. 20 ) Quali combinazioni dei due operandi dell istruzione E non sono ammesse? Quella di due operandi che non hanno la stessa lunghezza, quella di due celle di memoria, quella di due registri di segmento e quella di un registro di segmento con una costante. 21 ) Qual è la condizione di salto associata all istruzione JB? Il flag carry è uguale ad uno. 22 ) Qual è la condizione di salto associata all istruzione JE? 29 ) Che cosa contiene la tabella dei vettori d interruzione? Gli indirizzi logici delle routine di gestione delle interruzioni. 30 ) Scrivere la sintassi delle istruzioni a- ritmetico - logiche ad un operando. [[RS:]] nome dest dest = R BYTE M WORD M 31 ) Quale operazione è specificata dall istruzione INC? dest = (dest + 1) MOD 2 n (n = 8 16). 32 ) Quale operazione è specificata dall istruzione DEC? dest = (dest 1) MOD 2 n (n = 8 16). Il flag zero è uguale ad uno. 23 ) Qual è la condizione di salto associata all istruzione JBE? Il flag carry oppure il flag zero vale uno. 24 ) Qual è la condizione di salto associata all istruzione JA? I flag carry e zero valgono zero. 25 ) Che cos è il BIOS? E un insieme di procedure che risiedono nella memoria ROM di ogni PC. 26 ) A cosa serve l istruzione INT 10h? A richiedere al BIOS l esecuzione di un servizio di gestione dello schermo. 27 ) A cosa serve l istruzione INT 16h? A richiedere al BIOS l esecuzione di un servizio di gestione della tastiera. 28 ) Dove si trova la tabella dei vettori d interruzione? Nei primi 1024 byte della memoria centrale.

20 Disegnare il flow chart e scrivere la codifica nel linguaggio assemblativo del microprocessore INTEL 8086 delle seguenti procedure: 1 ) Una procedura di nome GETILN che copi nel registro DS la parte segment e nel registro SI la parte offset dell indirizzo logico normalizzato corrispondente all indirizzo fisico contenuto nei registri DX (parte alta) ed AX (parte bassa). NOTA: si supponga, per semplicità, che DX < 16. GETILN: BX,16 ;segment = IF DIV 16 DIV BX ;offset = IF MOD 16 DS,AX ;DS = segment SI,DX ;SI = offset RET 2 ) Una procedura di nome GETIF che copi nel registro DX la parte alta e nel registro AX la parte bassa dell indirizzo fisico corrispondente all indirizzo logico (DS:SI). GETIF: AX,DS ;IF = segment * 16. BX,16 MUL BX ADD AX,SI ;IF = IF + offset. ADC DX,0 AND DX,000Fh ;IF = IF MOD 2^20. RET 3 ) Una procedura di nome PUTBYTE che visualizzi sul monitor del computer, a partire dalla posizione del cursore, il contenuto della cella di memoria d indirizzo logico (DS:SI), sottoforma di un numero esadecimale lungo esattamente due cifre. PUTBYTE: AL,[SI] ;NUM = BYTE [DS:SI] AH,0 BL,16 ;CIFRA0 = NUM MOD 16. DIV BL ;CIFRA1 = NUM DIV 16. CALL CODIFICA ;CODICE = CODIFICA(CIFRA1). CL,AH AH,0Eh BX,0 INT 10h ;Visualizza CODICE. AL,CL CALL CODIFICA ;CODICE = CODIFICA(CIFRA0).

21 INT 10h ;Visualizza CODICE. RET ;Fine della procedura. CODIFICA: CMP AL,10 ;Se CIFRA < 10 allora JB CIFRA ;vai a CIFRA, altrimenti: ADD AL,55 ;CODICE = CIFRA RET ;Fine della procedura. CIFRA: ADD AL,48 ;CODICE = CIFRA RET ;Fine della procedura. 4 ) Una procedura di nome GETLONG che legga da tastiera un numero esadecimale delimitato dal tasto INVIO, copiandone la rappresentazione binaria nei registri DX (parte alta) ed AX (parte bassa). NOTA: si supponga, per semplicità, che il valore del numero sia minore di 232. GETLONG: BX,0 ;NUM = 0 DX,0 CICLO: AH,0 ;Richiedi il servizio BIOS di INT 16h ;lettura CODICE da tastiera. CMP AL,0Dh ;Se CODICE = INVIO allora JE FINE ;vai alla fine della procedura. CALL CONVERTI ;Converti CODICE in CIFRA. CX,4 ;I = 4. SOMMA: ADD BX,BX ;NUM = NUM + NUM. ADC DX,DX DEC CX ;I = I 1. JNZ SOMMA ;Se I <> 0 ripeti SOMMA. ADD BX,AX ;NUM = NUM + CIFRA. JMP CICLO ;Ritorna a CICLO. FINE: AX,BX RET ;Fine della procedura. CONVERTI: CMP AX,65 ;Se CODICE < 65 allora JB CIFRA ;salta a cifra. SUB AX,55 ;CIFRA = CIFRA 55. RET ;Fine della procedura. CIFRA: SUB AX,48 ;CIFRA = CIFRA 48. RET ;Fine della procedura.

22 5 ) Una procedura di nome DUMP che, facendo uso delle procedure degli esercizi precedenti, legga da tastiera l indirizzo fisico iniziale ed il numero di byte di un blocco della memoria fisica, e ne visualizzi il contenuto in codice esadecimale sul monitor del computer. NOTA: si supponga, per semplicità, che il numero di byte del blocco da visualizzare sia minore di 216. DUMP: CALL GETLONG ;Leggi indirizzo fisico iniziale. CALL GETILN ;trasformalo in indirizzo logico. CALL GETLONG ;Leggi numero di byte del blocco. DI,AX ;I = numero di byte del blocco. CICLO: CMP DI,0 ;Se I = 0 allora JE FINE ;vai alla fine della procedura. CALL PUTBYTE ;Visualizza BYTE[segment:offset]. DEC DI ;I = I 1. INC SI ;offset = offset + 1. JNZ CICLO ;Se offset <> 0 ripeti il ciclo AX,DS ;segment = segment + 2^12. ADD AX,1000h DS,AX JMP CICLO ;Ripeti il ciclo. FINE: RET ;Fine della procedura.

23 ; ; TRACE.ASM -- prova della modalita' d'esecuzione passo-passo ; DOSSEG.MODEL TINY.DATA CONTEGGIO DW 100 ;numero di interruzioni con codice uno.code ;richieste per terminare il programma ORG 100H ; imposta il valore del vettore d'interruzione numero 1: INIZIO: DX,OFFSET ISR_1 ;dx = parte offset del nuovo vettore AX,2501H ;AL = numero del vettore d'interruz.ne INT 21H ;richiesta del servizio al DOS ; imposta ad uno il valore del flag Trap: PUSHF ;salva il registro dei flag nello stack BP,SP ;BP = puntatore alla cima dello stack OR WORD PTR [BP],100H ;poni ad uni il bit 8 dell'ultimo ele- POPF ;mento dello stack e copiane il valore ;nel registro dei flag. ; ciclo senza fine da eseguire un numero di volte pari a CONTEGGIO: AH,0Eh AL,. BX,0 CICLO: INT 21H JMP CICLO ; ; Routine di servizio delle interruzioni con codice uno: ; ISR_1: DEC CONTEGGIO ;decrementa la variabile CONTEGGIO JZ FINE ;se CONTEGGIO = 0 salta a FINE IRET ;rientra al programma interrotto FINE: STI INT 20H ;fine dell'esecuzione del programma END INIZIO

24 ;======================================================================== ; Autori :Lazzarini Stefano ; Titolo del progetto :Cronometro digitale ; Data di creazione : 22/02/2006 ; Scopo del progetto :simulare un cronometro digitale che visualizzi sullo ; schermo del computer il numero di secondi trascorsi ; dall'inizio dell'esecuzione model Small ;========================================================================.Data RitornoAlDos Equ 4Ch ; Restituisce il controllo all'interprete dei comandi NessunErrore Equ 0 ; Parametro in ingresso all'istruzione ERRORLEVEL Dos Equ 21h ; Codice dell'interruzione software per l'accesso alle ; funzioni del DOS nticks DW 0 ; Contatore del numero di interruzioni con codice 1Ch secondi DW 0 ; Contatore dei secondi trascorsi dall'inizio della ; esecuzione del programma ;========================================================================.Code Main: ; inizio procedura principale mov ax,@data ; Inizializza i segmenti DS e SS mov ds,ax ; per l'uso del modello di memoria mov ax,@stack ; con indirizzamento a 16 bit mov ss,ax mov sp,offset MyStack ; SP punta alla base dello stack locale push ds mov ax,@code mov ds,ax mov dx,offset isr1c mov ax,251ch int 21h ; imposta il vettore d'interruzione con codice 1Ch pop ds ciclo: mov ah,1 int 21h cmp al,27 jne ciclo FineProgramma: mov ah,ritornoaldos mov al,nessunerrore int Dos ; ciclo d'attesa della pressione del tasto ESC ; finchè non viene premuto il tasto ESC ; ritorna all'inizio del ciclo ; Il programma è terminato ; si restituisce il controllo ; all'interprete dei comandi, indicando che ; non si sono manifestati errori. ; ; Procedura che visualizza il contenuto del registro AX in decimale ; VISUALIZZA: VISUA: DIV CMP JE PUSH CALL POP ADD INT RET DX,0 BX,10 BX AX,0 VISUA DX VISUALIZZA DX AL,30H AL,DL AH,0Eh BX,0 10h

25 ; ; Routine di servizio delle interruzioni con codice 1Ch ; isr1c: push ax push bx push cx push dx push ds mov ax,@data mov ds,ax inc nticks cmp nticks,18 jne fine mov nticks,0 inc secondi mov ah,02h mov bh,0 mov dh,24 mov dl,70 int 10h mov ax,secondi call visualizza fine: pop ds pop dx pop cx pop bx pop ax iret ;========================================================================.Stack db 50 dup ('Stack') MyStack: End Main ; 250 bytes di spazio per lo stack locale

26 ; ASTERIX1.ASM -- asterisco che si sposta in linea retta sullo schermo: ; quando l'asterisco supera uno dei bordi, riappare dal bordo opposto. DOSSEG.MODEL TINY.DATA ASTERIX DW 0 ;posizione relativa dell'asterisco nella memoria video OLD_ISR DW 0,0 ;vecchio vettore d'interruzione con codice 1Ch..CODE ORG 100h MAIN: AX,3 ;richiede al BIOS di impostare lo schermo in modalit INT 10h ;testo con 25 righe ed 80 colonne e di cancellarlo. AX,351Ch ;leggi il vecchio vettore d interruzione con INT 21h ;codice 1Ch. OLD_ISR,BX ;salva il vecchio vettore d interruzione con OLD_ISR+2,ES ;codice 1Ch. DX,OFFSET ISR1C ;scrivi il nuovo vettore d interruzione con AX,251Ch ; codice 1Ch. INT 21h CICLO_DI_ATTESA: AH,0 ;richiama il servizio del BIOS di INT 16H ;acquisizione carattere da tastiera. CMP AL,27 ;se il carattere acquisito non Š l'escape, JNZ CICLO_DI_ATTESA ;ritorna in attesa di un nuovo carattere. DX,OLD_ISR ;ripristina il vecchio vettore d interruzione DS,OLD_ISR+2 ;con codice 1Ch. AX,251Ch INT 21h INT 20H ;termina l'esecuzione restituendo il controllo al DOS. ; Routine di servizio delle interruzioni con codice 1Ch: ISR1C PROC PUSH AX PUSH BX PUSH DS PUSH ES AX,CS DS,AX ;DS punta al segmento dei dati. AX,0B800H ES,AX ;ES punta alla memoria video. BX,ASTERIX ;BX punta alla posizione dell'asterisco. ES:BYTE PTR [BX],20H ;cancella l'asterisco dallo schermo. ADD BX,2 ;calcola la nuova posizione dell'asterisco: CMP BX,4000 ;BX = BX + 81 * 2 JB PROSEGUI ;se BX >= 4000 allora SUB BX,4000 ; BX = BX PROSEGUI: ASTERIX,BX ;aggiorna la posizione dell'asterisco, ES:BYTE PTR [BX],'*' ;e lo fa riapparire sullo schermo. POP ES POP DS POP BX POP AX IRET ISR1C ENDP END MAIN

27 ; ASTERIX2.ASM -- asterisco che si sposta in linea retta sullo schermo: ; quando l'asterisco raggiunge uno dei bordi, rimbalza all'indietro. DOSSEG.MODEL TINY.DATA ASTERIX DW 0 ;posizione relativa dell'asterisco nella memoria video ROW DW 0 ;numero di riga dello schermo dove giace l'asterisco. INC_ROW DW 1 ;differenza dalla riga successiva. COL DW 0 ;numero di colonna dello schermo dove giace l'asterisco. INC_COL DW 1 ;differenza dalla colonna successiva. OLD_ISR DW 0,0 ;vecchio vettore d'interruzione con codice 1Ch..CODE ORG 100h MAIN: AX,3 ;richiede al BIOS di impostare lo schermo in modalit INT 10h ;testo con 25 righe ed 80 colonne e di cancellarlo. AX,351Ch ;leggi il vecchio vettore d interruzione con INT 21h ;codice 1Ch. OLD_ISR,BX ;salva il vecchio vettore d interruzione con OLD_ISR+2,ES ;codice 1Ch. DX,OFFSET ISR1C ;scrivi il nuovo vettore d interruzione con AX,251Ch ; codice 1Ch. INT 21h CICLO_DI_ATTESA: AH,0 ;richiama il servizio del BIOS di INT 16H ;acquisizione carattere da tastiera. CMP AL,27 ;se il carattere acquisito non Š l'escape, JNZ CICLO_DI_ATTESA ;ritorna in attesa di un nuovo carattere. DX,OLD_ISR ;ripristina il vecchio vettore d interruzione DS,OLD_ISR+2 ;con codice 1Ch. AX,251Ch INT 21h INT 20H ;termina l'esecuzione restituendo il controllo al DOS.

28 ; Routine di servizio delle interruzioni con codice 1Ch: ISR1C PROC PUSH AX PUSH BX PUSH DS PUSH ES AX,CS DS,AX ;DS punta al segmento dei dati. AX,0B800H ES,AX ;ES punta alla memoria video. BX,ASTERIX ;BX punta alla posizione dell'asterisco. ES:BYTE PTR [BX],20H ;cancella l'asterisco dallo schermo. ; Calcola la nuova posizione dell'asterisco sullo schermo: ADD CMP JNZ NEG JMP1: CMP JNZ NEG JMP2: ADD CMP JNZ NEG JMP3: CMP JNZ NEG JMP4: SHL SHL ADD SHL SHL SHL SHL ADD SHL AX,ROW AX,INC_ROW AX,0 JMP1 INC_ROW AX,24 JMP2 INC_ROW ROW,AX AX,COL AX,INC_COL AX,0 JMP3 INC_COL AX,79 JMP4 INC_COL COL,AX BX,ROW BX,1 BX,1 BX,ROW BX,1 BX,1 BX,1 BX,1 BX,COL BX,1 ; aggiorna la posizione dell'asterisco e lo fa riapparire sullo schermo. ASTERIX,BX ES:BYTE PTR [BX],'*' ; POP ES POP DS POP BX POP AX IRET ISR1C ENDP END MAIN

29 ; SCANCODE.ASM: visualizzazione dei codici di scansione generati ; dalla tastiera di un personal computer. TITLE SCANCODE.MODEL TINY.DATA.CODE ORG 100H INIZIO: ; salva il vettore d'interruzione con codice 09h nella ; posizione 60h della tabella dei vettori d'interruzione INT INT AX,3509H 21H DX,BX AX,ES DS,AX AX,2560H 21H ; copia nella posizione 09h della tabella dei vettori d'interruzione l'in- ; dirizzo della nuova routine di gestione delle interruzioni con codice 9 INT DX,OFFSET NEWISR9 AX,CS DS,AX AX,2509H 21H ; ciclo d'attesa della pressione del tasto ESCAPE CICLO: AH,7 INT 21H CMP AL,27 JNE CICLO ; ripristina il vettore delle interruzioni con codice 9 del DOS INT INT AX,3560H 21H DX,BX AX,ES DS,AX AX,2509H 21H ; termina l'esecuzione del programma INT 20H

30 ; nuova routine di gestione delle interruzioni con codice 9 NEWISR9: INT 60H PUSH AX PUSH BX PUSH CX PUSH DX IN CALL INT INT AL,60H AH,0 VISUALIZZA AX,0E20H BX,0 10H AX,0E20H BX,0 10H POP DX POP CX POP BX POP AX IRET ; procedura che visualizza il contenuto del registro AX VISUALIZZA: DX,0 BX,10 DIV BX CMP AX,0 JE VISUA PUSH DX CALL VISUALIZZA POP DX VISUA: AX,0E30H ADD AL,DL BX,0 INT 10H RET END INIZIO

31 ; ORGANO.ASM: Simulazione di un organo elettronico su PC IBM. La pressione ; di alcuni tasti sulla tastiera del PC provoca l emissione di ; un suono di frequenza corrispondente ad una nota musicale. TITLE ORGANO.MODEL TINY.DATA ; Frequenza in Hertz delle principali note della scala muscale: DO EQU 262 ;DO = Hz RE EQU 293 ;RE = Hz MI EQU 330 ;MI = Hz FA EQU 349 ;FA = Hz SOL EQU 392 ;SOL= Hz LA EQU 440 ;LA = Hz Sl EQU 494 ;SI = Hz F_NOTA DW DO,RE,MI,FA,SOL,LA,Sl ;tabella delle frequenze note. ; Codici di scansione dei tasti associati alle note musicali: ZZ EQU 2CH ;codice di scansione del tasto Z XX EQU 2DH ;codice di scansione del tasto X CC EQU 2EH ;codice di scansione del tasto C VV EQU 2FH ;codice di scansione del tasto V BB EQU 30H ;codice di scansione del tasto B NN EQU 31H ;codice di scansione del tasto N MM EQU 32H ;codice di scansione del tasto M TASTO DB ZZ,XX,CC,VV,BB,NN,MM ;nomi dei tasti associati..code ORG 100H INIZIO: ; salva il vettore d'interruzione con codice 09h nella ; posizione 60h della tabella dei vettori d'interruzione AX,3509H INT 21H DX,BX AX,ES DS,AX AX,2560H INT 21H ; copia nella posizione 09h della tabella dei vettori d'interruzione l'in- ; dirizzo della nuova routine di gestione delle interruzioni con codice 9 DX,OFFSET NEWISR9 AX,CS DS,AX AX,2509H INT 21H ; ciclo d'attesa della pressione del tasto ESCAPE CICLO: AH,1 INT 21H CMP AL,27 JNE CICLO

32 ; ripristina il vettore delle interruzioni con codice 9 del DOS AX,3560H INT 21H DX,BX AX,ES DS,AX AX,2509H INT 21H ; disabilita il funzionamento dell'altoparlante IN AL,61H AND AL,0FCH OUT 61H,AL ; termina l'esecuzione del programma e restituisce il controllo al DOS INT 20H ; nuova routine di gestione delle interruzioni con codice 9 NEWISR9: INT 60H ;esegui la routine di gestione delle inter- ;ruzioni generate dalla tastiera del BIOS. PUSH AX PUSH BX PUSH CX PUSH DX PUSH DS AX,CS DS,AX ; leggi il codice di scansione del tasto premuto/rilasciato IN AL,60H CMP AL,128 JB SOUND ; se il tasto è stato rilasciato, disabilita l'altoparlante IN AL,61H AND AL,0FCH OUT 61H,AL JMP FINE ; calcola l'indice della nota associata al tasto SOUND: BX,0 RICERCA: CMP AL,TASTO [BX] JE TROVATO INC BX CMP BX,7 JB RICERCA JMP FINE ; Calcola DX = / frequenza del suono dell altoparlante TROVATO: ADD BX,BX ;BX = BX * 2 DX,18 ;DX = DIV 2^16 AX,13534 ;AX = MOD 2^16 DIV F_NOTA [BX] ;AX = DIV frequenza del suono DX,AX ;DX = AX

33 ; imposta la frequenza del suono dell altoparlante AL,0B6H OUT 43H,AL AX,DX OUT 42H,AL AL,AH OUT 42H,AL ; abilita il funzionamento dell'altoparlante IN AL,61H OR AL,03H OUT 61H,AL ; sequenza di rientro al programma interrotto FINE: POP DS POP DX POP CX POP BX POP AX IRET END INIZIO

34 Rispondere alle seguenti domande: 1 ) Scrivere la sintassi completa dell istruzione MULTIPLY. MUL sorg sorg = R 8 R 16 BYTE M WORD M 2 ) Quale operazione è rappresentata dall istruzione MUL BX? AX = AX * BX mod 2^16 DX = AX * BX div 2^16 3 ) Scrivere la sintassi completa dell istruzione DIVIDE. DIV sorg sorg = R 8 R 16 BYTE M WORD M 10 ) Scrivere la sintassi completa dell istruzione OUTPUT. OUT porta,sorg porta = cost DX; sorg = AL AX 11 ) Quale operazione è rappresentata dall istruzione OUT 61H,AL? La copia del contenuto del registro AL sulle linee della porta d indirizzo (61) ) Scrivere la sintassi completa dell istruzione INTERRUPT. INT cost (cost) 16 < ) Quale operazione è rappresentata dall istruzione DIV BX? AX = (AX + DX * 2^16) div BX DX = (AX + DX * 2^16) mod BX 5 ) Quale sequenza d operazioni è rappresentata dall istruzione SB se DF = 0? BYTE[ES:DI] = BYTE[DS:SI] DI = DI + 1; SI = SI ) Quale sequenza d operazioni è rappresentata dall istruzione SW se DF = 1? WORD[ES:DI] = WORD[DS:SI] DI = DI - 2; SI = SI ) A cosa serve il prefisso REP? A ripetere CX volte un istruzione di manipolazione stringhe. 8 ) Scrivere la sintassi completa dell istruzione INPUT. IN dest,porta dest = AL AX; porta = cost DX 13 ) Quale sequenza d operazioni è rappresentata dall istruzione INT 21H? 1: push(flags) 2: push(cs) 3: push(ip) 4: IF = 0, TF = 0 5: IP = WORD[84h] 6: CS = WORD[86h] 14 ) Quale sequenza d operazioni è rappresentata dall istruzione IRET? 1: pop(ip) 2: pop(cs) 3: pop(flags) 15 ) Quali sono le principali operazioni svolte da una routine di servizio delle interruzioni? 1 : salvare il contenuto dei registri usati; 2 : eseguire il servizio dell interruzione; 3 : ripristinare il contenuto dei registri usati. 16 ) Quali sono i parametri d ingresso e d uscita del servizio DOS get interrupt vector? 9 ) Quale operazione è rappresentata dall istruzione IN AL,60H? La copia in AL del valore delle linee della porta d indirizzo (60) 16. In ingresso: AH = 35h, AL = codice interruzione. In uscita: (ES:BX) = indirizzo della routine di servizio interruzioni con codice AL.

35 17 ) Quali sono i parametri d ingresso e uscita del servizio DOS set interrupt vector? In ingresso: AH = 25h AL = codice interruzione, (DS:DX) = indirizzo della routine di servizio interruzioni con codice AL. In uscita: nessun parametro. Alla tastiera. 25 ) Che cos è il sistema operativo di un sistema per l elaborazione dell informazione? E un insieme di procedure e programmi che gestiscono le risorse del sistema permettendo agli altri programmi di accedervi in modo semplice, efficiente ed affidabile. 18 ) Quando si verifica un interruzione hardware interna per errore di divisione? In seguito ad una divisione per zero o se il quoziente di una divisione non è rappresentabile nell operando di destinazione. 19 ) Quando si verifica un interruzione hardware interna per modalità passopasso? Al termine di ogni istruzione se prima della sua esecuzione il flag TF vale uno. 20 ) Quando si verifica un interruzione hardware esterna non mascherabile? Quando il segnale sulla linea di controllo NMI passa da livello basso a livello alto. 21 ) Quando si verifica un interruzione hardware esterna mascherabile? Quando il segnale sulla linea di controllo INTR è a livello alto ed il flag IF vale uno. 22 ) Da dove viene letto il codice di una interruzione hardware esterna mascherabile? Dalle otto linee dati meno significative del bus di sistema. 23 ) A quale dispositivo corrisponde il codice d interruzione numero otto? Al timer di sistema. 24 ) A quale dispositivo corrisponde il codice d interruzione numero nove? 26 ) Che cos è la multiprogrammazione? E una tecnica che consente di eseguire più programmi contemporaneamente. 27 ) Che cos è la memoria virtuale? E un area di memoria ausiliaria che simula il funzionamento della memoria centrale. 28 ) Che cos è lo spooling? E una tecnica di gestione delle unità periferiche. 29 ) Qual è la principale caratteristica di un sistema operativo real time? Garantire un tempo di risposta limitato ad ogni richiesta di servizio e/o interruzione. 30 ) Qual è la principale caratteristica di un sistema operativo interattivo? Permettere agli utenti d interagire direttamente con il sistema informatico. 31 ) Qual è la principale caratteristica di un sistema operativo batch? Minimizzare i tempi d inattività dell unità centrale. 32 ) Quali sono i principali componenti di un sistema operativo? Il nucleo, le librerie di procedure di sistema ed i programmi di sistema.

Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione.

Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione. Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione. Facendo esclusivamente uso delle istruzioni del linguaggio macchina

Dettagli

Esercizi per il recupero del debito formativo:

Esercizi per il recupero del debito formativo: ANNO SCOLASTICO 2005/2006 CLASSE 4 ISC Esercizi per il recupero del debito formativo: Facendo esclusivamente uso delle istruzioni del linguaggio macchina mnemonico del microprocessore INTEL 8086 viste

Dettagli

Interazione con il DOS e il BIOS

Interazione con il DOS e il BIOS Interazione con il DOS e il BIOS ARGOMENTI PRESENTATI IN QUESTI LUCIDI Routine di BIOS e DOS Due modalità diverse di restituire il controllo al DOS L interazione con le routine del DOS: l interrupt 21H

Dettagli

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086) PROF. CARMELO CALARCO Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086) 1 IL LINGUAGGIO ASSEMBLY Il linguaggio assembly è un linguaggio di programmazione a basso livello. Per linguaggi di basso livello

Dettagli

Nel microprocessore 8086 abbiamo una gran quantità di registri

Nel microprocessore 8086 abbiamo una gran quantità di registri I registri del microprocessore 8086 Nel microprocessore 8086 abbiamo una gran quantità di registri AH AL AX 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 B H B L BX 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 C H C L CX 1 0 1 1

Dettagli

Assembly. Modello x86

Assembly. Modello x86 Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore

Dettagli

Programmazione Assembly per 8088: Esercizi svolti

Programmazione Assembly per 8088: Esercizi svolti Programmazione Assembly per 8088: Esercizi svolti Marco Di Felice 13 dicembre 2006 1 Esercizio 1 (esercizio 1 del Tanenbaum, Appendice C) TESTO. Dopo l esecuzione dell istruzione MOV AX, 702 qual è il

Dettagli

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO Programma diviso in due moduli: MA.ASM: programma pricipale e funzioni di utilità MB.ASM: sottoprogramma di elaborazione Primo modulo: MA.ASM EXTRN alfa: BYTE

Dettagli

Il linguaggio assembly 8086

Il linguaggio assembly 8086 Il linguaggio assembly 8086 Introduzione Il linguaggio macchina Il linguaggio naturale di un microprocessore è il linguaggio macchina. Nel linguaggio macchina non esistono riferimenti astratti o simbolici

Dettagli

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni

Dettagli

I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi. Elementi di Assembly 8086

I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi. Elementi di Assembly 8086 I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi Elementi di Assembly 8086 1 Assembly 8086 I registri Per poter elaborare le informazioni ricevute dall esterno,

Dettagli

Il linguaggio Assembly della CPU 8086. Il linguaggio Macchina

Il linguaggio Assembly della CPU 8086. Il linguaggio Macchina Il linguaggio Assembly della CPU 8086 Il linguaggio Macchina Fortemente orientato alla macchina Direttamente eseguibile Praticamente illeggibile Utilizzato negli anni 50 70 per sviluppare programmi Attualmente

Dettagli

Famiglia dei processori INTEL

Famiglia dei processori INTEL Famiglia dei processori INTEL 1975 2002 8080-8086 - 80286-80386 - 80486 - Pentium - Pentium II-III-IV - Itanium Compatibilità del SW (assemby) 8086 80286 80386 80486 Pentium Pentium III Perché studiare

Dettagli

Lezione Uno: Il linguaggio Assembly e i metodi di indirizzamento (libro di testo pag )

Lezione Uno: Il linguaggio Assembly e i metodi di indirizzamento (libro di testo pag ) Ud6: Linguaggio Assembly Lezione Uno: Il linguaggio Assembly e i metodi di indirizzamento (libro di testo pag. 119-127) Caratteristiche di un linguaggio Assembly Basso livello Diverso per ogni architettura

Dettagli

Architettura degli elaboratori (A)

Architettura degli elaboratori (A) Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma

Dettagli

Calcolatori Elettronici Lezione A2 Architettura i8086

Calcolatori Elettronici Lezione A2 Architettura i8086 Calcolatori Elettronici Lezione A2 Architettura i8086 Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Architettura i8086 Sommario: L i8086 Registri Accesso alla memoria: indirizzi

Dettagli

)21'$0(17,',,1)250$7,&$,,

)21'$0(17,',,1)250$7,&$,, )21'$0(17,',,1)250$7,&$,, (6(5&,7$=,21(Qƒ,//,1*8$**,2$66(0%/(5 Indicare (in binario) lo stato dei flag C, O, S, Z, P e del registro AH dopo l esecuzione delle due MOV AH, 70 ADD AH, 70 La prima istruzione

Dettagli

Istruzioni di modifica della sequenza di elaborazione

Istruzioni di modifica della sequenza di elaborazione Istruzioni di modifica della sequenza di elaborazione Permettono di modificare la sequenza di esecuzione delle istruzioni di un programma, normalmente controllata dal meccanismo automatico di avanzamento

Dettagli

CALCOLATORI ELETTRONICI II

CALCOLATORI ELETTRONICI II CALCOLATORI ELETTRONICI II L ASSEMBLATORE Microsoft MASM MASM Argomenti della lezione Faremo riferimento al linguaggio sorgente accettato dall assemblatore Microsoft MASM nelle versioni successive alla

Dettagli

Linguaggio assembly per microprocessore 8086

Linguaggio assembly per microprocessore 8086 Linguaggio assembly per microprocessore 8086 Imparare il linguaggio assembly significa conoscere il microprocessore I programmi assembly risultano molto più veloci di quelli scritti in qualsiasi altro

Dettagli

Il microprocessore 8086

Il microprocessore 8086 1 Il microprocessore 8086 LA CPU 8086 Il microprocessore 8086 fa parte della famiglia 80xxx della INTEL. Il capostipite di questa famiglia è stato l 8080, un microprocessore ad 8 bit che ha riscosso un

Dettagli

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3).

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3). Corso di BASCOM 8051 - (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. D I S P L A Y L C D (3). GESTIONE DI UNA SEMPLICE CALCOLATRICE. Questo programma

Dettagli

MASSIMO UBERTINI ASSEMBLER WWW.UBERTINI.IT

MASSIMO UBERTINI ASSEMBLER WWW.UBERTINI.IT MASSIMO UBERTINI ASSEMBLER WWW.UBERTINI.IT ;Nome del programma: inser.asm ;Programmatore: ;Descrizione ;Programma che inserisce un valore nel registro AX. DOSSEG.MODEL SMALL.STACK 200H.DATA.CODE BEGIN:

Dettagli

Architettura di una CPU

Architettura di una CPU Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni 2 M. Violante 1.1

Dettagli

Video e Tastiera con le interruzioni software del BIOS e di MSDOS

Video e Tastiera con le interruzioni software del BIOS e di MSDOS Video e Tastiera con le interruzioni software del BIOS e di MSDOS Debug del DOS Le interruzioni Il sistema operativo MSDOS fornisce funzioni richiamabili attraverso le istruzioni dell ISA x-86 nei programmi

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Anno Accademico 2009-2010 Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo I processori Intel

Dettagli

L Assembler 80x86 Concetti Generali. M. Rebaudengo M. Sonza Reorda P. Bernardi

L Assembler 80x86 Concetti Generali. M. Rebaudengo M. Sonza Reorda P. Bernardi L Assembler 80x86 Concetti Generali M. Rebaudengo M. Sonza Reorda P. Bernardi Sommario Introduzione Pseudo-Istruzioni Operatori Modi di Indirizzamento Istruzioni Sommario Introduzione Pseudo-Istruzioni

Dettagli

iafelice at cs(dot)unibo(dot)it

iafelice at cs(dot)unibo(dot)it Corso di Archite@ura degli Elaboratori Modulo di Assembly ASSEMBLY 8088 Bruno Iafelice Università di Bologna iafelice at cs(dot)unibo(dot)it 1 ArgomenE Formato delle istruzioni Indirizzamento Istruzioni

Dettagli

L insieme delle istruzioni (6)

L insieme delle istruzioni (6) L insieme delle istruzioni (6) Architetture dei Calcolatori (lettere A-I) Alcune note conclusive I due principi dell architettura a programma memorizzato Uso di istruzioni indistinguibili dai dati Uso

Dettagli

Processore Danilo Dessì. Architettura degli Elaboratori.

Processore Danilo Dessì. Architettura degli Elaboratori. Processore 8088 Architettura degli Elaboratori Danilo Dessì danilo_dessi@unica.it Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine

Dettagli

Manualetto. Aggiornato al 31/07/2014

Manualetto. Aggiornato al 31/07/2014 Sistema emulato Periferiche 8086 Manualetto s165178 @ studenti.polito.it Aggiornato al 31/07/2014 Canali del sistema emulato Routine Descrizione Canale Indice IVT ISR_PA_IN L 8086 riceve un dato dalla

Dettagli

Il linguaggio Macchina

Il linguaggio Macchina Il linguaggio Assembly della CPU 8086 Il linguaggio Macchina 2 Fortemente orientato alla macchina Direttamente eseguibile Praticamente illeggibile Utilizzato negli anni 50 70 per sviluppare programmi Attualmente

Dettagli

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10)

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10) ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10) Chip con 40 piedini e 29000 transistori Progettato a metà degli anni 70, periodo in cui la densità di integrazione era relativamente bassa ( solo

Dettagli

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE Il computer o elaboratore è una macchina altamente organizzata capace di immagazzinare, elaborare e trasmettere dati con notevole precisione e rapidità. Schematicamente

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel della terza generazione progetto del 1978/79 address bus: 20 bit Ä 1M byte data bus: 8 bit per l 8088, 16 bit per l 8086 identico

Dettagli

Esercizi su Programmazione in Assembler x86 per l Prof. Riccardo Torlone Università Roma Tre

Esercizi su Programmazione in Assembler x86 per l Prof. Riccardo Torlone Università Roma Tre Esercizi su Programmazione in Assembler x86 per l 8088 Prof. Riccardo Torlone Università Roma Tre Esercizio I Scrivere un programma in linguaggio assemblativo 8088 che, presi due dati a e b in memoria,

Dettagli

Lezione XII: La gestione delle eccezioni in MINIX

Lezione XII: La gestione delle eccezioni in MINIX 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 4 aprile 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche 3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni

Dettagli

Esercizi su Programmazione in Assembler i386. Prof. Riccardo Torlone Università Roma Tre

Esercizi su Programmazione in Assembler i386. Prof. Riccardo Torlone Università Roma Tre Esercizi su Programmazione in Assembler i386 Prof. Riccardo Torlone Università Roma Tre Esercizio I Scrivere un programma in linguaggio assemblativo 8088 che, presi due dati a e b in memoria, calcola l

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel di terza generazione progetto originario del 1979, ancora oggi interessanti per: motivi didattici: l architettura dei processori Intel

Dettagli

Esercizi sul linguaggio Assembler

Esercizi sul linguaggio Assembler Esercizi sul linguaggio Assembler Corso di Laurea di Ing. Gestionale e di Ing. delle Telecomunicazioni A.A. 2007-2008 1. A partire dalla locazione di nome simbolico CIFRA sono memorizzate le codifiche

Dettagli

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. I processori Intel Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. L'8086 e' un processore a 16 bit quindi i suoi registri potranno

Dettagli

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 13/09/2013/ Foglio delle domande/versione 1

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 13/09/2013/ Foglio delle domande/versione 1 Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 13/09/2013/ Foglio delle domande/versione 1 1) Dato un diagramma di flusso quali sono le condizioni necessarie perché si possa costruire un programma corrispondente?

Dettagli

Esercizi per il corso di Architettura dei Calcolatori. Anno accademico 2008/09. Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione )

Esercizi per il corso di Architettura dei Calcolatori. Anno accademico 2008/09. Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione ) Esercizi per il corso di Architettura dei Calcolatori Anno accademico 2008/09 Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione ) 1) Caricare nel registro accumulatore AX il contenuto della

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

CLASSIFICAZIONE DEI SISTEMI DI ELABORAZIONE AUTOMATICA DELL INFORMAZIONE

CLASSIFICAZIONE DEI SISTEMI DI ELABORAZIONE AUTOMATICA DELL INFORMAZIONE APPUNTI DI SISTEMI rancesco Longo 4 ISC CLASSIICAZIONE DEI SISTEMI DI ELABORAZIONE AUTOMATICA DELL INORMAZIONE 1 SISTEMI CONVENZIONALI (Von Neumann) Sistemi che eseguono un programma già memorizzato nella

Dettagli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo

Dettagli

LABORATORIO DI SISTEMI

LABORATORIO DI SISTEMI ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 4 LABORATORIO DI SISTEMI OGGETTO: Scrivere un programma in Assembly, per CPU 8086, utilizzando le porte ed i dispositivi virtuali collegate

Dettagli

Calcolatori Elettronici Parte X: l'assemblatore as88

Calcolatori Elettronici Parte X: l'assemblatore as88 Anno Accademico 2013/2014 Calcolatori Elettronici Parte X: l'assemblatore as88 Prof. Riccardo Torlone Università Roma Tre L'assemblatore as88 Disponibile presso: CD-ROM allegato al libro di testo del corso

Dettagli

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da

Dettagli

Orologio Digitale. Obiettivo. Analisi Hardware. Il TIC

Orologio Digitale. Obiettivo. Analisi Hardware. Il TIC Orologio Digitale Obiettivo Il nostro intento è creare un programma ed implementarlo in linguaggio Assembly 8086, che stampi a schermo un orologio digitale. Inizialmente il valore sarà sincronizzato con

Dettagli

Note sull architettura del calcolatore

Note sull architettura del calcolatore Note sull architettura del calcolatore 1 Algoritmo Problema Preparazione di una torta Programmazione del VCR MCD tra due numeri Algoritmo Sequenza ordinata di istruzioni che risolve il problema specifico

Dettagli

Elementi di Architettura

Elementi di Architettura Elementi di Architettura Fondamenti di Informatica Roberto BASILI Marzo, 2007 Classi di Istruzioni Istruzioni di assegnamento/modifica Istruzioni di controllo delle sequenze Istruzioni di I/O Classi di

Dettagli

Assembler Intel 80x86: Set delle istruzioni

Assembler Intel 80x86: Set delle istruzioni Assembler Intel 80x86: Set delle istruzioni Calcolatori Elettronici B aa 2004/2005 Massimiliano Giacomin 1 Classi di istruzioni Il set di istruzioni dell Assembler Intel 80x86 può essere suddiviso nelle

Dettagli

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO JP pq E un istruzione di salto assoluto incondizionato. Per salto assoluto si intende il fatto che grazie a quest istruzione, il contenuto

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

Concetti Introduttivi

Concetti Introduttivi Concetti Introduttivi Architettura del Computer http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione In questo corso ci occuperemo

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo Microprocessori INTEL per il PC 8080 (1974)

Dettagli

Architettura di un elaboratore. Il modello di von Neumann

Architettura di un elaboratore. Il modello di von Neumann Architettura di un elaboratore Il modello di von Neumann 4(5) componenti fondamentali unita di elaborazione: CPU memoria centrale: RAM periferiche (memoria di massa) bus di sistema bus di sistema CPU RAM

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel di terza generazione progetto originario del 1979, ancora oggi interessanti per: motivi didattici: l architettura dei processori Intel

Dettagli

Architettura hardware

Architettura hardware Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel di terza generazione progetto originario del 1979, ancora oggi interessanti per: 1. motivi didattici: l architettura dei processori

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi G L O S S A R I O BIT: acronimo di Binary Digit. E l unità elementare di informazione. Può assumere solo il valore 0 o 1. CALCOLATORE: macchina che opera la trasformazione dei dati (informazioni) HARDWARE:

Dettagli

Set Istruzioni della CPU. Classificazione del set istruzioni Modi di indirizzamento

Set Istruzioni della CPU. Classificazione del set istruzioni Modi di indirizzamento Set Istruzioni della CPU Classificazione del set istruzioni ---------------------------- Modi di indirizzamento Classificazione del set Istruzioni Organizzazione. Il set istruzioni dei mp della famiglia

Dettagli

Assembler 8086/8088: Concetti Generali

Assembler 8086/8088: Concetti Generali L Assembler 8086 Concetti Generali M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Sommario Introduzione Pseudo-Istruzioni Operatori

Dettagli

OPERAZIONI ARITMETICHE

OPERAZIONI ARITMETICHE OPERAZIONI ARITMETICHE Merker speciali: SM1.0 risultato uguale a zero SM1.1 overflow SM1.2 risultato negativo SM1.3 divisione per zero Tabella riassuntiva (codici operativi in IL) INTERI (16 Bit) DOUBLE

Dettagli

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 19 Febbraio Attenzione:

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 19 Febbraio Attenzione: Cognome.. Nome.... Architettura degli Elaboratori Classe 3 Prof.ssa Anselmo Appello del 19 Febbraio 2016 Attenzione: Inserire i propri dati nell apposito spazio sottostante e in testa a questa pagina.

Dettagli

DOLLAR EQU '$' ; nome e cognome possono avere al max questa lunghezza. ; N.B. ogni stringa deve terminare con '$'

DOLLAR EQU '$' ; nome e cognome possono avere al max questa lunghezza. ; N.B. ogni stringa deve terminare con '$' TITLE CodiceFiscale: per esame 1/7/2009 comment * Costruzione della prima parte (11 caratteri) del codice fiscale. N.B. Anziche' nello stack (come richiesto nel compito), qui i caratteri calcolati sono

Dettagli

Architettura 8086/8088

Architettura 8086/8088 Architettura 8086/8088 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Sonza Reorda, M. Rebaudengo - a.a. 2007/08 Caratteristiche generali dell'8086 Usa la tecnologia

Dettagli

LA GESTIONE DELLA I/O

LA GESTIONE DELLA I/O LA GESTIONE DELLA I/O Il S.O. È l interfaccia tra l hardware e i programmi che effettuano richieste di I/O Sottosistema di I/O strutturato in moduli chiamati DRIVER uno per ogni dispositivo I Driver rendono

Dettagli

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione: Cognome.. Nome.... Architettura degli Elaboratori Classe 3 Prof.ssa Anselmo Appello del 18 Febbraio 2015 Attenzione: Inserire i propri dati nell apposito spazio sottostante e in testa a questa pagina.

Dettagli

Elaborazione dell informazione

Elaborazione dell informazione Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione

Dettagli

La codifica dei numeri

La codifica dei numeri La codifica dei numeri La rappresentazione dei numeri con il sistema decimale può essere utilizzata come spunto per definire un metodo di codifica dei numeri all interno degli elaboratori: la sequenza

Dettagli

Rapida Nota sulla Rappresentazione dei Caratteri

Rapida Nota sulla Rappresentazione dei Caratteri TECNOLOGIA DIGITALE TECNOLOGIA DIGITALE (segue) CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale Dati ed operazioni vengono codificati tramite sequenze di bit 8 bit

Dettagli

Aritmetica dei Calcolatori Elettronici

Aritmetica dei Calcolatori Elettronici Aritmetica dei Calcolatori Elettronici Prof. Orazio Mirabella L informazione Analogica Segnale analogico: variabile continua assume un numero infinito di valori entro l intervallo di variazione intervallo

Dettagli

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina

Dettagli

Programmazione strutturata

Programmazione strutturata Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Gestionale (L-Z) 3. (testo di riferimento: Bellini-Guidi) Ing. Michele Ruta 1di 29 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Uno sguardo al codice chiarificherà i dettagli. La tabella di invio interrupt intmap è definita nel file io.h.

Uno sguardo al codice chiarificherà i dettagli. La tabella di invio interrupt intmap è definita nel file io.h. CAPITOLO 9 - ELABORAZIONE DEGLI INTERRUPT L interrupt hardware è un meccanismo potente per fornire il supporto di molti servizi del sistema operativo. Come descritto nel capitolo 2, una richiesta di interrupt

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Introduzione al linguaggio macchina Indice Che cos è l assembly Elementi del linguaggio Memoria di programma Registri interni e di I/O Registri particolari Rappresentazione dell

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore Architettura di un calcolatore Corso di Informatica A Vito Perrone Indice La macchina di Von Neumann Memoria CPU Bus Interfacce Esempio L algoritmo Il programma Fasi di esecuzione di un istruzione 2 1

Dettagli

SET/CLEAR LOAD DATA FROM STRING

SET/CLEAR LOAD DATA FROM STRING SET/CLEAR STD CLD AZIONE: Imposta ad 1 (STD) o a zero (CLD) il valore del flag DF. Sono istruzioni senza parametri. Vanno sempre messi!! FLAG di cui viene modificato il contenuto: Nessuno (a parte DF).

Dettagli

Istruzioni di trasferimento dati

Istruzioni di trasferimento dati Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:

Dettagli

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario I sistemi di numerazione Il sistema binario Altri sistemi di numerazione Algoritmi di conversione Esercizi 07/03/2012 2 Sistemi

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo: c m c m-1... c 1 c 0 (le c i sono cifre

Dettagli

INTERRUPT 21H. Dispensa. Autore: Michele Naso. Classe: QUINTA INFORMATICA (5IA) Anno scolastico: 2003/2004. Scuola: Itis Euganeo

INTERRUPT 21H. Dispensa. Autore: Michele Naso. Classe: QUINTA INFORMATICA (5IA) Anno scolastico: 2003/2004. Scuola: Itis Euganeo Autore: Classe: Michele Naso QUINTA INFORMATICA (5IA) Anno scolastico: 2003/2004 Scuola: Itis Euganeo INTERRUPT 21H Dispensa Elenco di chiamate ai servizi DOS più diffusi e relativi schemi di utilizzazione.

Dettagli

Assembly Introduzione Rev. Digitale 1.0 del 01/09/2016

Assembly Introduzione Rev. Digitale 1.0 del 01/09/2016 Assembly 8086 - Introduzione Rev. Digitale 1.0 del 01/09/2016 E un linguaggio mnemonico in corrispondenza 1 : 1 con le istruzioni binarie riconosciute dalla CPU 8086. Cioè codifica con un nome mnemonico

Dettagli

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA Lezione n.11 n.11 Lezione n. 11 ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO ARCHITETTURE A PIU' INDIRIZZI In questa lezione verranno introdotti i concetti di base relativi

Dettagli

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 LA CODIFICA DELL INFORMAZIONE Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 Codifica dati e istruzioni Per scrivere un programma è necessario rappresentare istruzioni

Dettagli

Corso di Laurea in Informatica

Corso di Laurea in Informatica Corso di Laurea in Informatica Architetture degli Elaboratori Corsi A e B Scritto del 13 Dicembre 2004 Esercizio 1 (punti -1, 3) Si consideri l architettura nota come macchina di von Neumann (a) Come le

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

Sistemi di numerazione

Sistemi di numerazione SOMMARIO Sistemi di numerazione...2 Sistema decimale (o a base 10)...2 Sistema binario...2 Operazioni sui numeri binari...3 Espressioni logiche...4 Definizione...4 Prodotto Logico : AND...4 Somma Logica

Dettagli

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere I/O INTERATTIVO scanf: quello che è indispensabile sapere printf: quello che è utile sapere Input da tastiera Funzioni disponibili (tra le altre): scanf getchar Schema di funzionamento Tastiera Sistema

Dettagli

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base Cambiamenti di base Tecniche Informatiche di Base TIB 1 Il sistema posizionale decimale L idea del sistema posizionale: ogni cifra ha un peso Esempio: 132 = 100 + 30 + 2 = 1 10 2 + 3 10 1 + 2 10 0 Un numero

Dettagli

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App. Assembly Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A 1 Linguaggio assembly (App. A) Rappresentazione simbolica del linguaggio macchina Più comprensibile

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Architetture degli elaboratori Il calcolatore Un calcolatore è sistema composto da un elevato numero di componenti Il suo funzionamento può essere descritto se lo si considera come

Dettagli

Cenni ad Assembly Intel

Cenni ad Assembly Intel Cenni ad Assembly Intel Luca Abeni April 17, 2015 Architerrura Intel Utilizzata sulla maggior parte dei laptop, desktop e server moderni Lunga storia Dagli anni 70 (Intel 8080-8 bit!)......fino ad oggi

Dettagli

Applicazioni dei microcontrollori PIC

Applicazioni dei microcontrollori PIC Applicazioni dei microcontrollori PIC In questa unità vengono esposte le modalità di realizzazione di un circuito hardware con il microcontroller PIC16C84 (o PIC16F84), per la prova dei programmi presentati

Dettagli

Appunti di sistemi sul DEBUG IL DEBUG

Appunti di sistemi sul DEBUG IL DEBUG IL Il è un'utility di uso frequente dell'ms-dos e serve per la ricerca e l eliminazione degli errori nei programmi; Esso ci consente di visualizzare passo-passo tutte le istruzioni che vengono eseguite

Dettagli