SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: Instru en Martes 2 de Mayo de 2006, 01:36

Título: Que Hace Daa
Publicado por: Instru en Martes 2 de Mayo de 2006, 01:36
Una duda. Que es lo que hace DAA? Pero si me le pudieran explicar con un ejemplo mejor, porque por mas que leo en los libros que tengo sobre la instruccion DAA nunca le entiendo que es lo que exactamente hace.

Saludos
Título: Re: Que Hace Daa
Publicado por: Eternal Idol en Martes 2 de Mayo de 2006, 14:55
http://pdos.csail.mit.edu/6.828/2005/readings/i386/DAA.htm (http://pdos.csail.mit.edu/6.828/2005/readings/i386/DAA.htm)
Título: Re: Que Hace Daa
Publicado por: Toph en Jueves 4 de Mayo de 2006, 02:02
:huh: la instrucción DAA (ajuste decimal) se utiliza para sumar dos bytes en formato BCD, despues de una suma realizada con las instrucciones ADD  
la instrucción DAA ajusta el resultado de la suma (para lo cual utiliza la información de los bits C y H del registro de condiciones, que son el acarreo del 8vo y 4to bits respectivamente, para corregir la suma e impedir los valores hexadecimales incorrectos (A-F).

Por ejemplo: si sumamos $01 + $09, obtenemos $0A, CC.C=0 y CC.H=0 (que no es un número BCD válido); la instrucción DAA se encarga de sumarle $06 para convertirlo en el valor correcto $10 (01+09=10).
Otro ejemplo: si sumamos $08 + $08, obtenemos $10, CC.C=0 y CC.H=1 (que es un número BCD válido, pero la suma es incorrecta porque CC.H=1), la instrucción DAA se encarga de sumarle $06 para convertirlo en el valor= $16 (08+08=16). Lo mismo vale para las decenas, salvo que aquí se utiliza el acarreo normal (CC.C) en lugar del medio acarreo (CC.H) y se suma $60.

Si CC.H y CC.C son 0 y los dígitos obtenidos son BCD, no es necesario sumar nada para ajustar el resultado (por ejemplo: $23+$11=$34).

espero te sirva, saludos  :hola:
Título: Re: Que Hace Daa
Publicado por: Instru en Jueves 4 de Mayo de 2006, 05:47
Muchas gracias. Mucho mas claro. El ejemplo que me pusiste y el link de Eternal Idol estuvieron bastante bien.