1 / 10

Variabili

Variabili. in un programma Assembler. Dichiarazione. Una variabile indica una locazione di memoria. In assembler troviamo due tipi di variabili: BYTE e WORD. Dichiarazione: <nome> DB <valore> <nome> DW <valore> Dove: DB significa D efine B yte. DW significa D efine W ord. <nome>

Télécharger la présentation

Variabili

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Variabili in un programma Assembler

  2. Dichiarazione • Una variabile indica una locazione di memoria. • In assembler troviamo due tipi di variabili: BYTE e WORD. • Dichiarazione: • <nome> DB <valore> • <nome> DW <valore> • Dove: • DB significa Define Byte. • DW significa Define Word. • <nome> • è l’identificatore della variabile che è formato da lettere o cifre e deve iniziare con una lettera. • è possibile dichiarare variabili senza specificare il nome • <valore> • è un valore numerico • il simbolo "?" significa che la variabile non è inizializzata

  3. Esempi • var1 DB 0 ;1 byte con valore 0 • var2 DB 41h ;1 byte con valore 65 • var3 DB ‘A’ ;idem • var4 DB ? ;1 byte non inizializzato • var5 DB 10 DUP(0) ;10 byte inizializzati a 0 • var6 DB “ciao” ;4 byte con i codici ascii … • L’area di memoria che contiene i dati NON deve essere eseguita come codice: • o definire i dati dopo l’ultima istruzione • o mettere una istruzione di salto per non “eseguire i dati” • Nel modello COM area Dati e area Codice sono nello stesso segmento (CS = DS)

  4. Esempio 1 ;Esempio di utilizzo variabili ;Visulizza n_cicli asterischi ;dove n_cicli e' una variabile org 100h mov ch,n_cicli ;inizializzazione contatore mov dl,'*' mov ah,2 STAMPA: int 21h ;visualizzo il carattere dec ch ;decremento contatore jnz STAMPA ;torna a stampare se il contatore non è 0 FINE: int 20h ret n_cicli DB 5 ;numero di asterischi da stampare

  5. Esempio 2 ;Esempio di utilizzo variabili ;Visulizza n_cicli volte il carattere car ;dove n_cicli e' una variabile e car e' un'altra variabile org 100h mov ch,n_cicli ;inizializzazione contatore mov dl,car mov ah,2 STAMPA: int 21h ;visualizzo il carattere dec ch ;decremento contatore jnz STAMPA ;torna a stampare se il contatore non è 0 FINE: int 20h ret n_cicli DB 5 ;numero di asterischi da stampare car DB 'x'

  6. Esempio 3 ;Esempio di utilizzo variabili ;Visulizza n_cicli asterischi ;dove n_cicli e' una variabile org 100h jmp INIZIO n_cicli DB 5 ;numero di asterischi da stampare INIZIO: mov ch,n_cicli ;inizializzazione contatore mov dl,'*' mov ah,2 STAMPA: int 21h ;visualizzo il carattere dec ch ;decremento contatore jnz STAMPA ;torna a stampare se il contatore non è 0 FINE: int 20h ret

  7. Variabili e locazioni • L’assemblatore converte automaticamente le variabili con il loro indirizzo (offset dell’indirizzo) • Nei file .COM i registri di segmento CS e DS (Data Segment) sono inizializzati allo stesso valore. • L’assebler non è case sensitive (non distingue fra lettere maiuscole e minuscole per i nomi delle variabili) • L’emulatore permette di visualizzare una finestra di ispezione variabili

  8. Costanti • Se i valori non devono essere modificati dopo la dichiarazione è possibile utilizzare le costanti. • Dichiarazione: • <nome> EQU <valore> • L’uso è analogo a quello delle variabili.

  9. Indirizzo di una variabile • L’istruzione LEA permette di caricare in una variabile l’indirizzo di una variabile. • Sintassi: • LEA <registro>,<variabile> • Esempio: lea dx, messaggio … messaggio db "Saluti$” • L’istruzione equivale a: • MOV <registro>,offset <variabile>

  10. Visualizzazione di una stringa • E’ possibile definire una stringa in memoria e visualizzarla con una sola chiamata a una servizio. • L’ultimo carattere deve essere $ (terminatore) • Servizio 9 dell’interrupt 21 • Esempio lea dx, messaggio ; carica in dx l'indirizzo di messaggio mov ah, 9 ; stampa tutto fino al carattere $ int 21h FINE: int 20h ret messaggio db "Saluti$"

More Related