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?
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.
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.
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 .
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.
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.
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
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.
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