miércoles, 28 de febrero de 2018

Programa que maneje "Loop" en EMU8086

El Objetivo es buscar en una cadena si se encuentran las letras que desamos buscar y si estas se encuentran manda un mensaje de que si son encontradas.

org 100h
mov si, 0 ;ponemos si en 0
comienzo:
mov al, msg2[0] ;copiar la primera letra de la palabra a al
cmp msg[si],"$" ;si es el fin de la cadena mandar a final
jz final
cmp msg[si], al ;comparar si encuentra la primera letra de la cadena
jne seguir

 mov di, 1 ;poner en 1 di
 comprobar:
 mov al, msg2[di]
 mov bx, di
 cmp msg[si+bx], al ;posicion de la letra coincidente + di, comparar con la cadena
 jne seguir ;si no coincide mandar a seguir

 inc di ;incrementar di para seguir recorriendo cadena

 cmp msg2[di],"$" ;si es el fin de la cadena y el programa llego aca quiere decir que la cadena es parte de la palabra
 jz resultado

 loop comprobar ;bucle para recorrer cadena

seguir:
inc si ;para seguir recorriendo la palabra
loop comienzo ;bucle principal para recorrer palabra
resultado:
mov dx, offset msg3 ;copiar msg3 a dx
mov ah, 9 ;preparar ah con 9 para la interrupcion 21h
int 21h ;mostrar contenido en dx
final:
ret
msg db "tecnologico$"
msg2 db "tec$"
msg3 db "Si se encuentra$"



Ciclo de mensaje 5 veces

.model  small
.stack 64
.data
mensaje db 0ah, 0dh,'letrero 5 veces','$'
.code
inicio:
    mov cx, 00005
ciclo:
    mov ax, @data
    mov ds, ax
    mov dx,offset mensaje
    mov ah, 09h
    int 21h
    loop ciclo
   
    mov ah, 04ch
    int 21h
    end inicio

martes, 27 de febrero de 2018

Programa que imprime Texto en el monitor


1. Uso de Constantes:




PILA SEGMENT STACK 'STACK'
DB 100H DUP (?)
PILA ENDS

DATOS SEGMENT

mensaje db 'Luis',10,13,''Angel,10,13,'Gallegos','$'

DATOS ENDS

CODIGO SEGMENT

ASSUME CS:CODIGO, SS:PILA, DS:DATOS

INICIO:

MOV AH,06H
MOV BH,6FH
MOV CX,0000H
MOV DX,104FH
INT 10H

MOV AH,02H
MOV BH,00H
MOV DX,0000H
INT 10H

MOV AX,DATOS
MOV DS,AX
LEA DX,MENSAJE
MOV AH,9H
INT 21H

MOV AX,4C00H
INT 21H

CODIGO ENDS

END INICIO
Fin de la conversación

Escribe un mensaje...




Esquema Entidad - Relacion


Creación del esquema de Base de datos:





- Exportar a una base de datos:






- Uso y Creación de la base de datos exportada:




Interrupciones en EMU8086


- Las principales interrupciones del 8086/8088 son las siguientes:







         

Cambio de color en las pantallas con el ensamblador

1. Programa que cambia el color de la pantalla:

;Programa que Cambia el color de la pantalla - Edgar Emmanuel Mendez Ruiz

PILA SEGMENT STACK 'STACK'
     DB 100H DUP (?)
PILA ENDS

DATOS SEGMENT
              MENSAJE DB 'Se ha cambiado el color de la pantalla$'
DATOS ENDS
          
CODIGO SEGMENT
              
              ASSUME CS:CODIGO, SS:PILA, DS:DATOS

INICIO: 

       MOV AH,06H
       MOV BH,2FH
       MOV CX,0000H
       MOV DX,184FH
       INT 10H
       
       MOV AH,02H
       MOV BH,00H
       MOV DX,0000H
       INT 10H
       
       MOV AX,DATOS
       MOV DS,AX
       LEA DX,MENSAJE
       MOV AH,9H
       INT 21H

       MOV AX,4C00H
       INT 21H

CODIGO ENDS

END INICIO







2.  Programa que cambia el color de pantalla mediante opciones:


Pila segment stack 'stack' ;Segmento de la pila
     db 100h dup (?)       ; A partir de la direccion 100 de la pila.
Pila ends

  datos segment
    
      titulo db 13,10,'  CAMBIAR FONDO DE PANTALLA  ',13,10,'$'
      mensaje db 'Presione ENTER si quiere la pantalla azul ' , ' Si quiere morado, presione 2 ',13,10,' Para salir ', ' Presione cualquier tecla',13,10,'$'

  datos ends

codigo segment ;segmento de codigo
       
       assume cs:codigo, ss:pila, ds:datos

Inicio:
           ;****************************** PREPARAR PANTALLA
   mov ah,0
       mov al,3h ; Modo Texto
       int 10h   ; Interrupcion de Video
       
       mov ax,0600h ; Limpiar Pantalla
       mov bh,0fh   ; O Color de fondo negro, el color de letra blanco
       mov cx,0000h
       mov dx,184Fh
       int 10h
       
       mov ah,02h
       mov bh,00
       mov dh,00
       mov dl,00
       int 10h
       
           ;****************************** MOSTRAR MENSAJE

       mov ax,datos
       mov ds,ax
       
       lea dx,titulo
       mov ah,9h
       int 21h
       
       lea dx,mensaje
       mov ah,9h
       int 21h
       
           ;****************************** CAPTURA DE TECLAS

       mov ah,08           ; Pausa y captura de datos db espera que el usuario presiona una tecla
       int 21h

       cmp al,13           ; Verifica al presionar ENTER, el cual tiene un codigo ascii
       je llamarAzul       ; Salto Condicional jump equals opcion 1 saltar si es igual a la opcion 1
       
       
       cmp al,50           ; Ascii 50 = numero 2 compara lo que tiene el regisro ah con el ascii 50 en el reg a1
       je llamarMorado
       
       jmp fin             ; Si no escoge ni ENTER ni 2, Sale del programa

       fin:                ; Saca el mensaje por pantalla

       mov ax,4c00h
       int 21h
       
llamarAzul:
      CALL AZULPROC
      
llamarMorado:
      CALL MORADOPROC
      
           ;****************************** STORE PROCEDURE AZUL

AZULPROC PROC NEAR

         mov ah,0
         mov al,3h ; Modo Texto
         int 10h   ; Interrupcion de video
         
         mov ax,0600h ; Limpiar Pantalla
         mov bh,0fh   ; Color de fondo negro, f color de letra blanco
         mov cx,0000h
         mov dx,184Fh
         int 10h
        
         mov ah,02h
         mov bh,00
         mov dh,00
         mov dl,00
         int 10h
         
;//////////////////////////////////////         

      mov ah,06h
      mov bh,1fh     ;2fh
      mov cx,0000h
      mov dx,184fh
      int 10h
      
      mov ax,4c00h
      int 21h
RET

AZULPROC ENDP

;*****************************************STORED PROCEDURE MORADO

MORADOPROC PROC NEAR

           mov ah,06h
           mov bh,5fh        ;2fh;3 para azul, 4 para guinda, 5 morado
           mov cx,0000h
           mov dx,184fh
           int 10h
           
           mov ax,4c00h
           int 21h
           
RET

MORADOPROC ENDP


codigo ends
end inicio               ; Podemos Asignar desde se inicia PC







Actividades en TurboAssambler



1. Limpiar Pantalla:


FIN_4C00H EQU 4C00H
DOS_21H EQU 21H
BIOS_l0H equ 10H


PILA SEGMENT STACK
DW 100 DUP('0')
PILA ENDS

CODIGO SEGMENT
CLS PROC FAR
ASSUME CS:CODIGO,SS:PILA
CALL LIMPIA_PANTALLA
MOV AX,FIN_4C00H
INT DOS_21H
CLS ENDP

LIMPIA_PANTALLA PROC NEAR
MOV AX,0600H
MOV BH,9AH
MOV CX,00H
MOV DX,484FH
INT BIOS_l0H
RET
LIMPIA_PANTALLA ENDP

CODIGO ENDS
END CLS









2. Mismo Programa en EMU8086:


Pila SEGMENT STACK "STACK"
DB 100 DUP ('0')
PILA ENDS


CODIGO SEGMENT


ASSUME CS:CODIGO,SS:PILA

INICIO:


MOV AH,06H
MOV BH,9FH
MOV CX,0000H
MOV DX,104FH
INT 10h


INT 21H
MOV AX,4C00H
INT 21H



CODIGO ENDS

END INICIO






3. Cambiar Color y Mostrar Mensaje:


DATOS SEGMENT

MENSAJE DB 10,13, "SE HA CAMBIADO EL COLOR DE LA PANTALLA",10,13,"$"


DATOS ENDS

CODIGO SEGMENT

ASSUME CS:CODIGO,SS:PILA, DS:DATA

INICIO:


MOV AH,06H
MOV BH,6FH
MOV CX,0000H
MOV DX,104FH
INT 10h


MOV AH,02H
MOV BH,00H
MOV DX,0000H
INT 10h

MOV AX, DATOS
MOV DX,AX
LEA DX,MENSAJE
MOV AH,9H
INT 21H

MOV AX,4C00H
INT 21H



CODIGO ENDS

END INICIO



Registros de Punteros




IP:Puntero de instrucción (instruction pointer). 
Marca el desplazamiento de la instrucción en curso dentro del segmento de código.
Es automáticamente modificado con la lectura de una instrucción.


- Registros punteros de pila:


SP: Puntero de pila (stack pointer).
Apunta a la cabeza de la pila. Utilizado en las instrucciones de manejo de la pila.

BP: Puntero base (base pointer). Es un puntero de base, que apunta a una zona dentro de la pila dedicada al almacenamiento de datos (variables locales y parámetros de las funciones en los programas compilados).


- Registro índice:

Los registros SI y DI están disponibles para direccionamientos indexados y para sumas y restas. Que son la operaciones de punta.

SI: El registro índice de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI está asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el ESI.

DI: El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el Di está asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el EDI.






Ejemplos de uso de Constantes

Uso de Constantes en programas ensambladores distintos vistos en clase :

 Uso de Constantes en EMU8086:

-----Codigo--------.MODEL SMALL

.STACK 100H


CR EQU 13
LF EQU 10

IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H

.DATA

TEXTO DB LF,LF,CR, 'EJEMPLO DE USO DE CONSTANTES$'


.CODE segment

Inicio:


MOV AX, @DATA  
MOV DS,AX

MOV DX, OFFSET TEXTO
MOV AH, IMPRIMIR
INT DOS

MOV AX,FIN
INT DOS
END Inicio
END








2. Uso de Constantes en Turbo Assembler:

CR EQU 13
LF EQU 10

IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H

DATOS SEGMENT

    TEXTO DB 'EJEMPLO DE USO DE CONSTANTES POR EDGAR MENDEZ',CR,LF,'$'

DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP ('PILA')
PILA ENDS

CODIGO SEGMENT
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
    INICIO: MOV AX,DATOS
            MOV DS,AX
            MOV DX,OFFSET TEXTO
            MOV AH, IMPRIMIR
            INT DOS
            MOV AX,FIN
            INT DOS 
    
        CODIGO ENDS
        END INICIO




3. Funciones EMU8086:


include 'emu8086.inc'

name "Muestra"

org 100h

;Llamada a las funciones

 call suma
 call inicio
 call resta
 call final

;Funciones

inicio:

   mov ax, 1AAh
   mov bx, 13h
   ret
   
   
suma:

   add ax, 1AAh
   mov bx, 11Ch
   add ax, bx
   ret
   
resta:

   sub ax, 3h
   sub bx, 2h
   
   
final:

   mov ax, 4c00h
   int 21h
   ret
   

END


jueves, 15 de febrero de 2018

Manejadores de BD, MAriaDB




MariaDB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL (General Public License). Es desarrollado por Michael (Monty) Widenius (fundador de MySQL), la fundación MariaDB y la comunidad de desarrolladores de software libre.​ Introduce dos motores de almacenamiento nuevos, uno llamado Aria -que reemplaza con ventajas a MyISAM- y otro llamado XtraDB -en sustitución de InnoDB.


Creacion de una base de datos



miércoles, 7 de febrero de 2018

Manejadores de BD con Firebird y DBeaver

Firebird es un sistema de administración de base de datos relacional (o RDBMS) (Lenguaje consultas: SQL) de código abierto, basado en la versión 6 de Interbase, cuyo código fue liberado por Borland en 2000. Su código fue reescrito de C a C++. El proyecto se desarrolla activamente, el 18 de abril de 2008 fue liberada la versión 2.1 y el 26 de diciembre de 2009 fue liberada la versión 2.5.0 RC1. La versión 2.5.6, la más reciente de la serie 2.5, fue liberada el 04 de julio de 2016. El 19 de abril de 2016 fue liberada la versión 3.0.

A diferencias de otros manejadores ese muestra una interfaz grafica en la cual podemos crear nuestra base de datos sin necesidad de usar comando en el cmd.

1) al crear la base de datos con el comando CREATE "nombre de la base", se colocan los campos requeridos y el tipo de dato que es necesario usar al igual que su longuitud.

2) usamos el comando Insert para agregar datos a la tabla asi como se muestra acontinuacion
3) de modo que el sistema debe verse de la siguiente manera.

Manejadores de BD con XAMPP




XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor web Apache y los intérpretes para lenguajes de script: PHP y Perl. 

Te permite instalar de forma sencilla Apache en tu propio ordenador, sin importar tu sistema operativo (Linux, Windows, MAC o Solaris). Y lo mejor de todo es que su uso es gratuito 

Como verás, XAMPP es una herramienta de desarrollo que te permite probar tu trabajo (páginas web o programación por ejemplo) en tu propia computadora sin necesidad de tener que acceder a internet.

Si bien recomiendo más trabajar en forma directa en el servidor, si tienes una muy buena conexión de internet, puede que no sea tu caso, o que estés trabajando desde otra parte y te servirá de mucha utilidad.


Ejemplo de creacion de una base de datos:

1) Colocamos el nombre que le daremos a la tabla y el numero de columnas a ocupar.
 2) aqui agregamos las casillas que ocupamos colocando el tipo de dato que ocupamos y si es primary key y la longuitud del valor
 3) aqui se encuentra un resultado de una base con datos ya ingresados