<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HYANETWORKS &#187; masm</title>
	<atom:link href="http://hyanetworks.com/wordpress/tag/masm/feed/" rel="self" type="application/rss+xml" />
	<link>http://hyanetworks.com/wordpress</link>
	<description>Internet Solutions &#38; Web Design</description>
	<lastBuildDate>Thu, 04 Mar 2010 14:30:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Ensamblador NASM para nuestro Linux!</title>
		<link>http://hyanetworks.com/wordpress/2009/10/28/ensamblador-nasm-para-nuestro-linux/</link>
		<comments>http://hyanetworks.com/wordpress/2009/10/28/ensamblador-nasm-para-nuestro-linux/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 18:40:50 +0000</pubDate>
		<dc:creator>Oxigen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ensamblador]]></category>
		<category><![CDATA[masm]]></category>
		<category><![CDATA[nasm]]></category>

		<guid isPermaLink="false">http://hyanetworks.com/wordpress/?p=358</guid>
		<description><![CDATA[Bueno, pues todos los que estamos dentro del área de informática, sistemas o electrónica seguramente nos hemos topado en algún momento de la carrera con el llamado lenguaje ensamblador, el cual no es más que un lenguaje de bajo nivel. Esto no quiere decir que sea un lenguaje menos bueno que C o Java, sino [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, pues todos los que estamos dentro del área de informática, sistemas o electrónica seguramente nos hemos topado en algún momento de la carrera con el llamado lenguaje <strong>ensamblador</strong>, el cual no es más que un lenguaje de bajo nivel. Esto no quiere decir que sea un lenguaje menos bueno que C o Java, sino que más bien va hacia que es un lenguaje que está más dirigido a la programación de las interrupciones del procesador.</p>
<p style="text-align: center;"><img class="aligncenter" title="nasm linux" src="http://farm3.static.flickr.com/2577/3940768825_f83785e3de.jpg" alt="" width="400" height="400" /></p>
<p>Sin embargo, en el mendio de la programación ensamblador existe un pequeño problema, la mayoría de la documentación y de software para trabajar con tal lenguaje está mayormente monopolizado por aplicaciones microsoft (MASM – Microsoft Assambler) para procesadores Intel. Aunqué hay algunún software por ahí también para windows (NASM) que hace este trabajo pero siguiento los preceptos GNU hasta hace poco se desarrolló una alternatíva para nuestro linux, lo único que tenemos que hacer para instalarlo y trabajar con el es:</p>
<blockquote><p>sudo apt-get install nasm</p></blockquote>
<p>Aquí un pequeño ejemplo del método de ordenación de quicksort para Nasm.</p>
<blockquote>
<pre>quicksort<span>:</span>
         <span>push</span> <span>ebp</span>
         <span>mov</span> <span>ebp</span><span>,</span><span>esp</span>
         <span>push</span> <span>esi</span>
         <span>push</span> <span>ebx</span>
         <span>push</span> <span>ecx</span>
         <span>push</span> <span>edx</span>
         <span>mov</span> <span>ebx</span><span>,</span><span>dword</span><span>[</span><span>ebp</span> <span>+</span> 12<span>]</span>
         <span>mov</span> <span>ecx</span><span>,</span><span>dword</span><span>[</span><span>ebp</span> <span>+</span> 16<span>]</span>
         <span>cdq</span>
         <span>mov</span> <span>eax</span><span>,</span> <span>ebx</span>
         <span>add</span> <span>eax</span><span>,</span> <span>ecx</span>
         <span>push</span> <span>ecx</span>
         <span>mov</span> <span>ecx</span><span>,</span>2
         <span>div</span> <span>ecx</span>
         <span>pop</span> <span>ecx</span>
         <span>xchg</span> <span>edx</span><span>,</span><span>eax</span>
         <span>mov</span> <span>esi</span><span>,</span> <span>[</span><span>ebp</span> <span>+</span> 8<span>]</span>
         <span>mov</span> <span>edx</span><span>,</span><span>dword</span><span>[</span><span>esi</span> <span>+</span> <span>edx</span> <span>*</span> 4<span>]</span>
         qs@L1<span>:</span>
                qs@L1@L1<span>:</span>
                        <span>cmp</span> <span>dword</span><span>[</span><span>esi</span> <span>+</span> <span>ebx</span> <span>*</span> 4<span>]</span><span>,</span><span>edx</span>
                        <span>jge</span> qs@L1@L1@<span>out</span>
                        <span>inc</span> <span>ebx</span>
                        <span>jmp</span> qs@L1@L1
                qs@L1@L1@<span>out</span><span>:</span>
                qs@L1@L2<span>:</span>
                        <span>cmp</span> <span>dword</span><span>[</span><span>esi</span> <span>+</span> <span>ecx</span> <span>*</span> 4<span>]</span><span>,</span><span>edx</span>
                        <span>jle</span> qs@L1@L2@<span>out</span>
                        <span>dec</span> <span>ecx</span>
                        <span>jmp</span> qs@L1@L2
                qs@L1@L2@<span>out</span><span>:</span>
                qs@L1@<span>IF1</span><span>:</span>
                        <span>cmp</span> <span>ebx</span><span>,</span> <span>ecx</span>
                        <span>jg</span> qs@L1@<span>IF1</span>@<span>out</span>
                        <span>mov</span> <span>eax</span><span>,</span> <span>dword</span><span>[</span><span>esi</span> <span>+</span> <span>ebx</span> <span>*</span> 4<span>]</span>
                        <span>xchg</span> <span>eax</span><span>,</span> <span>dword</span><span>[</span><span>esi</span> <span>+</span> <span>ecx</span> <span>*</span> 4<span>]</span>
                        <span>mov</span> <span>dword</span><span>[</span><span>esi</span> <span>+</span> <span>ebx</span> <span>*</span> 4<span>]</span><span>,</span> <span>eax</span>
                        <span>inc</span> <span>ebx</span>
                        <span>dec</span> <span>ecx</span>
                qs@L1@<span>IF1</span>@<span>out</span><span>:</span>
                <span>cmp</span> <span>ebx</span><span>,</span><span>ecx</span>
                <span>jle</span> qs@L1
         qs@L1@<span>out</span><span>:</span>
         qs@<span>IF1</span><span>:</span>
                <span>cmp</span> <span>dword</span><span>[</span><span>ebp</span> <span>+</span> 12<span>]</span><span>,</span><span>ecx</span>
                <span>jge</span> qs@<span>IF1</span>@<span>out</span>
                <span>push</span> <span>ecx</span>
                <span>push</span> <span>dword</span><span>[</span><span>ebp</span> <span>+</span> 12<span>]</span>
                <span>push</span> <span>esi</span>
                <span>call</span> quicksort
         qs@<span>IF1</span>@<span>out</span><span>:</span>
         qs@<span>IF2</span><span>:</span>
                <span>cmp</span> <span>ebx</span><span>,</span> <span>dword</span><span>[</span><span>ebp</span> <span>+</span> 16<span>]</span>
                <span>jge</span> qs@<span>IF2</span>@<span>out</span>
                <span>push</span> <span>dword</span><span>[</span><span>ebp</span> <span>+</span> 16<span>]</span>
                <span>push</span> <span>ebx</span>
                <span>push</span> <span>esi</span>
                <span>call</span> quicksort
         qs@<span>IF2</span>@<span>out</span><span>:</span>
         <span>pop</span> <span>edx</span>
         <span>pop</span> <span>ecx</span>
         <span>pop</span> <span>ebx</span>
         <span>pop</span> <span>esi</span>
         <span>pop</span> <span>ebp</span>
<span>retn</span> <span>12</span></pre>
</blockquote>
<p>En fin, espero que les sirva de algo para todos aquellos que tengan que trabajar con ASM pero que no quieran usar el ensamblador de windows o que si están en linux, no tengan que cambiar para trabajar.</p>
]]></content:encoded>
			<wfw:commentRss>http://hyanetworks.com/wordpress/2009/10/28/ensamblador-nasm-para-nuestro-linux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->
