[2017][Julio][Problema 2]

[2017][Julio][Problema 2]

de Agustín Torres Mari -
Número de respuestas: 3

Buenas, estaba realizando el problema 2 del examen de julio de 2017 y tengo 2 dudas.

La primera, que es algo básica, pero me la quiero sacar de arriba, es: 

¿En que casos tengo que utilizar WORD PTR o BYTE PTR? ¿En el caso de no utilizarlo, se considera error grave o leve?


La otra es para los casos en los que se dice que no es necesario preservar registros.

Al no preservar registros, el consumo de cada paso recursivo va a ser menor que si preservo, ¿esto afecta en algo para la corrección de la parte de calcular el consumo máximo del stack o el valor mas grande para el cual se puede implementar dicho procedimiento? 

Saludos, Agustin


En respuesta a Agustín Torres Mari

Re: [2017][Julio][Problema 2]

de Gustavo Brown -

Agustín, 

  Tenes que utilizar WORD PTR o BYTE PTR cuando un parámetro accede a memoria, hay más de una variante de la instrucción con el mismo mnemónico (una que trabaja con la palabra de 16 bits y otra con el byte) y si hubiera otro parámetro en la instrucción el mismo no permite determinar cual de las variantes de la instrucción hay que utilizar. Es decir, se deben usar cuando hay ambigüedad respecto a cual variante de la instrucción se debe usar.

Por ejemplo supongamos que queres incrementar el contenido de cierta posición de memoria apuntada por la dirección segmentada DS:BX. Hay 2 variantes de esa instrucción, una que incrementa el byte apuntado por la dirección y otra la palabra. Si quisieras incrementar el byte usarias por ejemplo INC byte ptr [BX]

Otro ejemplo, suponete que queres cargar la constante 5 en la palabra ubicada en la dirección segmentada DS:BX. Ahí usarías MOV word ptr [BX], 5. En cambio si la palabara que queres cargar está en el registro AX no tendrías que indicar la variante porque el parámetro AX en MOV [BX], AX no tiene ambigüedad.

No es un error descalificante pero abolla el ejercicio.

Sobre tu otra pregunta, los cálculos que tenés que hacer dependen del código assembler que hayas implementado  al hacer el programa. Si preservás más contexto o menos contexto seguramente algunos cálculos varíen.

Saludos,
  Gustavo

En respuesta a Gustavo Brown

Re: [2017][Julio][Problema 2]

de Agustín Torres Mari -
Gustavo, algo que no me quedo claro.
Sobre la segunda pregunta, si preservo mas contexto, pero el calculo del consumo máximo del stack en cuanto a mi código está bien, ¿se consideraría como bien esa parte, a pesar de que consuma más?
Saludos, Agustín.