











Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Una serie di esercizi riguardanti la conversione di numeri da una base a another, nonché esercizi nel linguaggio Assemblatore del microcontrollore PIC 16F84. Gli esercizi comprendono calcoli binari, ottali, esadecimali e la simulazione di porte logiche come AND, OR, EXOR, NAND, NOR e NOT.
Tipologia: Prove d'esame
1 / 19
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!












1°) Convertire in base 10 i seguenti numeri rappresentati nelle basi indicate:
4°) Eseguire le seguenti sottrazioni in binario:
7°) Esegui la moltiplicazione binaria tra 63 e 30 , convertendo il risultato in decimale. 111111 X 11110 = 1233332100 1111110 + 11111100 + 111111000 + 1111110000 = 11101100010 (11101100010) 2 = 2+32+64+256+512+1024 = 1890 8°) Esegui la moltiplicazione binaria tra 61 e 31 , convertendo il risultato in decimale. 111101 X 11111 = 1233332100 111101 + 1111010 + 11110100 + 111101000 + 1111010000 = 11101100011 (11101100011) 2 = 1+2+32+64+256+512+1024 = 1891 9°) Esegui la moltiplicazione binaria tra 59 e 31 , convertendo il risultato in decimale. 111011 X 11111 = 123333211 111011 + 1110110 + 11101100 + 111011000 + 1110110000 = 11100100101 (11100100101) 2 = 1+4+32+256+512+1024 = 1829 10°) Esegui la moltiplicazione binaria tra 55 e 31 , convertendo il risultato in decimale. 110111 X 11111 = 1223332210 110111 + 1101110 + 11011100 + 110111000 + 1101110000 = 11010101001 (11010101001) 2 = 1+8+32+128+512+1024 = 1705
5°) Rappresenta con 8 bit in modulo e segno, in complemento ad uno, in complemento a due ed in eccesso 127 il numero -. In modulo e segno = 11100011 In complemento a uno = 10011100 In complemento a due = 10011100 + 1 = 10011101 In eccesso 127 = 01111111 - 01100011 = 00011100 6°) Rappresenta con 8 bit in modulo e segno, in complemento ad uno, in complemento a due ed in eccesso 127 il numero -. In modulo e segno = 11101001 In complemento a uno = 10010110 In complemento a due = 10010110 + 1 = 10010111 In eccesso 127 = 01111111 - 01101001 = 00010110 7°) Rappresenta con 8 bit in modulo e segno, in complemento ad uno, in complemento a due ed in eccesso 127 il numero -. In modulo e segno = 11100101 In complemento a uno = 10011010 In complemento a due = 10011010 + 1 = 10011011 In eccesso 127 = 01111111 - 01100101 = 00011010 8°) Rappresenta con 8 bit in modulo e segno, in complemento ad uno, in complemento a due ed in eccesso 127 il numero -. In modulo e segno = 11110001 In complemento a uno = 10001110 In complemento a due = 10001110 + 1 = 10001111 In eccesso 127 = 01111111 - 01110001 = 00001110
1°) Esegui la sottrazione binaria tra le rappresentazioni in complemento a due di - e -95 , convertendo il risultato in decimale. 111 256 – 115 = 141 = 100011012 100011012 - 256 – 95 = 161 = 101000012 101000012 = (^111011002) DEC(11101100) = 4+8+32+64-128 = - 2°) Esegui la sottrazione binaria tra le rappresentazioni in complemento a due di - e -103 , convertendo il risultato in decimale. 11111 256 – 123 = 133 = 100001012 100001012 - 256 – 103 = 153 = 100110012 100110012 = (^111011002) DEC(11101100) = 4+8+32+64-128 = - 3°) Esegui la sottrazione binaria tra le rappresentazioni in complemento a due di - e -99 , convertendo il risultato in decimale. 111111 256 – 119 = 137 = 100010012 100010012 - 256 – 99 = 157 = 100111012 100111012 = (^111011002) DEC(11101100) = 4+8+32+64-128 = - 4°) Esegui la sottrazione binaria tra le rappresentazioni in complemento a due di - e -107 , convertendo il risultato in decimale. 111111 256 – 127 = 129 = 100000012 100000012 - 256 – 107 = 149 = 101000012 100101012 = (^111011002) DEC(11101100) = 4+8+32+64-128 = -
1°) Calcolare in binario e convertire in decimale il contenuto del registro W dopo l’esecuzione delle seguenti istruzioni: MOVLW 150 ;W = (10010110) 2 and ANDLW 170 ; (10101010) 2 = ; (10000010) 2 = 2 + 128 = 130 2°) Calcolare in binario e convertire in decimale il contenuto del registro W dopo l’esecuzione delle seguenti istruzioni: MOVLW 45 ;W = (00101101) 2 ior IORLW 180 ; (10110100) 2 = ; (10111101) 2 = 1 + 4 + 8 + 16 + ; 32 + 128 = 189 3°) Calcolare in binario e convertire in decimale il contenuto del registro W dopo l’esecuzione delle seguenti istruzioni: MOVLW 60 ;W = (00111100) 2 xor XORLW 165 ; (10100101) 2 = ; (10011001) 2 = 1 + 8 + 16 + 128 = ; = 153 4°) Calcolare in binario e convertire in decimale il contenuto del registro W ed il valore dei flag C, DC e Z dopo l’esecuzione delle seguenti istruzioni: ; 11011001 MOVLW 205 ; W = (11001101) 2 + ADDLW 217 ; (11011001) 2 = ; (10100110) 2 = 2 + 4 + 32 + ; + 128 = 166 ; C = 1, DC = 1, Z = 0 5°) Calcolare in binario e convertire in decimale il contenuto del registro W ed il valore dei flag C, DC e Z dopo l’esecuzione delle seguenti istruzioni: ; 11001111 MOVLW 237 ; W = (10111000) 2 - SUBLW 184 ; (11101101) 2 = ; (11001011) 2 = 1 + 2 + 8 + 64 ; + 128 = 203 ; C = 0, DC = 0, Z = 0 6°) Trasformare il contenuto del registro d’indirizzo (20) 16 dal codice ASCII di una lettera in forma maiuscola al codice ASCII della stessa lettera in forma minuscola. MOVLW 20H ;W = 20h ADDWF 20H,F ;[20h] = [20h] + 20h
7°) Copiare nel registro di lavoro W la rappresentazione binaria della cifra decimale il cui codice ASCII è contenuto nel registro d’indirizzo (20) 16. MOVF 20H,W ;W = [20H] ANDLW 00001111B ;W = W AND 00001111B (bit a bit) 8°) Scambiare tra loro i contenuti dei registri d’indirizzo (20) 16 e (30) 16. MOVF 20H,W ;W = [20H] MOVWF 40H ;[40H] = W MOVF 30H,W ;W = [30H] MOVWF 20H ;[20H] = W MOVF 40H,W ;W = [40H] MOWF 30H ;[30H] = W 9°) Invertire il livello del segnale presente su ciascuna delle quattro linee d’uscita RB4, RB5, RB6 ed RB7, senza modificare il segnale sulle altre linee della porta B. MOVLW 11110000b ;W = 11110000b XORWF PORTB,F ;PORTB = PORTB XOR W 10°) Sommare al contenuto del registro d’indirizzo (20) 16 quello del registro d’indirizzo (30) 16 solo se il risultato è minore di 256. MOVF 20H,W ;W = [20 16 ]. ADDWF 30H,W ;W = ([20 16 ] + [30 16 ]) mod 256. BTFSS STATUS,C ;Se il riporto finale è zero, MOVWF 20H ;allora [20 16 ] = W. 11°) Sottrarre al contenuto del registro d’indirizzo (20) 16 quello del registro d’indirizzo (30) 16 solo se il risultato è maggiore o uguale a zero. MOVF 30H,W ;W = [30 16 ]. SUBWF 20H,W ;W = ([20 16 ] - [30 16 ]) mod 256. BTFSC STATUS,C ;Se il prestito finale è zero, MOVWF 20H ;allora [20 16 ] = W. 12°) Traslare di una posizione verso sinistra tutti i bit del codice binario contenuto nel registro d’indirizzo (20) 16 , copiando il valore del bit più significativo nella posizione di ordine zero. MOVF 20H,W ;W = [20H] ADDWF 20H,F ;[20H] = [20H] * 2 MOVF STATUS,W ;W = STATUS ANDLW 00000001B ;W = Carry ADDWF 20H,F ;[20H] = [20H] + Carry 13°) Incrementare di uno il numero binario di 16 cifre la cui parte bassa è contenuta nel
18°) Simulare una porta OR con ingressi le linee RA0 ed RA1 ed uscita la linea RA4 (si supponga che RA0 ed RA1 siano già impostate in ingresso ed RA4 in uscita). CICLO: BTFSS PORTA,0 ;Se RA4 è a livello basso GOTO RA0L ;allora vai a RA0L. RA0H: BSF PORTA,4 ;Poni RA4 a livello alto. GOTO CICLO ;Vai a CICLO. RA0L: BTFSC PORTA,1 ;Se RA4 è a livello alto GOTO RA0H ;allora vai a RA0H. BCF PORTA,4 ;Poni RA4 a livello basso. GOTO CICLO ;Vai a CICLO. 19°) Simulare una porta EXOR con ingressi le linee RA0 ed RA1 ed uscita la linea RA (si supponga che RA0 ed RA1 siano già impostate in ingresso ed RA4 in uscita). CICLO: BTFSS PORTA,0 ;Se RA0 è a livello basso GOTO RA0L ;allora vai a RA0L. RA0H: BTFSS PORTA,1 ;Se RA1 è a livello basso GOTO RA1L ;allora vai a RA1L. RA1H: BCF PORTA,4 ;Poni RA4 a livello basso. GOTO CICLO ;Vai a CICLO. RA0L: BTFSS PORTA,1 ;Se RA0 è a livello basso GOTO RA1H ;allora vai a RA1H. RA1L: BSF PORTA,4 ;Poni RA4 a livello alto. GOTO CICLO ;Vai a CICLO. 20°) Simulare una porta NAND con ingressi le linee RA0 ed RA1 ed uscita la linea RA (si supponga che RA0 ed RA1 siano già impostate in ingresso ed RA4 in uscita). CICLO: BTFSS PORTA,0 ;Se RA0 è a livello basso GOTO HIGH ;allora vai a HIGH. BTFSS PORTA,1 ;Se RA1 è a livello basso GOTO HIGH ;allora vai a HIGH. LOW: BCF PORTA,4 ;Poni RA4 a livello basso. GOTO CICLO ;Vai a CICLO. HIGH: BSF PORTA,4 ;Poni RA4 a livello alto. GOTO CICLO ;Vai a CICLO. 21°) Simulare una porta NOR con ingressi le linee RA0 ed RA1 ed uscita la linea RA4 (si supponga che RA0 ed RA1 siano già impostate in ingresso ed RA4 in uscita). CICLO: BTFSC PORTA,0 ;Se RA0 è a livello alto GOTO LOW ;allora vai a LOW. BTFSC PORTA,1 ;Se RA1 è a livello alto GOTO LOW ;allora vai a HIGH. HIGH: BSF PORTA,4 ;Poni RA4 a livello alto. GOTO CICLO ;Vai a CICLO. LOW: BCF PORTA,4 ;Poni RA4 a livello basso. GOTO CICLO ;Vai a CICLO.
22°) Supponendo che il tempo d'esecuzione di ogni istruzione del linguaggio macchina del PIC16F84 sia pari ad un microsecondo, scrivere un programma in linguaggio assemblativo per produrre sulla linea RA4 un segnale periodico con forma d'onda quadra e frequenza pari a 125 Khz. BSF STATUS,RP0;Seleziona TRISA. BCF TRISA,4 ;Imposta RA4 in uscita. BCF STATUS,RP0;Seleziona PORTA. CICLO: BSF PORTA,4 ;Poni RA4 a livello alto. BSF PORTA,4 ;Poni RA4 a livello alto. BSF PORTA,4 ;Poni RA4 a livello alto. BSF PORTA,4 ;Poni RA4 a livello alto. BCF PORTA,4 ;Poni RA4 a livello basso. BCF PORTA,4 ;Poni RA4 a livello basso. BCF PORTA,4 ;Poni RA4 a livello basso. GOTO CICLO ;Ripeti il ciclo. ;Poiché il tempo d'esecuzione di ogni istruzione è un micro- ;secondo, il tempo necessario ad eseguire il corpo di questo ;ciclo è uguale a 8 microsecondi. Nella prima metà di questo ;periodo il segnale sulla linea RA4 è a livello alto, nella ;seconda metà è a livello basso. Perciò, sulla linea RA4 viene ;generato un segnale periodico con forma d'onda quadra e ;frequenza pari a 125 Khz. 23°) Scrivere un programma in linguaggio assemblativo che faccia funzionare il PIC16F come cinque porte NOT con ingressi le linee RA0, RA1, RA2, RA3 ed RA4 ed uscite le linee RB0, RB1, RB2, RB3 ed RB4 rispettivamente (la prima con ingresso RA0 ed uscita RB0, la seconda con ingresso RA1 ed uscita RB1 e così via). BSF STATUS,RP0 ;Seleziona TRISA e TRISB. MOVLW 11111B ;Imposta tutte le linee MOVWF TRISA ;della porta A in ingresso. MOVLW 00000000B ;Imposta tutte le linee MOVWF TRISB ;della porta B in uscita. BCF STATUS,RP0 ;Seleziona PORTA e PORTB. CICLO: MOVF PORTA,W ;W = PORTA. XORLW 11111111B ;W = NOT PORTA. MOVWF PORTB ;PORTB = W = NOT PORTA. GOTO CICLO ;Ripeti il ciclo. 24°) Scrivere un programma in linguaggio assemblativo che faccia funzionare il PIC16F come quattro porte OR a due ingressi: la prima porta con ingressi le linee RA0 ed RB0 e con uscita la linea RB4, la seconda porta con ingressi RA1 ed RB1 e con uscita RB5, la terza porta con ingressi RA2 ed RB2 e con uscita RB6, la quarta porta con ingressi RA3 ed RB3 e con uscita RB7. BSF STATUS,RP0 ;Seleziona TRISA e TRISB. MOVLW 11111B ;Imposta tutte le linee MOVWF TRISA ;della porta A in ingresso. MOVLW 00001111B ;Imposta RB0..3 in ingresso.
MOVLW 00111111B ;Copia in Reg[20h] il MOVWF 20H ;codice a 7 segmenti di 0. MOVLW 00000110B ;Copia in Reg[21h] il MOVWF 21H ;codice a 7 segmenti di 1. MOVLW 01011011B ;Copia in Reg[22h] il MOVWF 22H ;codice a 7 segmenti di 2. MOVLW 01001111B ;Copia in Reg[23h] il MOVWF 23H ;codice a 7 segmenti di 3. MOVLW 01100110B ;Copia in Reg[24h] il MOVWF 24H ;codice a 7 segmenti di 4. MOVLW 01101101B ;Copia in Reg[25h] il MOVWF 25H ;codice a 7 segmenti di 5. MOVLW 01111101B ;Copia in Reg[26h] il MOVWF 26H ;codice a 7 segmenti di 6. MOVLW 00000111B ;Copia in Reg[27h] il MOVWF 27H ;codice a 7 segmenti di 7. MOVLW 01111111B ;Copia in Reg[28h] il MOVWF 28H ;codice a 7 segmenti di 8. MOVLW 01101111B ;Copia in Reg[29h] il MOVWF 29H ;codice a 7 segmenti di 9. CICLO: MOVF PORTA,W ;W = contenuto della porta A ANDLW 00001111B ;W = codice BCD in ingresso. ADDLW 20H ;FSR = 20h + codice BCD. MOVWF FSR MOVF INDF,W ;W = [20h + codice BCD]. MOVWF PORTB ;PORTB = W. GOTO CICLO ;Ripeti il ciclo.