Macros de l'Easy Code Masm (tots els projectes)
Algunes macros d'utilitat estan incloses internament a l'Easy Code. Els seus noms són acolorits com a paraules reservades de l'Easy Code (vegeu el menú Configuració). Com que formen part de l'aplicació, podeu utilitzar-les quan vulgueu al llarg de tot el codi. Aquestes macros tenen la següent sintaxi:
Color byRed, byGreen, byBlue
Els arguments byRed, byGreen, byBlue han de ser valors de 8 bits (Byte). Torna un color RGB (un valor de 32 bits o COLORREF) al registre Eax.
Exemple:
Color 0AH, 0BH, 0CH
Torna 000C0B0AH al registre Eax
HiByte
wValue
L'argument wValue ha de ser un valor de 16 bits (Word). Torna el byte alt (valor de 8 bits o Byte) de wValue al registre Al.
Exemple:
HiByte 0C0AH
Torna 0CH al registre Al
HiWord
dwValue
L'argument dwValue ha de ser un valor de 32 bits (DWord). Torna la paraula alta (valor de 16 bits o Word) de dwValue al registre Ax.
Exemple:
HiWord 000C000AH
Torna 000CH al registre Ax
LoByte
wValue
L'argument wValue ha de ser un valor de 16 bits (Word). Torna el byte baix (valor de 8 bits o Byte) de wValue al registre Al.
Exemple:
LoByte 0C0AH
Torna 0AH al registre Al
LoWord
dwValue
L'argument dwValue ha de ser un valor de 32 bits (DWord). Torna la paraula baixa (valor de 16 bits o Word) de dwValue al registre Ax.
Exemple:
LoWord 000C000AH
Torna 000AH al registre Ax
MakeWord
byLow,
byHigh
Els arguments byLow i byHigh han de ser valors de 8 bits (Byte). Torna el valor resultant de 16 bits (Word) al registre Ax.
Exemple:
MakeWord 0CH, 0AH
Torna 0A0CH al registre Ax
MakeLong
wLow,
wHigh
Els arguments wLow i wHigh han de ser valors de 16 bits (Word).Torna la doble paraula resultant (DWord) al registre Eax.
Exemple:
MakeLong 0A0BH, 0C0DH
Torna 0C0D0A0BH al registre Eax
Move
dwValue1,
dwValue2
Els arguments dwValue1 i dwValue2 han de ser valors de 32 bits (DWord), variables o posicions de memòria.
Exemple:
Move dwMemPos1, dwMemPos2
Mou el valor de la variable o posició de memòria indicada per dwMemPos2 a la variable o posició de memòria indicada per dwMemPos1.
Aquesta macro no torna cap valor.
Return
dwValue
L'argument dwValue ha de ser un valor de 32 bits (DWord). Carrega el valor dwValue al regsitre Eax i torna d'un procediment.
Exemple:
Return TRUE
Carrega el registre Eax amb el valor TRUE (1) i torna.
Text
Name,
"quoted_text"
L'argument Name ha de ser un nom vàlid que identifiqui la cadena indicada pel segon argument, "quoted_text", que pot ser qualsevol text entre cometes.
Exemple:
Text szBuffer, "Test string"
Després d'executar-se aquesta sentència tindreu un buffer amb la cadena de text especificada (acabada en zero). Recordeu que el valor tornat per Text NO és l'adreça efectiva de la cadena, per tant, haureu d'utilitzar l'operador Addr per tal d'obtenir-la. Per exemple:
Text, szTest, "Test string"
Invoke lstrlen, Addr szTest
Torna 11 (la lllargada de la cadena) al registre Eax
TextW
Name,
"quoted_text"
L'argument Name ha de ser un nom vàlid que identifiqui la cadena indicada pel segon argument, "quoted_text", que pot ser qualsevol text entre cometes.
Exemple:
TextW szBufferW, "Test string"
Després d'executar-se aquesta sentència tindreu un buffer amb la cadena de text especificada (acabada en zero) en format Unicode. Recordeu que el valor tornat per TextW NO és l'adreça efectiva de la cadena, per tant, haureu d'utilitzar l'operador Addr per tal d'obtenir-la. Per exemple:
TextW, szTestW, "Test string"
Invoke lstrlenW, Addr szTestW
Torna 11 (la lllargada de la cadena) al registre Eax
(Programada per Héctor A. Medina)
TextAddr ("quoted_text")
L'argument "quoted_text" pot ser qualsevol text entre cometes.
Exemple:
TextAddr ("Test string")
Després d'executar-se aquesta sentència tindreu l'adreça efectiva d'una cadena de text acabada en zero. Podeu utilitzar-la per passar-la com a argument a qualsevol rutina o funció de l'API. Recordeu que el valor tornat per TextAddr és l'adreça efectiva, per tant NO heu d'utilitzar l'operador Addr. Per exemple:
Invoke lstrlen, TextAddr("Test string")
Torna 11 (la lllargada de la cadena) al registre Eax
L'argument "quoted_text" pot ser qualsevol text entre cometes.
Exemple:
TextAddrW ("Test string")
Després d'executar-se aquesta sentència tindreu l'adreça efectiva d'una cadena de text Unicode acabada en zero. Podeu utilitzar-la per passar-la com a argument a qualsevol rutina o funció de l'API per a text Unicode. Recordeu que el valor tornat per TextAddrW és l'adreça efectiva, per tant NO heu d'utilitzar l'operador Addr. Per exemple:
Invoke lstrlenW, TextAddrW("Test string")
Torna 11 (la lllargada, en caràcters, de la cadena) al registre Eax
(Programada per Héctor A. Medina)
OBSERVACIONS:
Recordeu que no cal afegir cap caràcter NULL
de final de cadena atès que ja l'afageixen les macros:
Text,
TextW,
TextAddr
i TextAddrW.
IMPORTANT:
Si no heu de fer servir cap d'aquestes macros (incloses per
defecte), o els seus noms crean algun conflicte amb alguna variable,
procediment o macro del projecte, podeu treure-les
desmarcant l'opció corresponenet a les Propietats del
projecte.