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