2009-09-15 14 views
5

que estaba buscando en línea a través de muestras de preguntas de la entrevista pedido en el pasado por parte de Microsoft y encontré éste:pregunta de la entrevista de Microsoft ASM?

El siguiente bloque ASM realiza una función matemática común, ¿qué es?

cwd xor ax, dx 
sub ax, dx 

Puede alguien responder a esta y explicar la respuesta a mi? ¡¡Gracias!!

Actualización: bien, entonces se calcula el valor absoluto. ¿Alguien puede explicar paso a paso cómo lo hace? Es decir. explique qué se pone en cada registro y en qué operación se realiza cada registro, etc. ¡Gracias!

+0

personas preguntan asm en entrevistas? –

+1

Acabo de leer que una pregunta de MS en el pasado fue así: la entrevista pone un bolígrafo negro delante de ti y no dice nada más que "esto es un bolígrafo rojo" ... así que no pondría nada más allá de microsoft –

Respuesta

1

Finds valor absoluto

No sólo operan en AX/EAX - Destruye un registro (DX/EDX) - Se puede hacer más rápido en los procesadores Pentium y los nuevos procesadores El problema es la instrucción de la caquexia crónica . Para reemplazar CWD, puede usar esta combinación: mov dx, ax sar dx, 15 (Si se utilizan registros de 32 bits, cambie con un valor de 31 en su lugar.)

cwd- convierta la palabra en doble palabra.

hacha XOR, dx => ax = ax dx xor

+0

gracias ... ¿pueden explicar cómo, de hecho, esto encuentra el valor absoluto? es decir, mostrando lo que las instrucciones hacen paso a paso (bueno, tal vez solo la primera instrucción, ya que entiendo la segunda) –

+10

Amigo, es ASAMBLEADOR. ES paso a paso – Bombe

4

Es la función (de ax) abs.

Si ax es positivo, entonces dx se convertirá en 0, y nada cambia.

Si ax es negativo, dx habrá 0xffff, lo que resulta en ax~ax - (-1), que es el método bien conocido para el cálculo de neg en una representación en complemento a dos.

7

cwd xor ax, dx

palabra Convertir en AX a doble palabra en DX: AX. El signo se conserva, el valor se conserva. Entonces, si AX> = 0, DX = 0 y si AX < 0, DX = -1.

XOR no hace nada si AX == 0.

Si AX < 0, el XOR invierte todos los bits de AX. Luego, el SUB agrega 1 (o resta -1, lo que sea: P) a AX. Esta es la forma de calcular el complemento de 2 de un número binario.

Con todo, esa secuencia de instrucciones coloca el valor absoluto de AX en AX y establece DX según el signo.

Cuestiones relacionadas