Duda: byte ptr (8086)

Duda: byte ptr (8086)

de Gustavo Chalela Nuñez -
Número de respuestas: 1

Hola, tengo una duda respecto a la utilización de esta directiva.
el elemento que va dps de "byte ptr" es lo único que es alcanzado por la directiva ó todo lo que viene dps también ? (en la misma instrucción obvio).

O sea, se puede escribir: MOV byte ptr SI, [AX] para intentar mover solo un byte desde la dirección que apunta AX a la parte baja de SI. Está bien esto?

Y si fuera un CMP: ¿estaría bien escribir: CMP byte ptr [BP+2], DI con la intención de comparar el byte menos significativo de BP +2 con el menos significativo de DI? 

En caso que esté mal lo que pregunto, cuál forma sería adecuada para hacer lo que quiero hacer?

Muchas gracias!

En respuesta a Gustavo Chalela Nuñez

Re: Duda: byte ptr (8086)

de Gustavo Brown -

No se puede hacer lo que planteas. La directiva byte por y word ptr lo que hacen es desambiguar una instrucción que por sus parámetros no se sabe si debe operar con bytes o words. 

En tus ejemplos no había ambigüedad porque DI y SI son registros de 16 bits por lo que la instrucción va a operar con palabras. 

El caso de uso de byte ptr y word ptr es por ejemplo cuando la instrucción tiene un operando a memoria y otro que es un inmediato. Si hay 2 variantes de la instrucción, una que opera a nivel de byte y otra a nivel de palabra entonces debés desambiguar indicando si es byte ptr o word ptr. 

Otro ejemplo sería por ejemplo INC con operando a memoria. 

En tu ejemplo si queres trabajar a nivel de byte tenes que copiar el registro SI o DI a AX o BX o CX o DX y luego operar con la parte baja del registro utilizado(por ejemplo AL)

Saludos,

    Gustavo