assembly x86-16 bit-shift

assembly - Diferencia entre SHL y SAL en 80x86



x86-16 bit-shift (7)

Aprendí a trabajar con el ensamblador 80x86, por lo que en la operación de cambio de bits, me enfrenté a un problema con el uso de SAL y SHL. I significa la diferencia entre líneas de código de la siguiente manera:

MOV X, 0AAH SAL X, 4 MOV X, 0AAH SHL X, 4

¿Cuándo deberíamos usar SHL y cuándo usar SAL? ¿Cuál es la diferencia de ellos?

Gracias por tu atención :)


No hay diferencia, aparte de Intel y AMD que desean depreciar el SAL duplicado.


funcionan igual, ya que un cambio aritmético es el mismo que un cambio a nivel de bit cuando está a la izquierda (aumentando). sar, por otro lado, será diferente de shr si se establece el bit de signo.


Según esto , son lo mismo:

Las instrucciones shift shift left (SAL) y shift left (SHL) realizan la misma operación; desplazan los bits en el operando de destino hacia la izquierda (hacia ubicaciones de bit más significativas). Para cada recuento de turnos, el bit más significativo del operando de destino se desplaza al indicador CF y se borra el bit menos significativo (consulte la Figura 7-7 en el Manual del desarrollador de software Intel®64 e IA-32 Architectures, Volumen 1). )

Ambos probablemente se incluyeron solo para completar, ya que hay una distinción para los cambios a la derecha.


Son lo mismo si usa la dirección izquierda.



en realidad ambos son lo mismo ..! pero SAL Se usa cuando se pretende la multiplicación numérica EJEMPLO DE SAL:

Multiply AX by 8 MOV CL, 3 SAL AX, CL

AMBOS SON MAYORMENTE TRABAJOS IGUALES Y TIENEN EL MISMO CÓDIGO DE LA MÁQUINA


shl y sal son lo mismo. Tienen el mismo código de máquina.
shr y sar NO son lo mismo. Tienen casi el mismo código de máquina. (pero no)
Mira esto