Linguaggio Assembly?

Salve a tutti,sono uno studente dell'industriale informatico e stiamo per trattare Assembly;il prof più di una volta ci ha detto che è molto difficile,ecco vorrei sapere in cosa consiste questo linguaggio,a cosa serve per un informatico conoscerlo e se è veramente così difficile...Grazie a tutti 10 punti al migliore

2 risposte

Classificazione
  • 1 anno fa
    Risposta preferita

    In realtà probabilmente è sbagliato dire che è molto difficile, è un linguaggio e lo impari come impari gli altri linguaggi, fai le stesse cose che fai col C. Ci sono anche molte meno istruzioni da imparare.

    Però è molto meno intuitivo di un linguaggio ad alto livello (quelli in cui praticamente scrivi in inglese e linguaggio matematico), è più facile fare degli errori e soprattutto è molto più lento, istruzioni che in C scrivi in una riga in Assembly diventano cinque, dieci, cinquanta righe. E cambia per ogni processore.

    Ti faccio un esempio banale, per fare una somma

    in C

    n = 5+5;

    in Assembly 8086

    MOV AH, 5

    MOV AL, 5

    ADD AH, AL

    Cosa fai qui? Sposti 5 in AH che è un registro, o meglio è la metà di un registro AX chiamato accumulatore. Poi 5 in AL che è l'altra metà. Infine sommi.

    Ovviamente più un istruzione diventa complicata e più l'assembly diventa complicato.

    La potenza di un numero in C la fai con una istruzione, in Assembly diventa un programmino di sette otto righe.Inoltre ti devi occupare di un sacco di cose, beh, in realtà non tante di più di quelle di cui ti devi occupare in C. Ma molte di più di quante ti debba preoccupare in Java per esempio. Questo è il classico Hello World in Assembly 8086

    name "hi"

    org 100h

    jmp start

    msg: db "Hello, World!", 0Dh,0Ah, 24h

    start: mov dx, msg

            mov ah, 09h

            int 21h

     

            mov ah, 0 

            int 16h

     

    ret

    Comunque, se vuoi provare il compilatore GCC può restituire il codice assembly di un programma scritto in C, così vedi le differenze.

    A cosa serve conoscerlo? In realtà a poco, è abbastanza difficile che un giorno o l'altro ti ritrovi a programmare in Assembly, difficile ma non impossibile, l'assembly si usa ancora in certi campi. Però sono arrivati linguaggi molto più immediati, più veloci che danno meno problemi.

    Però A. conoscere le cose è sempre meglio di non conoscerle e B. è utile per capire come lavora un computer, cosa di cui ci si dimentica spesso quando si programma ad alto livello. Che tu scriva programmi in C, in Java, in Python, in Caml o C# alla fine della fiera, il computer lavora sempre nello stesso modo e l'Assembly te lo fa capire.

  • 1 anno fa

    Non so quali linguaggi tu abbia studiato, ma se conosci per esempio c, assembly è il linguaggio nel quale viene tradotto il tuo codice quando compili un programma. Assembly è comunque un termine abbastanza vago, dato che ne esistono molti tipi (intel, arm, ...). Di base però, in un programma assembly, scrivi i comandi che scriveresti in un linguaggio di livello più alto utilizzando direttamente i registri (memorie molto veloci presenti nel processore). Per esempio se tu volessi scrivere (in c per esempio):

    int a=1;

    int b=2;

    int c=a+b;

    In assembly(arm) scriveresti:

    mov r0, 1

    mov r1, 2

    add r2, r0, r1

    Ciò significa che metterai nei registri 0 e 1 i valori 1 e 2 e che metterai nel registro 2 la somma dei registri precedenti. Ovviamente questo è un esempio molto semplice, il codice diventa più complesso nel caso per esempio di un ciclo for/while, di una funzione, ... 

    Per un informatico è sicuramente utile conoscerlo perché ti fa capire effettivamente ogni volta che scrivi un comando, come sarà poi tradotto e trattato dal computer. Utilizzando assembly hai accesso diretto alla memoria e sta a te gestirla, quindi impari a ragionare a un livello molto più basico. Bisogna comunque dire che in pochi programmano in assembly, un esempio di applicazione sono la gestione delle interruzioni in c.

Altre domande? Fai una domanda e ottieni le risposte che cerchi.