Lunedì, 23 Ottobre 2017 16:05

Esempio 03: somma di due numeri con ADD

Scritto da

Un semplice esempio che esegue la somma di due interi.

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.

Letto 304 volte
Prof. Alfredo Centinaro

Docente di "Scienze e tecnologie informatiche", "Tecnologie e progettazione di sistemi informatici", "Sistemi e Reti" presso IIS Alessandrini-Marino (Teramo), consulente e sviluppatore web. Ha collaborato per anni come sviluppatore presso MHT - Treviso, assistente Sistemi ed elaborazione dell'informazione in UniTE Corso di laurea in Scienze del turismo culturale, tutor presso Telecom Italia Learning Services (L'Aquila)

Joomla SEF URLs by Artio