Вы находитесь на странице: 1из 6

ACADEMIA: INGENIERÍA APLICADA ISC – DIV.

INGENIERIA EN
SISTEMAS COMPUTACIONALES

MATERIA: LENGUAJE DE INTERFAZ

PRÁCTICA 0: INICIANDO

GRUPO: 5601
Evidencias:
Programas ensamblados:

Ejecución de los programas:


Hola mundo:
Hora del día:

Palíndromo:
Programas Comentados:
Programa 1 – Hola Mundo:

.MODEL small ;define atributos del modelo de memoria small

.STACK 100h ;crea el segmento de pila con tamaño 100h


.DATA ;crea el segmento de datos donde se declaran las variables
HelloMessage DB 'Hello, world',13,10,'$' ;se declara el mensaje y 10,13
define los saltos de línea, así como
el signo $ es para terminar la
cadena

.CODE ;segmento código (instrucciones)


.startup ;inicialización del programa
ax,@data ;mueve la variable @data al registro ax(acumulador)
ds,ax ;mueve el contenido en ax al registro ds(segmento de
datos)
ah,9 ;función cadena de impresión
mov dx,OFFSET HelloMessage ; función que obtiene la dirección del
mensaje
int 21h ;petición de función al bios
mov ah,4ch ;termina programa, código salida AL
int 21h ; petición de función al bios
END ;finalización del programa

Programa 2 – Hora del día:


MODEL Small ;modelo de memoria small

STACK 100h ;segmento de pila tamaño 100h


DATASEG ;segmento de datos, donde declaras variables
Tiempo DB '¿ Es de mañana o de tarde (M/T) ?$' ;mensaje a mostrar
BuenosDias DB 'Buenos días, Mundo',13,10,'$' ;mensaje a mostrar con
saltos de linea definidos y terminación de cadena ‘$’
BuenasTardes DB 'Buenas tardes, Mundo',13,10,'$' ;mensaje a mostrar con
saltos de linea definidos y terminación de cadena ‘$’
CODESEG ;crea segmento de codigo
Inicio: mov ax,@data ;directivas simplificadas moviendo @data al registro ax
mov ds,ax ;mueve ax al registro ds ‘segmento de datos’
mov dx,OFFSET Tiempo ;dirección del mensaje
mov ah,9 ;cadena de impresion

int 21h ;peticion de funcion al bios


mov ah,1 ;permite capturer lo que el usuario teclea
int 21h ;peticion de funcion al bios
cmp al,'m' ;comparacion registro al con caracter ‘m’
jz AM ; si ;salta si es cero de si a AM
cmp al,'M' ;comparación registro al con carácter ‘M’
jz AM ; salta si es cero a AM
mov dx,OFFSET BuenasTardes ;direccionamiento al mensaje
jmp MostrarMensaje ;salto a rutina mostrarmensaje
AM: mov dx,OFFSET BuenosDias ;direccionamiento al mensaje
MostrarMensaje: mov ah,9 ;rutina de impresión de mensaje
int 21h ;petición de función al bios
mov ah,4Ch ;terminacion del programa
int 21h ;petición de función al bios
END Inicio ;termina rutina inicio

Programa 3 – Palíndromo:
MODEL Small ;modelo de memoria small
STACK 100h ;segmento de pila tamaño 100h
DATASEG ;segmento de datos, donde declaras variables
LongitudMaxima EQU 1000 ;define registro longitudmaxima
CadenaAInvertir DB LongitudMaxima DUP (?) ;mensaje a mostrar valor indefinido
de espacio en la memoria
CadenaInvertida DB LongitudMaxima DUP (?);mensaje a mostrar valor indefinido de
espacio en la memoria
Inicio: mov ax,@data ;directivas simplificadas moviendo @data al registro ax
mov ds,ax ;mueve ax(acumulador) al registro ds ‘segmento
de datos’

mov ah,3Fh ;para leer el archivo


mov bx,0 ;mueve el 0 al registro bx
mov cx,LongitudMaxima ;mover LongitudMaximan a registro cx, direcciona lo que
entra
mov dx,OFFSET CadenaAInvertir ;funcion obtiene direccion de CadenaInvertir
int 21h ; petición de función al bios

and ax,ax ;si ambos registros comparados son 1, el resultado es 1.


jz Salir ; salta si es cero a rutina Salir
mov cx,ax ;mueve registro ax a registro cx
push cx ;apila en registro cx
mov bx,OFFSET CadenaAInvertir ;Funcion obtiene direccion de CadenaInvertir
mov si,OFFSET CadenaInvertida ;Funcion obtiene direccion de CadenaInvertida
add si,cx ;añade el registro cx a si
dec si ;decrementa si
Lazo: mov al,[bx] ;mueve registro bx a al
mov [si],al ;mueve registro al, a registro si
inc bx ;incrementa registro bx
dec si ;decrementa si
loop Lazo ;repite directiva Lazo

pop cx ;retira el contenido en el registro cx


mov ah,40h ;para escribir en arhivo
mov bx,1 ;el registro bx tiene el valor 1
mov dx,OFFSET CadenaInvertida ;Funcion obtiene direccion del mensaje
CadenaInvertida
int 21h ;petición de función al bios

Salir: mov ah,4Ch ;terminacion del programa


int 21h ;petición de función al bios
END Inicio ;termina rutina inicio