Título: SBC y el Carry Publicado por: burguera en 29 de Diciembre de 2010, 08:09:23 pm Buenas!
Estaba programando unas cosillas y me he encontrado con un problemilla curioso. Seguramente soy yo que meto la gamba, pero no sé exactamente por qué. Os cuento. Tengo un fragmento de código tal que este: Código: ld hl, (MAPX) ld (PARAMS), hl ld bc, 0 sbc hl, bc jr c, .CHY En general funciona bien, pero algo falla cuando (MAPX) vale cero. Igual falla en otros casos, pero en lo que estoy haciendo sólo he detectado el problema en esa situación. Si (MAPX) vale cero, en realidad sbc hace "0 menos 0". El caso es que a veces tras la operación el carry se pone a uno y otras se pone a cero sin ninguna razón aparente. No lo he probado en un MSX real, pero el fallo aparece tanto en el blueMSX como en el Meisei. ¿Alguna idea de por qué pasa esto? Y, ya que estamos: ¿hay alguna forma mejor que un SBC y mirar el carry para comparar dos números de 16 bits? Saludos! --- Toni Título: Re: SBC y el Carry Publicado por: MsxKun en 29 de Diciembre de 2010, 08:31:57 pm Asi a primera vista... Resetea el flag antes de nada por si las moscas.
Para comparar HL y DE tienes: RST $20 ; compara HL y DE (Set Z si HL=DE - Set Carry si HL<DE) Hasta :) Título: Re: SBC y el Carry Publicado por: e_sedes en 29 de Diciembre de 2010, 09:26:29 pm SBC tiene en cuenta el estado de C, si no lo tienes controlado te puede fallar.
Título: Re: SBC y el Carry Publicado por: OKI09 en 29 de Diciembre de 2010, 09:41:20 pm Cierto, la rutina de la BIOS $20 compara HL-DE y funciona a la perfeccion, lo se porque la utilizo en un algo que estoy haciendo. ;D
Título: Re: SBC y el Carry Publicado por: burguera en 29 de Diciembre de 2010, 09:46:20 pm Gracias a todos!
Probaré con la 20h, aunque ya lo he solucionado reseteando el carry antes del SBC. Dios... si es un perro me muerde, si ya lo dice la propia instrucción SuBstract with Carry. Estoy tonto ::) Sólo lo había notado en el caso de restar 0 y 0 porque ahí el bit de carry si que marca la diferencia entre positivo y negativo, pero en el resto de casos también podía pasar. Saludos! Toni Título: Re: SBC y el Carry Publicado por: burguera en 29 de Diciembre de 2010, 11:02:56 pm Cierto, la rutina de la BIOS $20 compara HL-DE y funciona a la perfeccion, lo se porque la utilizo en un algo que estoy haciendo. ;D Por cierto, ¿en qué estás metido, si se puede confesar? ¿algo para la dev quizá? Título: Re: SBC y el Carry Publicado por: Imanok en 30 de Diciembre de 2010, 09:39:18 am Buenas! Mola ver que te has puesto a hacer cositas de nuevo... mucho ánimo! ;)Estaba programando unas cosillas y me he encontrado con un problemilla curioso. Título: Re: SBC y el Carry Publicado por: OKI09 en 30 de Diciembre de 2010, 12:29:02 pm Citar Por cierto, ¿en qué estás metido, si se puede confesar? ¿algo para la dev quizá? Nop, para la DEV no. Paciencia, aunque ya esta muy avanzado, no dispongo de mucho tiempo. Pronto os dire algo a todos, aunque algunos ya han visto algo.;) |