Diferencia entre SHL y SAL en 80x86


He aprendido a trabajar con 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 como sigue :

MOV X, 0AAH
SAL X, 4

MOV X, 0AAH
SHL X, 4

¿Cuándo debemos usar SHL y cuándo usar SAL? ¿Cuál es la diferencia?

Author: ROMANIA_engineer, 2011-12-04

7 answers

De acuerdo con este , son los mismos:

El desplazamiento aritmético a la izquierda (SAL) y el desplazamiento lógico a la izquierda (SHL) instrucciones realizan la misma operación; desplazan los bits en el operando de destino a la izquierda (hacia un bit más significativo ubicación). Para cada cuenta del cambio, el pedacito más significativo del el operando de destino se desplaza a la bandera CF, y el menos se borra un bit significativo (consulte la Figura 7-7 en Intel®64 e IA-32 Software de Arquitectura Manual del desarrollador, Volumen 1).

Ambos fueron probablemente incluidos solo para completar, ya que es una distinción para los desplazamientos a la derecha.

 28
Author: Mysticial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-04 05:09:49

No hay diferencia aparte de Intel y AMD que quieren desaprobar el SAL duplicado.

 4
Author: Alexey Frunze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-04 05:10:31

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

 4
Author: ARISTOS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-14 07:34:42

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

 1
Author: jcomeau_ictx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-04 05:11:26

Son los mismos si usas la dirección izquierda.

 1
Author: That coworker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-04 08:14:09

En realidad ambos son iguales ..! pero SAL Se utiliza cuando se pretende la multiplicación numérica EJEMPLO SAL:

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

AMBOS SON EN SU MAYORÍA FUNCIONAN IGUAL Y TIENEN EL MISMO CÓDIGO DE MÁQUINA

 -1
Author: AHMAD SAEED AWAN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-07 09:45:28

Por favor, echa un vistazo a esto:

Http://en.wikibooks.org/wiki/X86_Assembly/Shift_and_Rotate

Mientras SHL/SHR hace una rotación sin signo, SAL/SAR hace una rotación con signo.

 -2
Author: pushkarnk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-04 12:30:25