<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comentarios en: +++ Positivo y Negativo &#8211; - -</title>
	<atom:link href="http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/feed/" rel="self" type="application/rss+xml" />
	<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/</link>
	<description>-El Verdadero Lenguaje de las Máquinas-</description>
	<lastBuildDate>Wed, 06 Jan 2010 01:03:39 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: asm86</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-352</link>
		<dc:creator>asm86</dc:creator>
		<pubDate>Tue, 29 Dec 2009 02:33:03 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-352</guid>
		<description>Para asegurarte de que un numero decimal es valido debes de probar de que todos los simbolos ascii que lo componen esten entre 48 y 57 (30h y 39h en hexadecimal), si existe un valor ascii fuera de este rango el numero es invalido. En el caso de windows puedes configurar un campo de texto para que solo te acepte numeros decimales como entrada.

Ahora toma en cuenta que una cosa es validar y otra procesar. Si quieres convertir pasar de ascii a binario necesitas estos pasos:

Escribir el numero en formato BCD.- Luego de la validacion eliminas los 4 bits mas altos de cada byte. Esto se hace con un AND entre el numero y la constante 0Fh
Empaquetar BCD.- La parte mas dificil. Tienes que meter cada par de cifras en un byte de modo que cada cifra quede en 4 bits. Esto lo haces con instrucciones como SHL y OR. Debes de usar 10 bytes inicializados en cero para esto.
Cargar a la FPU.- Cargas ese numero con FBLD a la unidad de punto flotante. La FPU convierte automaticamente entre binario entero, BCD y flotante IEEE de 32, 64 y 80 bits. Para sacar el valor como un entero binario usas la instruccion FIST y le pasas como operando el lugar donde vas a guardar el entero. Una vez hecho esto ya puedes manejarlo de la manera normal.

Para ver si un numero es mayor de 65535 solo tienes que subirlo al acumulador con un MOV EAX, [NUMERO] y hacer un AND EAX, FFFF0000H. Si EAX no es igual a cero entonces el valor es mayor que 65535 y no puede representarse en 16 bits.

Otra manera mas comun es tomar cada digito, multiplicarlo por su respectiva potencia de 10 y sumar todos los valores en un solo registro. Si estas trabajando con ensamblador de 16 bits, comprobar si es mayor de 65535 requiere revisar la bandera de acarreo.</description>
		<content:encoded><![CDATA[<p>Para asegurarte de que un numero decimal es valido debes de probar de que todos los simbolos ascii que lo componen esten entre 48 y 57 (30h y 39h en hexadecimal), si existe un valor ascii fuera de este rango el numero es invalido. En el caso de windows puedes configurar un campo de texto para que solo te acepte numeros decimales como entrada.</p>
<p>Ahora toma en cuenta que una cosa es validar y otra procesar. Si quieres convertir pasar de ascii a binario necesitas estos pasos:</p>
<p>Escribir el numero en formato BCD.- Luego de la validacion eliminas los 4 bits mas altos de cada byte. Esto se hace con un AND entre el numero y la constante 0Fh<br />
Empaquetar BCD.- La parte mas dificil. Tienes que meter cada par de cifras en un byte de modo que cada cifra quede en 4 bits. Esto lo haces con instrucciones como SHL y OR. Debes de usar 10 bytes inicializados en cero para esto.<br />
Cargar a la FPU.- Cargas ese numero con FBLD a la unidad de punto flotante. La FPU convierte automaticamente entre binario entero, BCD y flotante IEEE de 32, 64 y 80 bits. Para sacar el valor como un entero binario usas la instruccion FIST y le pasas como operando el lugar donde vas a guardar el entero. Una vez hecho esto ya puedes manejarlo de la manera normal.</p>
<p>Para ver si un numero es mayor de 65535 solo tienes que subirlo al acumulador con un MOV EAX, [NUMERO] y hacer un AND EAX, FFFF0000H. Si EAX no es igual a cero entonces el valor es mayor que 65535 y no puede representarse en 16 bits.</p>
<p>Otra manera mas comun es tomar cada digito, multiplicarlo por su respectiva potencia de 10 y sumar todos los valores en un solo registro. Si estas trabajando con ensamblador de 16 bits, comprobar si es mayor de 65535 requiere revisar la bandera de acarreo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Arlen</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-351</link>
		<dc:creator>Arlen</dc:creator>
		<pubDate>Mon, 28 Dec 2009 08:33:11 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-351</guid>
		<description>hola, como le puedo hacer para validar un numero ingresado desde el teclado, este debe ser un numero de 2 bytes sin signo, es decir el maximo valor q puede ingresar el usuario es 65535...</description>
		<content:encoded><![CDATA[<p>hola, como le puedo hacer para validar un numero ingresado desde el teclado, este debe ser un numero de 2 bytes sin signo, es decir el maximo valor q puede ingresar el usuario es 65535&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: b1ackpig</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-347</link>
		<dc:creator>b1ackpig</dc:creator>
		<pubDate>Fri, 18 Dec 2009 16:05:56 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-347</guid>
		<description>Estan chidos los dibujitos en PAINT</description>
		<content:encoded><![CDATA[<p>Estan chidos los dibujitos en PAINT</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: asm86</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-345</link>
		<dc:creator>asm86</dc:creator>
		<pubDate>Fri, 18 Dec 2009 05:25:37 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-345</guid>
		<description>Trabajo en eso, si alguien puede recomendarme una camara digital silenciosa y facil de ocultar me ayudaria mucho para meterle mas imagenes a este blog. Supongo que eso sera mejor que simples screenshots o mis famosos dibujitos en PAINT.</description>
		<content:encoded><![CDATA[<p>Trabajo en eso, si alguien puede recomendarme una camara digital silenciosa y facil de ocultar me ayudaria mucho para meterle mas imagenes a este blog. Supongo que eso sera mejor que simples screenshots o mis famosos dibujitos en PAINT.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: yerko</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-344</link>
		<dc:creator>yerko</dc:creator>
		<pubDate>Thu, 17 Dec 2009 18:00:25 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-344</guid>
		<description>apesta colo quen mas imagenes</description>
		<content:encoded><![CDATA[<p>apesta colo quen mas imagenes</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: b1ackpig</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-257</link>
		<dc:creator>b1ackpig</dc:creator>
		<pubDate>Thu, 10 Sep 2009 15:50:10 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-257</guid>
		<description>Lo de idiota si te lo creo, pero que tengamos mala informacion, esta como que incompleto tu comentario. Necesitamos que nos  pases la &lt;b&gt;buena informacion&lt;/b&gt;.

Saludos</description>
		<content:encoded><![CDATA[<p>Lo de idiota si te lo creo, pero que tengamos mala informacion, esta como que incompleto tu comentario. Necesitamos que nos  pases la <b>buena informacion</b>.</p>
<p>Saludos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: asm86</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-256</link>
		<dc:creator>asm86</dc:creator>
		<pubDate>Thu, 10 Sep 2009 00:42:46 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-256</guid>
		<description>Pues si consideras que tengo mala informacion seria muy bueno que pusieras aqui mismo la informacion correcta. Me ayudarias a mucho a mejorar este blog si estas en lo cierto, y si no lo estas, nunca estaran de mas unas cuantas carcajadas. Sea como sea te invito a que publiques la &#039;buena informacion&#039; en estos mismos comentarios.</description>
		<content:encoded><![CDATA[<p>Pues si consideras que tengo mala informacion seria muy bueno que pusieras aqui mismo la informacion correcta. Me ayudarias a mucho a mejorar este blog si estas en lo cierto, y si no lo estas, nunca estaran de mas unas cuantas carcajadas. Sea como sea te invito a que publiques la &#8216;buena informacion&#8217; en estos mismos comentarios.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: ciara</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-255</link>
		<dc:creator>ciara</dc:creator>
		<pubDate>Wed, 09 Sep 2009 23:19:28 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-255</guid>
		<description>son unos idiotas y tienen mala informacion</description>
		<content:encoded><![CDATA[<p>son unos idiotas y tienen mala informacion</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: asm86</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-101</link>
		<dc:creator>asm86</dc:creator>
		<pubDate>Wed, 22 Apr 2009 16:42:17 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-101</guid>
		<description>En realidad las banderas responden diferente en la primera resta que en la segunda. Al restar 10, si el valor esta entre 0 y 9 va a irse a 246 a 255 por el poder del Wrap-Arround. Mientras que el rango entre 10 y 50 se quedara entre 0 y 40. Entonces, si restaramos 40 luego de eso, bastaria con ver si el resultado esta o no por encima de 40. O lo que es lo mismo, luego de hacer una resta, si el resultado no hace wrap-around.
En cambio, si se resta 50 desde el principio, todos los valores entre 0 y 50 acabarian en el rango 205 a 255. Si enseguida probaramos si queda por arriba, tambien se contarian dentro del rango los valores entre 0 y 10. Pero no estoy tan seguro, (acabo de decir algo que las leyes del apareamiento humano prohiben terminantemente: Demostrar inseguridad) lo mejor es escribir notas mas serias sobre las banderas y los saltos en un programa.</description>
		<content:encoded><![CDATA[<p>En realidad las banderas responden diferente en la primera resta que en la segunda. Al restar 10, si el valor esta entre 0 y 9 va a irse a 246 a 255 por el poder del Wrap-Arround. Mientras que el rango entre 10 y 50 se quedara entre 0 y 40. Entonces, si restaramos 40 luego de eso, bastaria con ver si el resultado esta o no por encima de 40. O lo que es lo mismo, luego de hacer una resta, si el resultado no hace wrap-around.<br />
En cambio, si se resta 50 desde el principio, todos los valores entre 0 y 50 acabarian en el rango 205 a 255. Si enseguida probaramos si queda por arriba, tambien se contarian dentro del rango los valores entre 0 y 10. Pero no estoy tan seguro, (acabo de decir algo que las leyes del apareamiento humano prohiben terminantemente: Demostrar inseguridad) lo mejor es escribir notas mas serias sobre las banderas y los saltos en un programa.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Puerco</title>
		<link>http://asm86.wordpress.com/2009/04/16/positivo-y-negativo/#comment-100</link>
		<dc:creator>Puerco</dc:creator>
		<pubDate>Wed, 22 Apr 2009 15:55:15 +0000</pubDate>
		<guid isPermaLink="false">http://asm86.wordpress.com/?p=314#comment-100</guid>
		<description>Encontre esta informacion http://www.gui.uva.es/udigital/ap06.html

donde especifican los tiempos de ejecucion de las instrucciones

cmp registro, inmediato
sub registro, inmediato

y ambas parecen tomar 1 ciclo de reloj apartir de los 486.

ademas segun esta definicion del CMP:

CMP destiny, source

This instruction subtracts the source operator from the destiny operator but without this one storing the result of the operation, and it only affects the state of the flags.

es lo mismo un 

cmp ax, 10
ja .mayor

que un

sub ax, 10
ja .mayor

excepto por que el contenido de ax se destruye.. ambas podrian tomar 2 ciclos de reloj en el 486 segun el documento anexo

jeje ensamblador es lo maximo!...

seria bueno hablar de optimizacion de codigo para velocidad y para espacio en disco... aunque en estos tiempos habra gente que no se preocupa ni por lo uno, menos por lo otro jaja

Saludos!</description>
		<content:encoded><![CDATA[<p>Encontre esta informacion <a href="http://www.gui.uva.es/udigital/ap06.html" rel="nofollow">http://www.gui.uva.es/udigital/ap06.html</a></p>
<p>donde especifican los tiempos de ejecucion de las instrucciones</p>
<p>cmp registro, inmediato<br />
sub registro, inmediato</p>
<p>y ambas parecen tomar 1 ciclo de reloj apartir de los 486.</p>
<p>ademas segun esta definicion del CMP:</p>
<p>CMP destiny, source</p>
<p>This instruction subtracts the source operator from the destiny operator but without this one storing the result of the operation, and it only affects the state of the flags.</p>
<p>es lo mismo un </p>
<p>cmp ax, 10<br />
ja .mayor</p>
<p>que un</p>
<p>sub ax, 10<br />
ja .mayor</p>
<p>excepto por que el contenido de ax se destruye.. ambas podrian tomar 2 ciclos de reloj en el 486 segun el documento anexo</p>
<p>jeje ensamblador es lo maximo!&#8230;</p>
<p>seria bueno hablar de optimizacion de codigo para velocidad y para espacio en disco&#8230; aunque en estos tiempos habra gente que no se preocupa ni por lo uno, menos por lo otro jaja</p>
<p>Saludos!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
