<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>Resumen Capitulo 1: Introducción a Ensamblador by GILBERTO ESPERICUETA LOPEZ</title>
      <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6</link>
      <description>En cada bloque se muestra información clave sobre cada tema que abarcó esta introducción a ensamblador. Algunos bloques se relacionan por medio de color.</description>
      <language>en-us</language>
      <pubDate>2021-10-28 04:13:04 UTC</pubDate>
      <lastBuildDate>2024-11-13 17:12:09 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url>https://padlet.net/icons/png/1f5a5.png</url>
      </image>
      <item>
         <title>¿Qué es ARM?</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850319838</link>
         <description><![CDATA[<div><br>ARM es una arquitectura RISC (Reduced Instruction Set Computer - Ordenador con Conjunto Reducido de Instrucciones) de 32 bits, salvo la versión del core ARMv8-A que es es mixta 32/64 bits (bus de 32 bits con registros de 64 bits).</div><div><br></div><div>Se trata de una arquitectura licenciable, lo que quiere decir que la empresa desarrolladora ARM Holdings diseña la arquitectura,&nbsp; pero son otras compañías las que fabrican y venden chips.<br><br><br><br><br><br></div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/72137eabe6d1b43104504748bdf7bde9/ARMHoldings.jpg" />
         <pubDate>2021-10-28 04:34:49 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850319838</guid>
      </item>
      <item>
         <title>Registros</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850325448</link>
         <description><![CDATA[<div>La arquitectura ARMv6 presenta un grupo de 17 registros de 32 bits cada uno.<br><br><strong>Registros Generales</strong></div><div>El propósito de estos es el almacenamiento temporal de datos.&nbsp;</div><div><strong>Registros Especiales</strong></div><ul><li>SP/R13. Stack Pointer o Puntero de Pila.</li><li>LR/R14. Link Register o Registro de Enlace</li><li>PC/R15. Program Counter o Contador de Programa.</li></ul><div><strong>Registros CPSR</strong></div><div>En estos registros se almacenan banderas condicionales y bits de control.&nbsp;</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/d226b293bd82a530f9c5d4b498c7d314/registros.JPG" />
         <pubDate>2021-10-28 04:38:05 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850325448</guid>
      </item>
      <item>
         <title>Lenguaje Ensamblador</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850336567</link>
         <description><![CDATA[<div><br>El ensamblador es un lenguaje de bajo nivel que permite un control directo de la CPU y todos los elementos asociados.&nbsp;</div><div><br></div><div>Desarrollar programas en lenguaje ensamblador es un proceso laborioso. Pues cada línea de un programa ensamblador consta de una instrucción del procesador y la posición que ocupan los datos de esa instrucción.&nbsp;<br><br><br><br><br><br><br><br><br></div><div><br></div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/adb7501f8764b7f20e6bfce354a1c8e9/ensamblador.jpg" />
         <pubDate>2021-10-28 04:44:20 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850336567</guid>
      </item>
      <item>
         <title>Ventajas y Desventajas de Lenguaje Ensamblador</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850338622</link>
         <description><![CDATA[<div><strong>Ventajas</strong></div><div>Presenta como principal característica la flexibilidad y la posibilidad de acceso directo a nivel de registro.</div><div><br></div><div><strong>Desventajas</strong></div><div>Programar en ensamblador es laborioso puesto que los programas contienen un número elevado de líneasl.<br><br><br><br><br><br><br><br><br><br></div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/195df695e00edec146137f9d86f210bd/ventajas_desventajas_coworking_1024x612.jpg" />
         <pubDate>2021-10-28 04:45:31 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850338622</guid>
      </item>
      <item>
         <title>Entorno</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850366835</link>
         <description><![CDATA[<div>Los pasos habituales para hacer un programa son los siguientes:</div><ol><li>Escribir el programa en el lenguaje fuente.&nbsp;</li><li>Traducirlo a lenguaje máquina, hay que utilizar un programa traductor.</li><li>Un fichero ejecutable contiene el programa traducido más una serie de códigos que debe tener todo programa que vaya a ser ejecutado en una máquina determinada.&nbsp;</li><li>El encargado de unir todo es un programa llamado linker que genera el programa ejecutable.</li></ol><div><br>El traductor/ensamblador, linker y debugger son respectivamente GNU Assembler (as), GNU Compiler Collection (gcc) y GNU Debugger (gdb).&nbsp;<br><br><br><br><br><br><br><br></div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/7e705aac35001201d09b0d562fb6066c/ejecutable.JPG" />
         <pubDate>2021-10-28 05:01:03 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850366835</guid>
      </item>
      <item>
         <title>Tipos de Errores en la Creación de un Programa</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850372530</link>
         <description><![CDATA[<div>Hay dos tipos de errores: los sintácticos o detectables en tiempo de traducción y los errores semánticos o detectables en tiempo de ejecución.&nbsp;</div><div><br></div><ul><li>Errores sintácticos. Por ejemplo, escribir mal una instrucción o hacer una operación entre dos tipos de datos incompatibles. </li><li>Errores semánticos. Todas las instrucciones pueden ser correctas, pero se puede haber olvidado poner la condición de salida de un bucle (y que no termine nunca) o que sencillamente el programa no haga lo que queremos.</li></ul>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/9ed47e8ab9a17e4b7bb49b93e1ad39dd/error.jpg" />
         <pubDate>2021-10-28 05:04:26 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850372530</guid>
      </item>
      <item>
         <title>Configuración del Entorno Para Prácticas en Casa</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850380115</link>
         <description><![CDATA[<div>Para configurar el entorno en Windows se siguen los siguientes pasos:</div><div><br></div><div>1. Descargamos la última versión de RASPBIAN en la siguiente url:</div><div>http://www.raspberrypi.org/downloads/</div><div>2. Extraemos del .zip el archivo de imagen, en nuestro caso se llama 2014-01-07-</div><div>wheezy-raspbian.img, aunque seguramente tu versión será más moderna.</div><div>3. Descargamos el emulador QEMU desde aquí:</div><div>http://lassauge.free.fr/qemu/</div><div>4. Descargamos el siguiente núcleo o kernel desde aquí:</div><div>http://xecdesign.com/downloads/linux-qemu/kernel-qemu</div><div>5. Lanzamos la línea de comandos o ventana de MS-DOS. Esto se hace desde</div><div>Programas-&gt;Accesorios-&gt;Símbolo del sistema o bien pulsando Windows+R</div><div>y escribiendo “cmd”. Una vez lanzada escribimos lo siguiente:</div><div><br></div><div><sub>qemu - system - armw - kernel kernel - qemu - cpu arm1176</sub></div><div><sub>-m 256 -M versatilepb -no - reboot - serial stdio - append</sub></div><div><sub>" root =/ dev / sda2 panic = 1 rootfstype = ext4 rw init =/ bin / bash "</sub></div><div><sub>- hda 2014 -01 - 07 - wheezy - raspbian.img</sub></div><div><br></div><div>4. Aparece el emulador en una nueva ventana tipo terminal. Una vez se muestran los mensajes de arranque aparece el siguiente texto:</div><div><br></div><div><sub>raspberrypi login :</sub></div><div><br></div><div>Nosotros escribimos pi.</div><div>5. Luego nos piden el password, que es raspberry.&nbsp;</div><div>6. Una vez identificados, lo primero que hacemos es editar el archivo&nbsp;</div><div><br></div><div><sub>/etc/ld.so.preload</sub></div><div><br></div><div>con el siguiente comando:</div><div><br></div><div><sub>nano / etc / ld.so.preload</sub></div><div><br></div><div>7. Dentro del editor ponemos un # al comienzo de la siguiente línea:</div><div><br></div><div><sub>#/ usr / lib / arm - linux - gnueabihf / libcofi_rpi.so</sub></div><div><br></div><div>8. Presionamos Ctrl-X y luego y, Enter para guardar y salir.</div><div>9. Escribimos sudo halt para salir limpiamente del sistema emulado.</div><div>10. Cerramos la ventana de QEMU y creamos el siguiente archivo lanzador.bat.</div><div><br></div><div><sup>qemu - system - armw - kernel kernel - qemu - cpu arm1176</sup></div><div><sup>-m 256 -M versatilepb -no - reboot - serial stdio - append</sup></div><div><sup>" root =/ dev / sda2 panic = 1 rootfstype = ext4 rw "</sup></div><div><sup>- hda 2014 -01 - 07 - wheezy - raspbian.img</sup></div><div><br></div><div>11. Ejecutamos el archivo lanzador.bat que acabamos de crear. Ya hemos terminado. </div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/9f3ef08f0b0ee195e68c570509dca967/QEMU_jpg.jpg" />
         <pubDate>2021-10-28 05:08:50 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850380115</guid>
      </item>
      <item>
         <title>Aspecto de un Programa en Ensamblador</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850464474</link>
         <description><![CDATA[<div>En el código hay una serie de elementos que aparecerán en todos los programas, se adjunta una imagen de ejemplo en el bloque. La estructura más general de un módulo fuente es:</div><ul><li>Sección de datos. Viene identificada por la directiva .data. En esta zona se definen todas las variables que utiliza el programa.</li><li>Sección de código. Se indica con la directiva .text, y sólo puede contener código o datos no modificables.&nbsp;</li></ul><div>De estas dos secciones la única que obligatoriamente debe existir es la sección .text (o sección de código).&nbsp;<br><br><br><br><br><br><br><br></div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/826ff159153ffa771e9b18005c29f2da/Listado1_1.JPG" />
         <pubDate>2021-10-28 06:01:55 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850464474</guid>
      </item>
      <item>
         <title>Instrucciones</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850476004</link>
         <description><![CDATA[<div>Las instrucciones son representaciones mnemotécnicas del juego de instrucciones del procesador.</div><div><br></div><div>Etiqueta : Mnemónico Operando / s /* Comentario */</div><div><br>Ejemplo:</div><pre>main : ldr r1, puntero_var1 /* r1 &lt;- &amp; var1 */</pre><div><br></div><ul><li>Etiqueta, si aparece, debe estar formado por una cadena alfanumérica.&nbsp;</li><li>Mnemónico. Está formado por caracteres alfabéticos (entre 1 y 11 caracteres).</li><li>Operando/s indica dónde se encuentran los datos. Puede haber 0, 1 o más operandos en una instrucción.&nbsp;</li><li>Comentario es opcional&nbsp; y debe comenzar con la secuencia /* y acabar con */ .</li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2021-10-28 06:08:47 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850476004</guid>
      </item>
      <item>
         <title>Categorías de Instrucciones</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850519025</link>
         <description><![CDATA[<div>Podemos agrupar el conjunto de instrucciones del as, según el tipo de función que realice el microprocesador:&nbsp;</div><ul><li>Instrucciones de Transferencia de Datos.&nbsp;</li><li>Instrucciones Aritméticas.&nbsp;</li><li>Instrucciones de Manejo de Bits.&nbsp;</li><li>Instrucciones de Transferencia de Control.&nbsp;</li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2021-10-28 06:33:49 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850519025</guid>
      </item>
      <item>
         <title>Datos</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850524223</link>
         <description><![CDATA[<div><br>Para representar números tenemos 4 bases.&nbsp;</div><ul><li>Base Decimal, no lleva ningún delimitador especial.&nbsp;</li><li>Base Hexadecimal, que indicaremos con el prefijo 0x.&nbsp;</li><li>Base Binaria, que emplea el prefijo 0b antes del número en binario.&nbsp;</li><li>Base Octal, que usaremos en raras ocasiones y se especifica con el prefijo 0.&nbsp;</li></ul><div><br></div><div>Para representar caracteres y cadenas emplearemos las comillas simples y las comillas dobles respectivamente.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1427125942/e9be812dadbdd07c98d270dff293fb5d/datos.jpg" />
         <pubDate>2021-10-28 06:36:54 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850524223</guid>
      </item>
      <item>
         <title>Símbolos</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850526801</link>
         <description><![CDATA[<div>Se pueden ubicar tanto en la sección de datos como en la de código.&nbsp; En la zona de datos, las etiquetas pueden representar variables, constantes y cadenas. En la zona de código podemos usar etiquetas de salto, funciones y punteros a zona de datos.</div>]]></description>
         <enclosure url="" />
         <pubDate>2021-10-28 06:38:27 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850526801</guid>
      </item>
      <item>
         <title>Directivas</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850559066</link>
         <description><![CDATA[<div>Las directivas más frecuentes en el as son:</div><ul><li>Directivas de asignación.</li><li>Directivas de control.</li><li>Directivas de operando.</li><li>Directivas de Macros.</li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2021-10-28 06:55:52 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850559066</guid>
      </item>
      <item>
         <title>Como Ensamblar y Linkar un Programa</title>
         <author>gilbertoespericueta19</author>
         <link>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850569758</link>
         <description><![CDATA[<div>Se realiza con el programa Gnu Assembler, con el siguiente comando:</div><pre>as -o nombreprograma.o nombreprograma.s</pre><div><br>El as genera un fichero nombreprograma.o. Para montar (linkar) hay que hacer:</div><pre>gcc -o nombreprograma nombreprograma.o</pre><div><br>Una vez hecho ésto, ya tenemos un fichero ejecutable (nombreprograma) que podemos ejecutar o depurar con el gdb.<br><br><strong><em>NOTA:</em></strong><em> Los comandos y nombres son sensibles a las mayúsculas.</em></div>]]></description>
         <enclosure url="" />
         <pubDate>2021-10-28 07:01:23 UTC</pubDate>
         <guid>https://padlet.com/gilbertoespericueta19/lat0ih4yyx044rg6/wish/1850569758</guid>
      </item>
   </channel>
</rss>
