|
 |
Le
PseudoOperazioni di MASM |
SCHEDA n° 02 [
15
di 26] |
 | La pseudoOperazione
THIS è simile alla precedente LABEL
se usata insieme alle EQU o =;
permette di creare un simbolo (etichetta) di valore uguale all'indirizzo
della locazione corrente, cioè quella in cui viene scritta la
pseudoistruzione ; il tipo della nuova etichetta è ancora BYTE, WORD,
DWORD, QWORD,
TBYTE, NEAR,
FAR. Nell'esempio si vede come
caricare in un registro l'indirizzo corrente della locazione Main:
8 0103
MAIN:
9 = 0103
sonoQui EQU THIS WORD
10 0103 8D 36 0103 R
LEA SI,sonoQui |
|
 |
|
 | L'Operatore
PTR svolge una funzione simile
alla pseudoOperazione LABEL non di uso, in quanto permette di accedere ad una variabile in modo diverso da quello con cui è stata definita; la variabile alla quale si riferisce l'istruzione che la utilizza cambia dunque temporaneamente tipo; i nuovi tipi possono essere
BYTE, WORD,
DWORD, QWORD,
TBYTE, (ma anche NEAR,
FAR, se riferiti a etichette di procedura).
|
 | L'esempio mostra come sia possibile accedere in
modo BYTE
alla parte bassa o alla parte alta della variabile RamVideo, definita come word
(DW), o in modo WORD (caricando anche
il byte successivo) alla variabile ATTRIB, definita
come byte (DB):
RamVideo DW 0B800H
ATTRIB DB 0FH
DB 55H
|
MOV
AL,byte PTR CS:[RamVideo] ;AL=00H
MOV AH,byte PTR CS:[RamVideo+1] ;AH=B8H
MOV AX,CS:[RamVideo]
;AX=B800H
MOV AX,word PTR CS:[ATTRIB] ;AX=550FH
MOV AL,CS:[ATTRIB]
;AL=0FH
MOV AH,CS:[ATTRIB+1]
;AH=55H
|
Possiamo notare che se tentiamo
di accedere alla variabile in modo diverso da quello definito per
essa, cioè senza premettere la byte PTR, viene
segnalato errore (warning A4031: Operand types must match).
In realtà l'errore è warning perchè le istruzioni in nero senza
byte PTR fanno comunque quello che ci si aspetta, cioè le prime
2 caricano un byte ciascuna e la rimanente carica i 2 bytes contenuti in
ATTRIB e ATTRIB+1. |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|