lunes, 17 de marzo de 2008

Funciones de Windows Live bloqueadas para usuarios de GNU/Linux

Muchas funciones de la versión completa de Windows Live Mail, se encuentran bloqueadas si se intentan acceder desde Linux, esta es una acción bastante tonta a mi criterio porque no creo que alguien cambie de sistema operativo solo para usar estas funciones.
Si quisiéramos acceder a la versión completa desde Linux, podemos usar el User Agent Switcher de Firefox, pero creo que es mejor usar otras alternativas como Gmail.

jueves, 13 de marzo de 2008

Assembler en GNU/Linux

Hay algunas diferencias entre el ensamblador que se utiliza en Windows y el ensamblador que se utiliza en los sistemas Unix. La diferencia más importante es que no se utiliza la sintaxis de Intel sino que se utiliza la sintaxis de AT&T.

Sintaxis AT&T
- Hay que colocar el prefijo % a los registros.
- En las instrucciones de dos operandos, el primer registro es el de origen y el segundo es el de destino (al revés que en Intel).
- Se debe especificar el tamaño de los operandos con b(byte) w(word) y l(double word)
- Para especificar direccionamiento inmediato de datos se usa el prefijo $ si no se tomará como direccionamiento directo de memoria.
- Para especificar direccionamiento indirecto de memoria se usa paréntesis.

Por ejemplo:
movl %ebx $10
La l después de mov significa que la operación es de 32bits, antes del registro ebx se coloca % y antes del numero 10h se coloca $

En Linux tenemos varios ensambladores, el más utilizado es GAS(GNU Assembler) que ya lo traen la mayoría de distribuciones.
Si no quisiéramos aprender la sintaxis de AT&T hay otras opciones, una es utilizar el ensamblador NASM pero es más recomendable usar GAS y por medio de la directiva .intel_syntax podremos escribir con la sintaxis de Intel.

Recomiendo la lectura del siguiente articulo en IMB para comprender mejor las diferencias entre la sintaxis de Intel y la de AT&T.

sábado, 8 de marzo de 2008

Hola mundo! con Borland Turbo Assembler 4.1

Tenemos que tener instalado Borland Turbo Assembler y la variable de entorno PATH apuntando correctamente, para que podamos ejecutarlo desde cualquier ubicación.
El código fuente es este:
   .MODEL tiny
.CODE
org 100h
start: jmp short main
.DATA
msg db 'Hello World',0dh,0ah,0
.CODE
sout: mov cx,100h
sout1: mov dl,[bx]
inc bx
or dl,dl
jz sout2
mov ah,02h
int 21h
loop sout1
sout2: ret
main: mov bx,OFFSET msg
call sout
mov ah,4ch
int 21h
end start
Lo guardamos en un archivo con extensión asm, por ejemplo: helo.asm
Ahora ejecutamos:
tasm hello
tlink /t hello
hello