Matteo34
Nuovo Utente
- Messaggi
- 104
- Reazioni
- 3
- Punteggio
- 45
Non capisco davvero a cosa serva la direttiva ASSUME(MASM 6.0), da quel che ho capito server per associare un determinato registro di segmento ha un segmento logico, ma in che senso?
Cioè, il seguente codice che cosa comporta:
Se ho capito bene definisco dei segmenti logici(per far si che sia tutto più comprensibile e ordinato per l'uomo), e in base al registro di segmento alla quale li associo, il contenuto verrà allocato nei 4 segmenti di memoria attiva;
Mi spiego meglio
Quindi l'assume in questo caso fa capire all'assemblatore dove verrà allocato il contenuto de segmenti logici?
è soprattutto, che è sta roba!!!?!?!?!
Perchè sto memorizzando in ds il contenuto di data, che cosa contiene data, e perchè lo faccio passando per ax e non direttamente in ds?
Ho davvero bisogno di aiuto sono in totale confusione!!!!!!
Cioè, il seguente codice che cosa comporta:
Codice:
; Asembly code MASM
; x86-16
stack SEGMENT PARA STACK ;segmento logico stack
db 2 dup("STACK")
stack ENDS
data SEGMENT PARA PUBLIC ;segmento logico data
var1 dw 200
var2 dw 100
data ENDS
code SEGEMENT PARA PUBLIC ;segmento logico code
ASSUME ss : stack, ds : data, cs : code ;che diavolo succede qui?
_start:
mov ax, data
mov ds, ax ;che è sta roba?
mov ax, var1
add ax, var2
;ritorno del controllo a MS-DOS
mov al, 1
mov ah, 04ch
int 21h
code ENDS
END _start
Mi spiego meglio
Codice:
stack SEGMENT PARA STACK ;segmento logico stack
db 2 dup("STACK")
stack END
ASSUME ss : stack
è soprattutto, che è sta roba!!!?!?!?!
Codice:
mov ax, data
mov ds, ax ;che è sta roba?
Ho davvero bisogno di aiuto sono in totale confusione!!!!!!