JavascriptProva

martedì 22 maggio 2012

Indirizzamento immediato e diretto

Può darsi che mi sbaglio, ma...

Creare un programmino con due metodi di indirizzamento, immediato e diretto.

text SEGMENT

inizio: JMP     Procedura
Var1 DW 4142H


Procedura PROC   
 MOV AH,00H
 MOV AL,03H
 INT 10H


        MOV     AX,5152H
        MOV     BX,Var1
       
        MOV AH,00H
        INT 16H

        MOV AH,4CH
        INT 21H

Procedura ENDP
text ENDS
END inizio
Simboli:
Symbols:

                N a m e                 Type     Value    Attr

Var1 . . . . . . . . . . . . . . Word  0002   text 
inizio . . . . . . . . . . . . . L Near  0000   text 


Traduzione delle istruzioni nel debug:
1802:000A B85251        MOV     AX,5152
1802:000D 2E            CS:
1802:000E 8B1E0200      MOV     BX,[0002]
Conclusione: Quando l'operando di un'istruzione MOV è un numero, esso viene preso come tale; quando l'operando è il nome di una variabile, viene preso il contenuto dell'indirizzo rappresentato dal nome della variabile.. E se usassi il nome di una LABEL piuttosto che quello di una variabile?
text SEGMENT

inizio: JMP     Procedura
Var1 DW 4142H


Procedura PROC   
 MOV AH,00H
 MOV AL,03H
 INT 10H


xxx00:  MOV     AX,5152H
        MOV     BX,xxx00
       
        MOV AH,00H
        INT 16H

        MOV AH,4CH
        INT 21H

Procedura ENDP
text ENDS
END inizio
Ecco:
1802:000A B85251        MOV     AX,5152
1802:000D BB0A00        MOV     BX,000A
Bene: Quando nell'istruzione MOV l'operando è un'etichetta, viene preso il contenuto della locazione indicata dall'etichetta solo se questa è un nome di variabile, e non se è un'etichetta "coi due punti" Nel primo caso si opera un indirizzamento diretto, mentre nel secondo caso si opera un indirizzamento immediato come nel caso in cui l'operando sia un numero: infatti viene usato il numero rappresentato dall'etichetta, che è il suo indirizzo.

Almeno credo...!

Nessun commento:

Posta un commento