miércoles, 14 de marzo de 2018

apuntes Arquitectura de un DBMS

Abrir enlace

prog valida:


import sys
from Tkinter import *
import tkMessageBox

def validar():

       if len(ent_usuario.get()) < 6 :
         tkMessageBox.showerror('Error', 'El usuario debe tener al menos 6 caracteres')
       if (ent_usuario.get()).isalnum() == FALSE :
         tkMessageBox.showerror('Error', 'El usuario debe tener solo numeros o letras')
       if len(ent_usuario.get()) > 12 :
         tkMessageBox.showerror('Error', 'El usuario no puede tener mas de 12 caracteres')
       if len(ent_usuario.get()) > 5 and len(ent_usuario.get()) < 12 and (ent_usuario.get()).isalnum() == TRUE:
           tkMessageBox.showinfo('usuarios aceptado', 'El usuario es correcto')


ventana= Tk()
ventana.title('Validar Password')
ventana. geometry('600x400')

vp = Frame(ventana) #estamos utilizando el objeto framevp.grid(column=0, row=0, padx =(50,50), pady=(10,10))
vp.columnconfigure(0, weigh=1)
vp.rowconfigure(0, weight =1)

etiqueta = Label(vp,text='Ingrese el nombre de Usuario: ')
etiqueta.grid(row=2, column=4, padx=(20,20), pady=(20,20))

usuario = ""ent_usuario = Entry(vp, width=12, textvariable=usuario)
ent_usuario.grid(row=2, column=5)


Boton = Button(vp, text='Validar usuario', command= validar)
Boton.grid(row=2, column=6, padx=(20,20), pady=(20,20))

#etiqueta2 = Label(vp, text='Ingrese el Password: ')#etiqueta2.grid(row=4, column=4, padx=(20, 20), pady=(20, 20))
#password = ""#ent_pass = Entry(vp, width=10, show="*", textvariable=password)#ent_pass.grid(row=4, column=5)
#Boton2 = Button(vp, text='Validar passw:', command=valida2)#Boton2.grid(row=4, column=6, padx=(20, 20), pady=(20, 20))

ventana.mainloop()


martes, 13 de marzo de 2018

lunes, 12 de marzo de 2018

colores del BIOS

https://en.wikipedia.org/wiki/BIOS_color_attributes

Aportación de Jonnatan Guzman J. programa de colores en Turbo....

BIOS EQU 10H
DOS EQU 21H
FIN EQU 4C00H
TEXTO EQU 3

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


DATOS SEGMENT
    assume ds:DATOS,SS:PILA,cs:codigo


TITULO DB 'YO Y MI PAREJA '
colores db 5bh
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DATOS ENDS
codigo segment
    COLO PROC FAR
    mov AX, DATOS
       mov ds,ax
       mov ax,texto
       int bios
       mov cx,16
       xor si,si
       bucle:
       push cx
       mov dx,si
       add dx,35
       mov dh,12
       call coloca
       mov al,[si+offset titulo]
       mov bl,[si+offset colores]
       call color
       pop cx
       inc si
     
       loopnz bucle
       mov ah,8
       int dos
       xor dx,dx
       call coloca
       mov ax,fin
       int dos
       colo endp
   
    color proc
        mov ah,9
        xor bh,bh
        int bios
        ret
        color endp
    coloca proc
        mov ah,2
        xor bx,bx
        int bios
        ret
        coloca endp
        codigo ends
    end colo

Aportación Emmanuel Horta, Lourdes Brito.....programa de colores...

BIOS EQU 10H
DOS EQU 21H
FIN EQU 4C00H

.DATA
    TITULO DB 'Agnax & Alizz '
    COLORES DB 5BH
    DB 5FH
    DB 5BH
    DB 5FH
    DB 5BH
    DB 00H
    DB 0F0H
    DB 00H
    DB 09CH
    DB 09FH
    DB 09CH
    DB 09FH
    DB 09CH
    DB 00H
    DB 0CH
   
.CODE
    INICIO PROC NEAR:
    MOV AX, @DATA
    MOV DS, AX
    ;Esta parte de aqui no es necesaria
    INT BIOS
   
    MOV CX, 15
       
        BUCLE:
            ;Ponemos esto para no agarrar basura
            MOV DX,SI
            ADD DX,35 ;columna
            MOV DH, 12 ;renglon
            CALL COLOCA
            MOV AL, [SI+OFFSET TITULO]
            MOV BL, [SI+OFFSET COLORES]
            CALL COLOR
            INC SI
        LOOPNZ BUCLE
       
        MOV AH, 0
        INT DOS
        CALL COLOCA
        MOV AX, FIN
        INT DOS
   
    COLOR PROC
    MOV AH, 9
    INT BIOS
    RET
       
    COLOCA PROC
    MOV AH,2
    INT BIOS
    RET

END INICIO




Programa Usuario en Python:

import sys
from Tkinter import *
import tkMessageBox

def valida():
       #long = len(ent_usuario.get()) # NOS CONTARA EL LARGO DE LA CADENA       #Y= (ent_usuario.get()).isalnum() #VERDADERO SI CUMPLE, FALSE SI TIENE CARACTERES ESPECIALES       #print(long)       #print(Y)
       if len(ent_usuario.get()) < 6 :
         tkMessageBox.showerror('Error', 'El usuario debe tener al menos 6 caracteres')
       if (ent_usuario.get()).isalnum() == FALSE :
         tkMessageBox.showerror('Error', 'El usuario debe tener solo numeros o letras')
       if len(ent_usuario.get()) > 12 :
         tkMessageBox.showerror('Error', 'El usuario no puede tener mas de 12 caracteres')

       if len(ent_usuario.get()) > 5 and len(ent_usuario.get()) < 12 and (ent_usuario.get()).isalnum() == TRUE:
           tkMessageBox.showinfo('usuarios aceptado', 'El usuario es correcto')

       #else:       #    tkMessageBox.showinfo("usuario correcto", 'TIENE USTED ACCESO')

     #  if ent_usuario.get() == 'YOLANDA' and ent_pass.get() == '123':     #       tkMessageBox.showinfo("usuario correcto",'TIENE USTED ACCESO')
     #  else:     #       tkMessageBox.showerror('Error', 'NO TIENE ACCESO')    #except ValueError:        #tkMessageBox.showerror('Error', 'introduzca un numero')ventana= Tk()
ventana.title('Validar Password')
ventana. geometry('400x400')

vp = Frame(ventana) #estamos utilizando el objeto framevp.grid(column=0, row=0, padx =(50,50), pady=(10,10))
vp.columnconfigure(0, weigh=1)
vp.rowconfigure(0, weight =1)

etiqueta = Label(vp,text='Ingrese el nombre de Usuario: ')
etiqueta.grid(row=2, column=4, padx=(20,20), pady=(20,20))

etiqueta2 = Label(vp,text='Ingrese el Password: ')
etiqueta2.grid(row=4, column=4 , padx=(20,20), pady=(20,20))

usuario=""
ent_usuario = Entry(vp, width= 12, textvariable=usuario)
ent_usuario.grid(row=2, column=5)


password=""
ent_pass = Entry(vp,width =10, show="*", textvariable=password)
ent_pass.grid(row=4,column=5 )

Boton = Button(vp, text='Validar', command= valida)
Boton.grid(row=50, column=5, padx=(20,20), pady=(20,20))






ventana.mainloop()

domingo, 11 de marzo de 2018

Ralizar programa: (q mult números mas grandes...

 .model small ;Modelo de memoria m?s utilizado
.stack

.data        ;definición de datos(variables), donde se almacenara información
.code
   chr1  db ?
   chr2  db ?
   chr3  db ?
   r1    db ?
   r2    db ?
   ac    db 0

.startup
   ;cls
   mov ah,00h     ;Function(Set video mode)
   mov al,03      ;Mode 80x25 8x8 16
   int 10h        ;Interruption Video

   mov ah,01h     ;Function(character read)
   int 21h        ;Interruption DOS functions
   sub al,30h     ;ajustamos valores
   mov chr1,al    ;[chr1].chr2 * chr3 = ac.r1.r2
 
   mov ah,01h     ;Function(character read)
   int 21h        ;Interruption DOS functions
   sub al,30h     ;Ajustamos valores
   mov chr2,al    ;chr1.[chr2] * chr3 = ac.r1.r2
 
   mov ah,02h     ;Function(character to send to standard output)
   mov dl,'*'     ;Character to show
   int 21h
 
   mov ah,01h     ;Function(Read character)
   int 21h        ;Interruption DOS Functions
   sub al,30h     ;Transform(0dec = 30hex)
   mov chr3,al    ;chr1.chr2 * [chr3] = ac.r1.r2
 
   mov ah,02h     ;Character to send to standar output
   mov dl,'='     ;
   int 21h        ;Interruption DOS functions
 
   ;Realizamos operaci?n
 
   mov al,chr3    ;al = chr3
   mov bl,chr2    ;bl = chr2
   mul bl         ;AL = chr3*chr2 (BL*AL)
   mov Ah,0h      ;
   AAM            ;ASCII Adjusment
   mov ac,AH      ;ac = AH (Acarreo)
   mov r2,AL      ;r2 = AL       (Unidad del resultado)
 
   mov al,chr3    ;AL = chr3
   mov bl,chr1    ;BL = chr1
   mul bl         ;AL = chr1*chr3 (BL*AL)
   mov r1,al      ;r1 = AL       (Decena del resultado)
   mov bl,ac      ;BL = Acarreo anterior
   add r1,bl      ;r1 = r1+ac (r1 + Acarreo)
   mov ah,00h     ;
   mov al,r1      ;AL = r1 (Asignaci?n para el ajust)
   AAM            ;ASCII Adjustment
   mov r1,al      ;r1 = AL
   mov ac,ah      ;ac = AH (Acarreo para la Centena del resultado)
 
   ;Mostramos resultado
   mov ah,02h 
   mov dl,ac
   add dl,30h
   int 21h        ;Mostramos ac (Centena)

   mov ah,02H
   mov dl,r1
   add dl,30h
   int 21h        ;Mostramos r1 (Decena)

   mov ah,02H
   mov dl,r2
   add dl,30h
   int 21h        ;Mostramos r2 (Unidad)
.exit
end

miércoles, 7 de marzo de 2018

Aportacion de Eduardo Silva----- uso de Loop



Eduardo Silva
;Emu8086

pila segment stack 'stack'
    db 100h dup (?)
pila ends

datos segment             ;texto e instrucciones.
av db 13,10,' Presione 1 o 2 ',13,10,'$'
    msj db 13,10,' Lenguaje ensamblador ',13,10,'$'
    m db 13,10,' Lenguaje de Interfaz ',13,10,'$'
datos ends


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

    inicio:
  
        mov ax, datos
        mov ds, ax
    
lea dx,av
        mov ah,9h
        int 21h
    
        mov ah,08   ;pausa y captura datos 08 espera que el usuario presione una tecla
        int 21h
      
cmp al,49      ;verifica si presiono 1
        je pOpcion

cmp al,50      ;verifica si presiono 2
        je sOpcion    
      
jmp fin           ;finaliza en caso de no recibir respuesta de enter o 2

    fin:  
mov ax,4c00h
int 21h
                        
    pOpcion:
        CALL PO
      
    sOpcion:
        CALL SO

      
    PO PROC NEAR
        mov ah, 9h
lea dx, msj
mov cx, 12
print_LOOP:
int 21h
loop print_LOOP
mov ax,4c00h
int 21h
    RET
    PO ENDP


    SO PROC NEAR
        mov ah, 9h
lea dx, m
mov cx, 12
pLOOP:
int 21h
loop pLOOP 
mov ax,4c00h
int 21h                             
    RET
    SO ENDP


codigo ends
end inicio

lunes, 5 de marzo de 2018

Aportación de Eduardo Aquino, programa con Loop


; programa en emu8086
org 100h



.model small

.stack 64

.data



mensaje db 10,13 ,"Dame un numero",10,13,"$"

mensaje2 db 10,13 ,"Dame un la potencia",10,13,"$"

n1 db 0

n2 db 0

n3 db 0

.code



inicio:     ;función inicio



 mov ax,@data ;Movemos el segmento data a ax

 mov ds,ax ; Movemos lo que esta en ax a ds

 mov dx,offset mensaje ;Imprimimos el primer mensaje parte 1

 mov ah, 09h ;Imprimimos el primer mensaje parte 2

 int 21h ;Imprimimos el primer mensaje parte 3



 mov ah,01     ;pausa y espera a que el usuario presione una tecla

 int 21h        ;interrupción para capturar

 sub al,30h   ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero

 mov n1,al ;Movemos lo que esta en al a la variable n1

 mov n3,al  ;Movemos lo que esta en al a la variable n3



 mov ah, 09h ;imprimimos el mensaje 2 parte 1

 mov dx,offset mensaje2  ;imprimimos el mensaje 2 parte 2

 int 21h  ;imprimimos el mensaje 2 parte 3

 mov ah,01     ;pausa y espera a que el usuario presione una tecla

 int 21h           ;interrupcion para capturar

 sub al,30h     ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero

 mov n2,al     ;Guardamos lo que el usuario preciono el n2





 mov cl,al ; movemos lo que esta en al a cl para decirle al ciclo cuantas vueltas va a dar

 sub cl,1 ;le restamos 1 para que no de una vuelta de mas





call ciclo ;llamada a ciclo



ciclo:  ;Funcion

 call ciclo1 ;llamada el procediemto 1



ciclo1 proc near : ;procedimiento ciclo

  mov al,n1 ;potencia parte 1

  mov bh,n3 ;potencia parte 2

  mul bh ;potencia parte 3



  mov n1,al



  loop ciclo1 ;loop a la funcion ciclo





  mov ax,4c00h ;fin parte 1

  int 21h; fin parte 2



fin: ;funcion fin

 mov ax,4c00h      ;funcion que termina el programa

 int 21h

end inicio

Aportación David Maldonado, programa Loop de Armando Monrreal...

;Turbo

.model small
.stack 64

datos segment
    mensaje db "Programa que utiliza loop e imprime del 0 al 9",13,10,"$"
datos ends

codigo segment
  assume cs:codigo, ds:datos
inicio:
    mov ax,datos
    mov ds, ax
    mov dx,offset mensaje
    mov ah,09h
    int 21h

MOV DL, "0";se transfiere la letra 0 al registro de datos en el byte bajo
MOV CX, 10;se transfiere 10 al registro contador
PRINT_LOOP:;va a imprimir hasta acabar las 26 interaciones
       MOV AH, 02;se transifiere 02 al acumulador de byte alto
       INT 21h; se realiza la interrupcion del dato ascii leido desde el teclado
       INC DL;siguiente caracter numerico
LOOP PRINT_LOOP;continua hasta acabar las 10 vueltas
codigo ends

end inicio

Aportación de David Mendoza, LOOP en emu8086

;EMU8086
.model small .stack 64 .data mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$' repetir db 13,10,"Repitiendo el ciclo $" .code inicio proc far mov ax, @data mov ds, ax mov ah, 09 lea dx, mensaje int 21h mov ah, 01 int 21h sub al, 30h mov cl, al ciclo: mov ah, 09 lea dx, repetir int 21h loop ciclo mov ax,4c00h int 21h inicio endp end

Aportación de David Mendoza, programa Loop (turbo Assembler)

;Turbo Assembler     

.model small
.stack 64

datos segment
    mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$'
    repetir db 13,10,"Repitiendo el ciclo $"
datos ends

codigo segment                              
    assume cs:codigo, ds:datos
inicio:
    
    mov ax, datos
    mov ds, ax
    
    mov ah, 09
    lea dx, mensaje
    int 21h

    mov ah, 01
    int 21h
    sub al, 30h    
    mov cl, al
    
    ciclo:
        mov ah, 09
        lea dx, repetir
        int 21h
    loop ciclo 

    mov ax,4c00h
    int 21h                                
codigo ends
end inicio

Aportación de Loop Armando Monrreal


Programa en EMU8086---- PASAR A TURBO ASSAMBLER
org 100h

.data
    mensaje db "Programa que utiliza loop e imprime del 0 al 9",13,10,"$"

.code    
inicio:
    mov ax,@data
    mov ds, ax
    mov dx,offset mensaje
    mov ah,09h
    int 21h

MOV DL, "0";se transfiere la letra 0 al registro de datos en el byte bajo
MOV CX, 10;se transfiere 10 al registro contador
PRINT_LOOP:;va a imprimir hasta acabar las 26 interaciones
MOV AH, 02;se transifiere 02 al acumulador de byte alto
INT 21h; se realiza la interrupcion del dato ascii leido desde el teclado
INC DL;siguiente caracter numerico
LOOP PRINT_LOOP;continua hasta acabar las 10 vueltas

ret

jueves, 1 de marzo de 2018

Programa con loopz


Programa en EMU8086 -- pasar a TURBO ASSEMBLER

; uso del LOOPZ, REPETICION BASADA EN
;COMPARACION SI ES IGUAL A 0

; INTERRUPCION PARA LEER DEL TECLADO ES LA INT16H

; CUANDO USAMOS LA INT16H , EL PARAMETROA USAR ES AH = 0
; Y EL CARACTER LEIDO QUEDARA EN AL= CARACTER LEIDO


.model small
.stack 64

.data         
;mensaje1 db "instrucciones de repeticion

.code 


inicio:

   
    mov al,'>' ; caracter inicial
    mov cx,10 ;numero de veces a repetir el ciclo

leer_car:
     mov ah,0EH ;FUNCION PARA IMPRIMIR EL CARACTER AL
     int 10h    ;llama al BIOS
   
     mov ah,08     ;pausa y espera a que el usuario precione una tecla
     int 21h ;interrupcion para capturar

     
     cmp al,'S'; el caracter leeido  int 16h lo guarda en al
   
loopz leer_car ;toma en cuenta la comparacion del cmp si se cumple continua

 
    ; coloco el fin de la linea para que baje una linea y lo baje
    mov ah,0EH ; FUNCION DEL BIOS PARA IMPRIMIR CARACTER
    mov al,10
    int 10h
 
    MOV AL,13
    INT 10H
 
 
 
  mov ah,04ch ;Al terminar finaliza el programa.
  int 21h
 end inicio

Pasos para el Ejemplo 2....


Nota: tenemos tipos de campo int, int() checar eso!!!
https://drive.google.com/open?id=18hg4fVua9khlyOkQn9RBhcRjyIDV_mgW