PDA

Visualizza la versione completa : Assembly 8086: allocare dati in aree di memoria usando DB


giopiaz
07-10-2009, 23:35
Salve a tutti..
Sono nuovo di questo forum e spero di aver scelto il posto giusto per postare questo quesito di carattere didattico sull'assembly 8086.
La questione č semplice
Esiste un modo per allocare dati in specifiche aree di memoria direttamente in fase di compilazione (e quindi senza usare delle MOV)?
Cioč se scrivo un programma .COM (unico segmento) con area codice che inizia all'OFFSET 0100H posso dire al compilatore di allocare un vettore di byte dalla locazione con OFSET 0200H?

Ripeto la questione non č di carattere pratico (potendo spostare i dati a run time) ma squisitamente di carattere didattico (cioč sto imparando)

Grazie a tutti

oregon
07-10-2009, 23:43
Cosa usi per ottenere il codice ?

giopiaz
07-10-2009, 23:59
Attualmente uso EMU8086 ma ho provato anche un po TASM...

oregon
08-10-2009, 00:06
Con Emu8086 usi la direttiva

ORG 200h

seguita dall'allocazione dello spazio, ad esempio per un vettore di 100 char

vettore DB 100 DUP(0)

Con TASM č molto simile ...

Devi leggere e studiare la documentazione degli strumenti che usi ... c'e' scritto tutto ...

giopiaz
08-10-2009, 00:16
Credo di averlo fatto per un bel po prima di decidermi a postare..
cmq per essere piu chiari tu pensi che con org il seguente programma dovrebbe funzionare??

.MODEL SMALL

org 100h
start:
;inizio programma

mov ax,@data
mov ds,ax

mov si,0400H
mov di,0500H
mov cx,05H
again:
mov al,[si]
mov [di],al
loop again

;termina l'esecuzione del programma
mov ah,4ch
int 21h

org 0400H
DB 01h,02h,03h,04h,05h
end start

giopiaz
08-10-2009, 00:17
ovviamente c'e' un errore nelle prime due istruzioni (ho modificato un vecchio file senza riadattarlo), ma il concetto espresso č quello nelle righe successive...

Loading