domingo, 11 de noviembre de 2012

Compilar Assembler x86 en Linux 64bits

Bueno, acá en la universidad en la que estoy de intercambio estamos intentando aprender ensamblador para procesadores 8086, así es, lo básico de lo básico.

Bueno, el primer pedo!!! Así es, el pedoo,, es que en las máquinas de la universidad, los trastos de la prehistoria corren Windows XP x86, joder. Y yo tengo sólo sistemas operativos x64.

Bien, al rendirme de usar Tasm y Tlink en Windows 7 x64 decidí por usar mi siempre fiel Ubuntu x64.

Y los problemas como siempre, de compilación y de linkeo.

Pero basta de eso, aquí te pongo los pasos para que ejecutes un Hellow World en Linux x64.


Primero, el codigo de nuestro Hellow World:
section .text

    global _start   ;must be declared for linker (ld)

_start:     ;tell linker entry point

  mov edx,len ;message length
 mov ecx,msg ;message to write
 mov ebx,1 ;file descriptor (stdout)
 mov eax,4 ;system call number (sys_write)
 int 0x80 ;call kernel

  mov eax,1 ;system call number (sys_exit)
 int 0x80 ;call kernel

section .data

msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg   ;length of our dear string

Descarga aqui.


Descargamos YASM de aqui o de su web oficial e instalamos el .deb

O para el NASM:
sudo apt-get install nasm


Ahora, podemos usar dos compiladores. NASM y YASM. El segundo es una ampliación del primero, y es el que recomiendo.

Compilamos:


yasm -f elf hello.asm



Linkeamos:


ld -m elf_i386 -s -o hello hello.o




Ejecutamos:


./hello






Recuerda, si usas NASM en lugar de YASM solo tienes que compilar así, el linkeo es igual:
nasm -f elf hello.asm





TAGS:

  • TLINK
  • TASM
  • YASM
  • NASM
  • Assembler 8086

sábado, 10 de noviembre de 2012

Corrimiento de bit controlado por PC (C#) usando chipKit/Arduino y sn74ls164

Esta es una continuación de la última entrada:
http://hzsquare.blogspot.fr/2012/10/control-de-parpadeo-de-led-con.html

Ahora por medio de ese parpadeo controlaremos el corrimiento de bits para hacer una bonita obra de arte.

Material:

  • 2 x sn74ls164 ----> "Corredor de bits" Realmente es un Shift Registers, algo así como un covertidor Serie - Paralelo, pero el uso que le daremos es otro.
  • 3 x 8L01-05-111 ------> Relay Reed Switch. Estos amigos nos ayudarán como interruptores, así podremos controlar con nuestro chipKit/Arduino voltajes mayores a los 5V usuales.
  • chipKit o Arduino
  • 19 Leds
  • 3 Resistencias 330 ohms



Descargas:


Se realizará en dos partes, primero el corrimiento de bits, y después haremos un corrimiento doble colocando dos sn74ls164 en cascada y añadiendo los relay reed switch. Para ambos casos ni la programación de la Interfaz ni el sketch del chipKit/Arduino cambian.

___________________Simple corrimiento de bits_____________________________
Aquí coloco el esquemático de las conexiones:




Esquemático pdf

El video de muestra, para que sepas que hacer:





______________Corrimiento de bits en cascada y salidas digitales______________


Aquí coloco el esquemático de las conexiones:




Esquemático pdf

Una imagen de muestra:



De la Proto

De la aplicación en C#



El video de muestra, para que sepas que hacer:




Tags:

  • MPIDE
  • chipKit
  • chipKit MAX32
  • Arduino
  • C#
  • Control de LED
  • Control de Parpadeo
  • Parpadeo sin retardo
  • blink without delay
  • Corrimiento de bits
  • sn74ls164