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 inizioSimboli:
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 inizioEcco:
1802:000A B85251 MOV AX,5152 1802:000D BB0A00 MOV BX,000ABene: 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