Un esercizio semplice per affrontare l’inserimento da tastiera, questa volta sfruttando delle funzioni macro comprese nell’EMU8086
Asm 16bit
Esempio 12: somma di due numeri letti in input
Vista la stampa, vediamo come si fa la fase di input da tastiera. Anche qui, c’è una combinazione fissa di valore/registro da impostare per “richiedere” alla CPU di procedere ad una operazione specifica di lettura.
Esempio 11: esercizio stampa Hello World a singoli caratteri
Visto come stampare un carattere o numero, passiamo ad una versione più complessa di stampa, con una intera parola. In questo caso stampiamo il più classico degli esempi “Hello World”
Esempio 10: stampa un numero o carattere
Vediamo come stampare un numero o un carattere a video. Certamente non è così semplice e banale come i ben noti cin>> e cout<<, ma utilizza delle istruzioni precise forzando una combinazione valore/registro specifico per “chiedere” alla cpu di procedere all’operazione di stampa.
Esempio 08: esercizio complemento a 2 con NOT e INC
Un esempio di utilizzo di complemento a due per effettuare la sottrazione da due parole, in questo caso proposto di 8 bit. Sfruttiamo le funzioni NOT ed INC.
Esempio 07: scambiare variabili con XCHG
L’istruzione XCGH è molto utili per scambiare dati tra variabili. L’unica accortezza è che deve sempre passare da registri per effettuare l’operazione.
Esempio 06: esercizio scambiare due parole
Un semplice esercizio che fa lo “swap”, scambia due variabili tra loro. L’esercizio è un classico tra quelli fatti con linguaggi ad alto livello. Vediamo come si complica con la gestione diretta attraverso i registri della nostra CPU.
Esempio 05: esercizio equazione
Un esempio che raccoglie i comandi visti fino ad ora. Proviamo a risolvere una semplice equazione con somme, sottrazioni e prodotti realizzati mediante somme multiple.
Esempio 04: differenza con SUB
In questo post, vediamo l’uso del comando SUB per effettuare la differenza in assembly su architetture x86 a16 bit.
Esempio 03: somma di due numeri con ADD
Un semplice esempio per capire come si esegue la somma di due numeri. L’esempio aiuta a capire l’opCode ADD ma anche come l’assembly ragioni a basso livello tra assegnazione e somma.