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.

Usiamo le variabili per dichiarare i due numeri e quindi procediamo con i registri per svolgere la funzione. Un esempio concreto di quanto i linguaggi a basso livello siano “scomodi” per effettuare operazioni che con linguaggi ad alto livello faremmo in una sola riga di codice. Qui dobbiamo ricordarci di aggiungere la sezione .STACK per consentire la inizializzazione delle variabili.

; esempio 03
; somma   9 + 1
.MODEL small ;non rimuovere
.DATA
    ADDENDO1  dw 9D
    ADDENDO2  dw 1D
    SOMMA       dw ?    

.CODE
.STARTUP

MOV BX, ADDENDO1    ; sposto il primo numero in Bx parte bassa
ADD BX, ADDENDO2    ; ci sommo il secondo numero
MOV SOMMA, BX         ; sposto nella variabile

.EXIT
END

Lo stesso esempio con SASM è riportato nella seguente schermata. Apriamo la finestra “Lancia debugger”->”Visualizza memoria”. Digitiamo a mano il nome delle variabili che vogliamo monitorare. I valori li abbiamo inseriti in esadecimale, mentre il valore indefinito ? non è ufficialmente supportato. Come si può vedere i valori gestiti attraverso le variabili possono essere passati solo mediante il loro indirizzo [var], che è teoricamente più corretto del concetto di variabile in FASM. Non esistono variabili, ma solo porzioni di memoria dedicate a contenere valori, mentre il valore fisico è gestito solo ed unicamente dai registri.

frammento di codice asm

Ultima modifica 2 Maggio 2022