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.
1 comentarios:
.MODEL tiny
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
; 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
.DATA
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.
.CODE
INICIO: ; aquí está la etiqueta inicio
mov dx, OFFSET 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, OFFSET 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, OFFSET 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.
END
Este si funciona
Publicar un comentario
Suscribirse a Enviar comentarios [Atom]
<< Inicio