domingo, 31 de octubre de 2010

Hola mundo ensamblador 8086

Este es el primer programa clásico del HOLA MUNDO en ensamblador 8086. Se muestran los comentarios con un punto y coma. Lo he corrido en emu8086 Cualquier pregunta favor de ponerla en comentarios.




name "hola a todos" ;Esta línea es solo para ponerle un nombre al programa
org 100h ; El vector de interrupciones se dirige a la dirección 100h
; Qué diablos es esto? ORG 100h es obligatoria en programas COM
; porque se cargaran en memoria en la posicion CS:100

jmp etiqueta ; salta a la etiqueta inicio
; verás que esta es una sección de variables y que no deben tomarse en cuenta
; por eso hay un salto hasta la línea donde está la etiqueta inicio
dato db "Hello, World!", 0Dh,0Ah,24h ; 0Dh,0Ah,24h --> equivale a '\n' en C++
msg2 db "Hola, mundo!",0Ah,24h ; 0Ah hace el salto
msg3 db "Alo mondo!",0Ah,24h ; 0Dh hace retorna al inicio del renglón
msg4 db "Ojos pispiretos!",0Ah,24h ; db es el tipo byte para declarar palabras.

inicio: ; aquí está la etiqueta inicio
mov dx, dato ; lee el contenido de la variable dato en el registro dx.
mov ah, 09h ; para imprimir el valor, ah debe contener el 9.
int 21h ; hazlo! Lo muestra en el puerto de video

mov dx, msg2 ; lee el contenido de la variable msg2 en el registro dx.
mov ah, 09h
int 21h

mov dx, offset msg3
mov ah, 09h
int 21h

mov dx, msg4
; lee el contenido de la variable msg4 en el registro dx.
mov ah, 09h
int 21h

mov ah, 0
int 16h
;esperando presionar cualquier tecla equivale a getch()

ret ; retorna el control al sistema operativo.