Consulta examen diciembre 2013 Ejecicio 1

Consulta examen diciembre 2013 Ejecicio 1

de Andres Veiro Diaz -
Número de respuestas: 8
Buenas

Tenga una consulta de este ejercicio y que es algo general.

La solución del ejercicio hace:

if ((readPositions & 2 ** iterPos))

Lo interpreto que hace el and bit a bit de 2 iterPos  pero no entiendo cuando es true para entrar al if. Osea no me queda claro como afecta el and las flags.

Adjunto la letra.

Saludos.


En respuesta a Andres Veiro Diaz

Re: Consulta examen diciembre 2013 Ejecicio 1

de Guzman Perera Villardino -

En C/C++ las condiciones if se toman como true pasandole cualquier valor distinto de 0. Lo segundo, no se a que te referis con "no me queda claro como afecta el and las flags" (no entre al ejercicio), pero por lo menos te puedo ir sacando la primer duda :D

Saludos!

En respuesta a Guzman Perera Villardino

Re: Consulta examen diciembre 2013 Ejecicio 1

de Andres Veiro Diaz -

Guzman

Ahora entendió por que funciona en alto nivel. Gracias.

La otra duda que me queda que como afecta las flags del cpu el and por que no me queda lo que hace en la parte de assembler.

Saludos.

En respuesta a Andres Veiro Diaz

Re: Consulta examen diciembre 2013 Ejecicio 1

de Guzman Perera Villardino -

Al hacer la operacion 'and' en bajo nivel, la propia instruccion hace que la CPU modifique el registro de FLAGS (al menos en la arquitectura que trabajamos es asi) entonces al hacer:


and DX, CX

je else


al ejecutar la instruccion de 'and', se modifica el registro de las FLAGS pertinentes, y luego la instruccion de 'je' consulta el registro de FLAGS para saber si tomar el salto o no.

Fijate en la cartilla reducida, y sino mas en detalle lo podes encontrar en el pdf de Arquitectura 8086 de como funcionan este tipo de instrucciones en bajo nivel.


Espero haya sido lo suficiente claro.

Saludos

En respuesta a Guzman Perera Villardino

Re: Consulta examen diciembre 2013 Ejecicio 1

de Federico Rivero -

Como comentario adicional, JE = JZ = Salto si bandera Z = 1. Por lo tanto, si al hacer el and, el bit que se está testeando está en cero, el resultado será cero y se procederá a saltar.

Saludos!

       Federico

En respuesta a Federico Rivero

Re: Consulta examen diciembre 2013 Ejecicio 1

de Andres Veiro Diaz -

Federico

Leo las notas de la cartilla y no entiendo en que casos es Z=0 o Z=1 cuando se realiza el AND.

Saludos.


En respuesta a Andres Veiro Diaz

Re: Consulta examen diciembre 2013 Ejecicio 1

de Federico Rivero -

Estimado:

En las señales activas por nivel alto, un 1 indica que la señal se activó. La bandera Z indica que el resultado es 0, y por lo tanto va a valer 1 cuando el resultado de la operación valga 0.

Lo mismo sucede con el resto de las banderas N, C y V

Saludos,

        Federico

En respuesta a Federico Rivero

Re: Consulta examen diciembre 2013 Ejecicio 1

de Andres Veiro Diaz -

Creo que entendi, igual pongo un ejemplo por si me equivoco.

AND 1001 1000 el resultado es 1000 como el resultado es distinto de 0000 la flag Z tendrá el valor 0.

En cambio AND 0001 1000 el resultado es 0000 y la flag Z tendrá el valor 1.

Gracias por la ayuda.

Saludos.