ENSAMBLADOR

    Introducción a la Organización del Ordenador Usando Ensamblador con un Raspberry Pi

    Subsistema del Ordenador

    *Subsistema del Ordenador*

    [Introduction to Computer OrganizationARM Assembly Language Using the Raspberry Pi] ( http://bob.cs.sonoma.edu/IntroCompOrg-RPi/frontmatter-1.html ) es un libro electrónico y gratuito que nos enseña cómo funciona el hardware, a bajo nivel, de un ordenador desde el punto de vista del programador.

    Para ello, se basa en uno de nuestros “juguetes” favoritos: Raspberry Pi, con Raspbian y usando lenguaje ensamblador para la arquitectura de la CPU de dicho dispositivo: ARM.

    Nov 16, 2017
    ProgramaciónHardwareRaspberry-Pi

    Tutorial sobre ensamblador para ARM

    ARM assembly

    *ARM assembly*

    Mientras la arquitectura x86/x64 es la reina del microprocesador para ordenadores personales, ARM la es para dispositivos móviles y de bajo consumo. El entender el sistema a bajo nivel no es quizás uno de los requisitos para un programador web, pero sí lo es para escritores de exploits, o conducir tareas de ingeniería inversa. En este caso, tener un buen control y entendimiento del lenguaje ensamblador es esencial.

    May 27, 2017
    Programación

    Aprender a programar un Terminator y a Bender de Futurama (o también como aprender a programar un MOS 6502)

     

    https://cyberhades.ams3.cdn.digitaloceanspaces.com/imagenes/32125758245_bc0c0846b1_o_opt.jpg 

    Link

    Con el auge de la IA ya sabemos que Skynet está cerca y con ella los famosos Terminator. Como todos sabéis los Terminator están programados con este procesador así que es el momento perfecto para aprender a programar un MOS 6502 y así poder re-programarlo y convertirlo en un Roomba. También nos puede ayudar a programar a nuestro querido Bender de Futurama como podéis ver en la imagen que encabeza este post.

    Jan 5, 2017
    MicroHistoriaElectrónicaRetrocomputerConsolas

    Aprende ensamblador dibujando pixeles

    box-256.png

    Aprender a jugando es probablemente la mejor forma de aprender. Esto es aplicable, yo diría, que a cualquier materia. En este caso la idea es aprender ensamblador o más bien la “forma de pensar” cuando nos sentamos a escribir código en ensamblador, ya que dependiendo de la arquitectura dicho lenguaje varía, pero las formas y metodología es prácticamente la misma.

    En box-256.com podemos pasar un buen rato jugando con un sistema ficticio de 8bits, con 256 bytes de memoria, 16 colores y pantalla de 16x16. En éste, nuestro objetivo es reproducir exactamente el juego de pixeles de la parte inferior de la column output con el número mínimo de ciclos de CPU.

    Apr 12, 2016
    JuegosProgramaciónRetrocomputer

    Introducción a la programación ensamblador para Amiga

    reaktor_amiga.png

    Amiga, un viejo conocido de Cyberhades y amado incondicionalmente por el que escribe, fue un ordenador revolucionario a mediados/finales de los 80s, principalmente por el potencial gráfico y el sistema operativo AmigaOS.

    Desde Reaktor nos traen una entrada muy didáctica sobre como programar en ensamblador para dicho sistema.

    La entrada comienza con la preparación del sistema, en el que usa el emulador FS-UAE (por lo que no necesitas tener un Amiga físicamente), la ROM Kickstart 1.3 y Vasm como ensamblador. A partir de ahí nos muestran unos trucos para la depuración del código, explicación de ciertas parte del código que usa como ejemplo.

    Oct 18, 2015
    RetrocomputerProgramación

    Destripando una instrucción en lenguaje ensamblador X86

    CheatSheet.png

    La función más importante en un desensamblador es la conversión o recomposición de las instrucciones en lenguaje ensamblador a partir de los códigos de operacion (OP / operation code).

    En la arquitectura X86, a diferencia de otras, la longitud en bytes de una instrucción, varía dependiendo de la instrucción en sí y de los operandos sobre las que ésta actúa.

    Últimamente, gracias en entre otros a proyectos como Capstone hemos visto el lanzamiento de desensambladores de todo tipo, así como la migración o adaptación de desensambladores previamente existentes a este motor.

    Aug 4, 2015
    ClasesProgramación

    Introducción a la arquitectura y programación sobre ARM

    arm.jpg

    Cada vez son más los dispositivos que salen al mercado con procesadores ARM. No sólo teléfonos móviles y tabletas, sino dispositivos embebidos y pequeños como Raspberry Pi, Beaglebone, etc también incorporan dicha arquitectura.

    Si estás interesado en aprender más sobre ARM, este tutorial está dividido en dos partes: Introduction to ARM y Efficient C for ARM.

    El índice de la primera parte: Introduction to ARM, es el siguiente:

    Y el de la segunda: Efficient C for ARM:
    Aug 13, 2014
    Programación

    Conversor de códigos de operación a instrucciones ensamblador online

    cenigma.png

    Hemos visto en otras ocasiones desensambladores y ensambladores online que no permiten tanto escribir nuestro código como el subir un fichero binario y obtener el resultado. En este caso la herramienta de la que os hablo, por ahora, sólo nos permite escribir código en hexadecimal (opcodes - códigos de operación), y ésta la convierte a las instrucciones ensamblador a las que dichos códigos corresponden.

    La herramienta se llama CEnigma y usa el framework de desensamblado quizás más moderno, Capstone. Gracias a ello, CEnigma es capaz de convertir nuestra entrada a 8 arquitecturas distintas: Arm, Arm64 (Armv8), Mips, PowerPC, Sparc, SystemZ, XCore & Intel, con distintos modos dependiendo de la arquitectura elegida.

    Jul 30, 2014
    Programación

    Vídeo tutoriales sobre introducción a la programación en ensamblador

    SpeakAssemblySmall.png

    Aquí tenéis una buena colección de vídeos muy cortos y específicos sobre programación en ensamblador x86 (Windows). Son tutoriales de iniciación muy instructivos. Tratan desde instalación del entorno que necesitas para seguir los ejemplos,  conceptos básicos, pero indispensables en el entorno ensamblador, hasta ejemplos específicos de diferentes instrucciones.

    El autor de los vídeos Rasim Muratovic, usa como base para los mismos el libro Assembly Language for x86 Processors.

    Jun 3, 2014
    Programaciónvideos

    Simulador de ensamblador de 8 bits

    8bitsimulator.png

    Esta es otra pequeña joyita con la que me he topado y que a alguno le traerá buenos recuerdos del pasado.

    Simple 8-bit Assembler Simulator es pues eso, un simulador de ensamblador de 8 bits. Está basado en NASM, provee una sintaxis simplificada y emula el funcionamiento de un procesador x86. La CPU obviamente es de 8 bits y además disponemos de un mapa de memoria de 256 bytes, así como de 4 registros de propósito general. Las instrucciones y los operadores ocupan 1 byte.

    Mar 28, 2014
    Programación

    Compilador interactivo de C/C++

    gccexplorere.png

    Cuando haces ingeniería inversa a un binario (del cual no dispones del código fuente), no es sólo importante tener conocimientos de ensamblador, la pila, montículo (heap), registros, etc sino también es importante conocer los pequeños trucos y patrones que usa el compilador/es a la hora de generar el código binario.

    ¿Cómo se traduce una instrucción if? ¿y un switch? ¿bucles? ¿operaciones con punteros? ¿arrays? ¿construtores/destructores en C++? ¿Intel, ARM? etc

    Mar 9, 2014
    Programación

    Aprende ensamblador de una manera fácil y segura

    debugger.gif

    Para aprender a programar en ensamblador y sentir el hardware un poco más cerca, nada mejor que empezar con una arquitectura sencilla, con pocas instrucciones y simple.

    El proyecto YASP es un entorno de desarrollo de ensamblador totalmente funcional basado en la web, es decir, todo lo que necesitas es un navegador para poder usarlo.

    YASP provee de un ensamblador real, emulador y depurador, además de simulador de hardware sencillo. Es un entorno ideal para aprender y practicar sin temor a romper nada.

    Feb 22, 2014
    HardwareProgramación

    Introducción al ensamblador del 6502

    asm6502

    Hace un tiempo publicamos una entrada con el mismo título que esta, donde os hablamos sobre un tutorial sobre la programación en ensamblador del microprocesador 6502.

    La razón de está entrada es que Jorge Acereda ha hecho una traducción íntegra de dicho tutorial en nuestra lengua.

    Si el inglés se interpuso entonces en tu camino, ya no tienes excusa para aprender un poco de ensamblador y 6502

    Oct 11, 2013
    HardwareProgramación

    Disponible el código fuente de la mítica demo "Second Reality" de Future Crew + análisis del mismo

    Antes de empezar, vamos a deleitarnos otra vez con la mejor demostración gráfica de todos los tiempos:

    httpv://youtu.be/rFv7mHTf0nA

    Second Reality fue una "demo" programada por Future Crew para la demoparty Assembly 93. Después de ganarla pasó a la posteridad por su gran calidad en la programación de efectos gráficos (no falta ni uno) y de la música.

    Pues los chicos de Future Crew han celebrado su 20 aniversario de la forma que más nos gusta a los geek como nosotros, publicando el código fuente original de la demo que puedes descargar aquí (el código se publicó el 30 de Julio de este mismo año.). Aunque ya tiene algún tiempo (1993), es interesante analizar la forma en la cual crearon esos fantásticos efectos y aprender de ellos.

    Aug 26, 2013
    HackingRetrocomputerMúsicaProgramación

    Microhistorias: la pantalla de la muerte (kill screen) de otro juego clásico, Galaga, y como superarla

    Galaga

    Galaga, foto Wikipedia

    La mayoría de juegos clásicos arcade tienen su propia kill screen. Normalmente aparece cuando hemos llegado a un nivel 255 y pasamos al 256, dando en casi todos los casos errores del tipo overflow con resultados inesperados y muy curiosos. En CyberHades ya hemos hablado de algunas como la del mítico Pac-Man y Donkey Kong. Pero lo mejor es que hay gente muy geek que no se ha conformado con llegar a estas pantallas y ver qué ocurre, también han encontrado soluciones a nivel de código (la mayoría modificando el emulador MAME) para poder superarlas.

    May 28, 2013
    HackingMicroHistoriaRetrocomputerJuegos

    Introducción a la programación en ensamblador x64 (PDF)

    x64RegisterSet

    Si te ha costado casi toda una vida aprender más o menos a programar en ensamblador para x86 ;) (como es mi caso), ahora tienes que ir preparándote para programar en x64. Es imprescindible aprenderlo si sueles programar y quieres sacar el máximo partido a esta arquitectura (por ejemplo insertar parte de tu código en ensamblador x64 en tus programas). También es útil si tienes que hacer debugging o desensamblar programas.

    Apr 6, 2013
    Recursos InformáticaHardwareEbookProgramación

    Desarrolla tu propio sistema operativo para Raspberry Pi

    raspberry-pi

    Para aquellos que os interese la programación sistemas operativos, nada mejor que empezar sobre una plataforma sencilla y por su sencillez y precio nada como un Raspberry Pi.

    En este link de la Universidad de Cambridge podemos encontrar un curso de como crear un sistema operativo simple sobre un Raspberry Pi usando lenguaje ensamblador. Aunque para el curso no se necesitan conocimientos previos sobre sistemas operativos, a bajo nivel o incluso conocimientos de ensamblador, sí que se aconseja el menor tener conocimientos sobre programación.

    Sep 3, 2012
    ProgramaciónHardwareLinux

    Introducción al ensamblador del 6502

    asm6502 Los que sigáis el blog desde hace algún tiempo ya sabréis que nos gusta la programación retro, es decir, programación de tecnología antigua y obsoleta que ya no se usa, pero que en su día fueron joyas.

    El motivo de esta entrada es la de hablaros sobre este tutorial de introducción al lenguaje ensamblador del microprocesador MOS 6502, chip que incluía sistemas como el Atari 2600, Commodore 64 o la consola NES entre otros.

    Jul 9, 2012
    ProgramaciónRetrocomputer

    El nuevo juego del creador de Minecraft se basa en la programación en ensamblador

    0x10c

    Pues sí, el juego llamado 0x10^c (elevado a "c") y se desarrolla en un universo de Ciencia Ficción donde un error en un ordenador hace hibernar en 1988 a toda la Humanidad hasta trillones de años en el futuro, cuando el Universo casi está desapareciendo. Tendrá batallas estelares contra la IA o incluso otros jugadores, etc, pero lo mejor es que todo el juego gira alrededor de un ordenador de 16 bits llamado DCPU-16 (el único sistema que había en 1988). Este ordenador está instalado en las naves espaciales de los jugadores  y cada una de ellas contiene un ordenador DCPU-16 totalmente funcional para controlar toda la nave y que tendremos que programar en lenguaje ensamblador.

    Apr 9, 2012
    Sci-Fi y FantasíaIAJuegosProgramación

    Introducción a la programación ensamblador en Android

    android-introduce-assembly.jpg

    Ya todos sabemos que el lenguaje de programación es Java. Luego Google liberó lo que le llaman las NDK (Native Development kit), un conjunto de herramientas y librerías que te permiten tener un poco más de control sobre tus aplicaciones. En este caso programamos en C o C++ y entre medio hemos visto también la posibilidad de programar usando lenguajes de script como Lua, Python, PHP, etc.

    En esta entrada podemos ver un tutorial compuesto por varias partes, en estos momentos 8, donde nos guían desde los más básico como preparar nuestro entorno hasta la ejecución de código ensamblador en Android usando las anteriormente mencionadas NDK, pasando una ligera introducción al ensamblador de micros ARM.

    Sep 16, 2011
    ProgramaciónAndroid

    Editor de ensamblador MIPS con simulador incluido

    mars.jpg

    MARS (MIPS Assembler and Runtime Simulator) es un IDE (entorno de desarrollo integrado) que soporta el lenguaje ensamblador MIPS y además integra un simulador de ejecución a la vez.

    Es un proyecto orientado a la enseñanza. Está escrito en Java y requiere por lo menos la versión 1.5 de éste. Algunas de las características son:

    • Depuración paso a paso
    • Permite editar múltiples ficheros (pestañas)
    • Uso de breakpoints
    • Mostrar los valores en hexadecimal o decimal
    • Línea de comandos para evaluación rápida de los programas
    • Control de velocidad de ejecución
    • Registros de coma flotante
    Para ver las características por cada versión liberada: aquí.

    Lo puedes descargar desde esta página. Y aquí tienes algo de documentación y algunos ejemplos.

    Aug 23, 2011
    Programación

    Servidor Web (sencillo) en ASM x86

    webserver 

    Muy útil para estudiar el código y comprender el funcionamiento básico de un servidor web y repasar algo de ensamblador. Sólo incluye las funciones básicas, responde a peticiones GET y permite descarga de ficheros.

    Puedes verlo y descargarlo aquí.

    Jun 6, 2011
    Recursos InformáticaProgramaciónRedes

    BareMetal OS, un sistema operativo para geeks de verdad

    baremetal-bannerBareMetal es un sistema operativo (de 16KB) para ordenadores basados en la arquitectura x86-64. Todo el SO está escrito en ensamblador, pero las aplicaciones se pueden escribir tanto en ASM como en C/C++. Está destinado sobre todo para computación avanzada (el famoso “Hello World!” en BareMetal, compilado ocupa 31 bytes), sistemas embebidos o educación.Necesitas un loader para ejecutarlo, se llama Pure64. Este lanzador es el que prepara el acceso para que BareMetal OS pueda acceder a todos los rincones de la CPU. Se incluye una imágen de 32MB con arranque para que puedas virtualizarlo también.Con la versión actual puedes acceder a librerías en C/C++ para tus aplicaciones, acceso DMA para los discos duros, soporte TCP/IP (básico), Redes (chipset Realtek 8169 e Intel 8254x),etc.Echa un vistazo a la web principal para más información.

    May 28, 2011
    HardwareProgramaciónRecursos InformáticaHacking

    Tabla de instrucciones ensamblador del Intel 80x86

    intelcodetable-es.gif

    Esto no es más que un PDF (aquí en inglés) muy bien organizado con las instrucciones de ensamblador del 80x86, los registros generales y los bits de estado o bandera (flag).

    Página original.

    Feb 17, 2011
    Programación

    El Universo Digital del IBM PC, AT y PS/2

    ciriaco

    Este libro ha sido una de mis grandes referencias dentro de este mundo de la Informática. Es una completa guía de programación (en ensamblador y lenguaje C) de sistemas para los microprocesadores 80x86 y Pentium.

    Puede que esté un poco desfasado pero aún es muy útil (e indispensable para entender el funcionamiento de esta arquitectura) si quieres programar en ensamblador y C a bajo nivel. De todas formas todos (o casi todos) los ejemplos descritos y técnicas de programación son funcionales hoy día.

    Nov 21, 2009
    ProgramaciónRecursos Informática

    Los mejores programas de depuración (debugging) y desensambladores

     

    Si te dedicas a esto de la infomática desde hace tiempo, sabrás que dominar el ensamblador implica dominar totalmente el ordenador. A veces la única forma de entender lo que realmente hace un programa es estudiar su código ensamblador, ya que de la mayoría puede que no tengas el código fuente en su lenguaje original. Otra de las grandes utilidades de usar estos programas es el análisis para la búsqueda de programas maliciosos o usarlos cómo herramientas para la ingeniería inversa.

    Estas son algunas de las mejores herramientas para desemsamblar y hacer debugging de programas:

    Dec 1, 2008
    SeguridadRecursos InformáticaProgramación