martes, 30 de enero de 2018

Emulador 8086


Emulador 8086

Una vez instalado queda de la siguiente forma


1.programa hecho en clases





2 programa


3. programa Hecho en clases









Con inicializaciones;




Con inicializaciones...   
un programa sin inicializaciones







   
Programa de multiplicacion:

programa visto en blog 
abecedario





 programas hechos en clase ;



uso de registros :


uso de registro n.2



programa 3 en clase 






REGISTROS
Registros De Propósito General 

  • AX (Acumulador): a menudo conserva el resultado temporal después de una operación aritmética o lógica.
  • BX (Base): Se utiliza para guardar la dirección base de listas de datos en la memoria.
  • CX (Contador): Contiene el conteo para ciertas instrucciones de corrimientos y rotaciones, de iteraciones en el ciclo loop y operaciones repetidas de cadenas.
  • DX (Datos): Contiene la parte más significativa de un producto después de una multiplicación; la parte más significativa del dividendo antes de la división.


Registros Apuntadores y de Índices 

  • SP (Apuntador de pila): Contiene el desplazamiento con respecto al segmento de pila del tope de la pila del programa. El registro SP se emplea para direccionar datos en la pila cuando se ejecutan las instrucciones push y pop y cuando se llama o se regresa de un procedimiento mediante las instrucciones: call y ret.
  • BP (Apuntador de base): Contiene el desplazamiento con respecto al segmento de pila de datos almacenados en la pila de un programa.
  •  DI (Índice destino): Contiene el desplazamiento con respecto al segmento extra de un elemento de una cadena o arreglo.
  • SI (Índice fuente): Contiene el desplazamiento con respecto al segmento de datos de un elemento de un arreglo o cadena.
  • IP (Apuntador de instrucciones): Contiene siempre el desplazamiento con respecto al segmento de código de la localidad de memoria que contiene la siguiente instrucción que va a ejecutar el microprocesador


Requisitos de bandera

Overflow
  • NV (Apagado): No hay desbordamiento
  • OV (Encendido): Si lo hay
  • Direction
  • UP: Hacia adelante
  • DN: Hacia atras
Interrupts
  • DI: Desactivadas
  • EI: Activadas
Sign
  • PL: Positivo
  • NG: Negativo
Zero
  • NZ: No es cero
  • ZR: Si lo es
Auxilary carry
  • NA: No hay acarreo auxiliar
  • AC: Hay acarreo auxiliar
Parity
  • PO: Impar
  • PE: Paridad par
Carry
  • NC: No hay acarreo
  • CY: Si lo hay

miércoles, 24 de enero de 2018

Curso ensamblador vídeo #1

Que tipos de lenguajes tenemos o conocemos?


python,java,c#, etc estos conocidos como lenguaje de ALTO NIVEL lo mas parecido al lenguaje humano 


C conocido como un lenguaje NIVEL INTERMEDIO

ENSAMBLADOR    Bajo Nivel  cada instrucción de ensamblador es igual a lenguaje maquina 


Lenguaje Maquina   lenguaje de máquina o código máquina es el sistema de códigos 1ºinversamenteproporcional interpretable por un sistema microprogramable, como el microprocesador de una computadora o el microcontrolador de un autómata.

Los procesadores hablan lenguajes binarios no habla español. :v



el lenguaje ensamblador tiene como caracteristicas ser muy tedioso al momento de modificar una linea de programa 

EVOLUCION EN LENGUAJE

Habla de la evolucion de la arquitectura y  su lenguaje y ampliacion de sus bits que funciona diferente una evolucion importante es en el 2009 donde se trabaja al fin con un sistema de 64 bits 

tambien habla sobres que estos procesadores trabajan con 4 segmentos 
RS,SC,Pilas,Datos.

Estos tienen la cualidad de tener rapidos procesamientos 

ax= seria como cuando tenemos algun variable o almacenar  no solo el tiene el poder de alamacenar
bx =Registros bae
Cx=Sera como un contador al mero estilo ciclica 
Dx=Datos


Estos son muy usados lo mas priorizados se puede decir 


Tambien nos propone que AX esta dividido por 8 bits donde 
AH = 8 bits superiores   
                                                         AL= 8 bits inferiores  puede parecer que son independientes 
si el valor de ax se modifica estos por consecuencia tambien lo ara.
ya que son de son de 16 bits cada registro se puede aplicar a los otros 3

aquí la descripción gráfica




Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual. 

Registro CS.(ACUMULADOR)
 El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.

Registro DS. (BASE)
La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte específico en el segmento de datos. 

Registro SS.(PILA)
El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS.
Registros ES.(DATOS)

 Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES está asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada. 







martes, 23 de enero de 2018

Unidad I: Introducción al lenguaje ensamblador

1.1 Importancia de la programación en lenguaje ensamblador


empezaremos conociendo que es el lenguaje ensamblador que utilizaremos y algunos conceptos básicos del mismo:
 Definición: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador.

La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.


1.2 El procesador y sus registros internos

Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética.



 Los registros son direccionable por medio de un nombre.


 Los bits por convención, se numeran de derecha a izquierda, como en: ... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0



Los registros internos del procesador se puede clasificar en 6 tipos diferentes
1. Registros de segmento
2. Registros de propósito general
3. Registros de apuntadores
4. Registros de banderas
5. Registros de Puntero de instrucción
6. Registros de Pila


Registros de segmento
Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria paradireccionamiento conocida como el segmento actual

Registro CS. El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.

 Registro DS. La dirección inicial de un segmento de datos de programa es almacenada en el registro DS.
 En términos sencillos, esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte específico en el segmento de datos.

 Registro SS. El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. 
El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS.

 Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que está siendo direccionada. 

Registros ES. Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria.

 En este contexto, el registro ES está asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.


 Registros FS y GS. Son registros extra de segmento en los procesadores 80386 y posteriores. Registros de 

miércoles, 8 de noviembre de 2017

FIGURAS 3D.....;3

Una alternativa para las librerias pygame . open.GL seria
from visual  import*
box()

este peque;o ejemplo de figuras elaboradas casi como predeterminado

 imagen:


Esta se puede manipular con el click derecho se mueve al lado que deseas con un peque;o codigo




Una vez instalada la Libreria PYGAME se puede ejecutar  aqui el archivo.








Aqui nuestro primer programa.....


import pygame
from pygame.locals import *

from OpenGL.GL import *
from OpenGL.GLU import *

verticies = (
    (1, -1, -1),
    (1, 1, -1),
    (-1, 1, -1),
    (-1, -1, -1),
    (0,0,1)

    )

edges = (
    (4,0),
    (4,1),
    (4,2),
    (4,3),
    (0,1),
    (0,3),
    (2,1),
    (2,3)

    )


def Cube():
    glBegin(GL_LINES)
    for edge in edges:
        for vertex in edge:
            glVertex3fv(verticies[vertex])
    glEnd()


def main():
    pygame.init()
    display = (800,600)
    pygame.display.set_mode(display, DOUBLEBUF|OPENGL)

    gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)

    glTranslatef(0.0,0.0, -5)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        glRotatef(1, 3, 1, 1)
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
        Cube()
        pygame.display.flip()
        pygame.time.wait(10)


main()







martes, 12 de septiembre de 2017

Programas Figuras

Programas Figuras
 
Muestra una figura de forma circulo
from tkinter import *  # Importa el móduloventanap =Tk()
ventanap.config(bg="skyblue")
ventanap.geometry("500x500")

ventanap.title("ejemplo circulo")
def ejecutar(f):
    ventanap.after(200,f)

def circulo (ventanap):
    circulo = Canvas(width=210, height=210, bg='skyblue')
    circulo.pack(expand=YES, fill=BOTH)
    circulo.create_oval(20, 20, 300, 300, width=5, fill='purple')


botoncir=Button(ventanap, text="ver circulo",command=lambda: ejecutar(circulo(ventanap)))
botoncir.pack()

ventanap.mainloop()





Aqui muestra una figura llamada rectangulo

from tkinter import *  # Importa el móduloventanap =Tk()
ventanap.config(bg="skyblue")
ventanap.geometry("500x500")

ventanap.title("ejemplo cuadrado")
def ejecutar(f):
    ventanap.after(200,f)

def rectangulo(ventanap):
    rectangulo = Canvas(width=210, height=210, bg='white')
    rectangulo.pack(expand=YES, fill=BOTH)
    rectangulo.create_rectangle(10, 10, 200, 200, width=5, fill='pink')

botoncir = Button(ventanap, text="ver cuadrado", command=lambda: ejecutar(rectangulo(ventanap)))
botoncir.pack()
ventanap.mainloop()




Muestra una imagen Linea


from tkinter import *  # Importa el móduloventanap =Tk()
ventanap.config(bg="skyblue")
ventanap.geometry("500x500")

ventanap.title("ejemplo cuadrado")
def ejecutar(f):
    ventanap.after(200,f)

def linea (ventanap):
    linea = Canvas(width=210, height=210, bg='yellow')
    linea.pack(expand=YES, fill=BOTH)
    linea.create_line(0, 200, 200, 0, width=10, fill='white')
    linea.create_line(0, 0, 200, 200, width=10, fill='white')

botoncir = Button(ventanap, text="ver cuadrado", command=lambda: ejecutar(linea(ventanap)))
botoncir.pack()
ventanap.mainloop()




Muestra la imajen en una pantalla linea

#!/usr/bin/env python#  -*- coding: utf-8 -*-from tkinter import *  # Importa el móduloventanap =Tk()

ventanap.config(bg="skyblue")
ventanap.geometry("500x500")
ventanap.title("Hacer Circulo ")
ventanah =Toplevel(ventanap)
ventanah.protocol("WM_DELETE_WINDOW", "onexit")

def ejecutar(f):
    ventanah.after(200, f)


def rectangulo(ven):
    ventanah.deiconify()
    rectangulo = Canvas(ventanah,width=210, height=210, bg="pink")
    rectangulo.pack(expand=YES, fill=BOTH)
    rectangulo.create_rectangle(10, 10, 200, 200, width=3, fill='skyblue')

def ocultar(ventana):

    ventanah.withdraw()





Muestra una imajen desplegando una ventana hija

#!/usr/bin/env python#  -*- coding: utf-8 -*-from tkinter import *  # Importa el móduloventanap =Tk()

ventanap.config(bg="skyblue")
ventanap.geometry("500x500")
ventanap.title("Hacer Circulo ")
ventanah =Toplevel(ventanap)
ventanah.protocol("WM_DELETE_WINDOW", "onexit")

def ejecutar(f):
    ventanah.after(200, f)


def circulo(ven):
    ventanah.deiconify()
    circulo = Canvas(ventanah,width=210, height=210, bg='skyblue')
    circulo.pack(expand=YES, fill=BOTH)
    circulo.create_oval(20, 20, 300, 300, width=5, fill='purple')


def ocultar(ventana):
    ventanah.withdraw()


boton2= Button(ventanah, text="Cerrar", command=lambda: ejecutar(ocultar(ventanah)))
boton2.pack()
botonrec = Button(ventanap, text=" Cuadrado",command=lambda: ejecutar (circulo(ventanap)))
botonrec.grid(row=1, column=1)

ventanah.withdraw()#mostrar la imajen en la pantallaventanap.mainloop()


Muestra una imajen en ventana hija

#!/usr/bin/env python#  -*- coding: utf-8 -*-from tkinter import *  # Importa el móduloventanap =Tk()

ventanap.config(bg="skyblue")
ventanap.geometry("500x500")
ventanap.title("Hacer Linea ")
ventanah =Toplevel(ventanap)
ventanah.protocol("WM_DELETE_WINDOW", "onexit")

def ejecutar(f):
    ventanah.after(200, f)


def linea(ven):
    ventanah.deiconify()
    linea = Canvas(ventanah,width=210, height=210, bg='yellow')
    linea.pack(expand=YES, fill=BOTH)
    linea.create_line(0, 200, 200, 0, width=10, fill='white')
    linea.create_line(0, 0, 200, 200, width=10, fill='white')

def ocultar(ventana):
    ventanah.withdraw()


boton2= Button(ventanah, text="Cerrar", command=lambda: ejecutar(ocultar(ventanah)))
boton2.pack()
botonrec = Button(ventanap, text=" Linea ",command=lambda: ejecutar (linea(ventanap)))
botonrec.grid(row=1, column=1)

ventanah.withdraw()#mostrar la imajen en la pantallaventanap.mainloop()




Siguiente programa muestra en pantalla hija donde se han colocado la tres figuras 




from tkinter import *  # Importa el móduloventanap =Tk()

ventanap.config(bg="royalblue")
ventanap.geometry("500x500")
ventanap.title("Hacer Circulo ")
ventanah =Toplevel(ventanap)
ventanah.protocol("WM_DELETE_WINDOW", "onexit")

def ejecutar(f):
    ventanah.after(300, f)

def rectangulo(ven):
    ventanah.deiconify()
    rectangulo = Canvas(ventanah, width=200, height=200, bg="gold")
    rectangulo.pack(expand=YES, fill=BOTH)
    rectangulo.create_rectangle(10, 10, 200, 200, width=3, fill='skyblue')


def circulo(ven):
    ventanah.deiconify()
    circulo = Canvas(ventanah,width=300, height=300, bg='magenta')
    circulo.pack(expand=YES, fill=BOTH)
    circulo.create_oval(10, 10, 200, 200, width=5, fill='purple')

def linea (ven):
    ventanah.deiconify()
    linea = Canvas(ventanah,width=210, height=210, bg='darkblue')
    linea.pack(expand=YES, fill=BOTH)
    linea.create_line(0, 200, 200, 2, width=10, fill='ivory')
    linea.create_line(0, 0, 000, 000, width=10, fill='fuchsia')
def ocultar(ventana):
    ventanah.withdraw()

boton2= Button(ventanah, text="Cerrar", command=lambda: ejecutar(ocultar(ventanah)))
boton2.pack()
botoncirculo = Button(ventanap, text=" Circulo",command=lambda: ejecutar (circulo(ventanap)))
botoncirculo.grid(row=1, column=1)

botonrectangulo = Button(ventanap, text=" Rectangulo",command=lambda: ejecutar (rectangulo(ventanap)))
botonrectangulo.grid(row=2, column=1)

botonlinea= Button(ventanap, text=" Linea",command=lambda: ejecutar (linea(ventanap)))
botonlinea.grid(row=3, column=1)

ventanah.withdraw()#mostrar la imajen en la pantallaventanap.mainloop()



siguiente programa se ah modificado e insertado 2 figuras mas , cada imagen se abrira

en una ventana hija independiente .

Codigo Fuente:



#!/usr/bin/env python#  -*- coding: utf-8 -*-from tkinter import *  # Importa el móduloventanap =Tk()

ventanap.config(bg="royalblue")
ventanap.geometry("500x500")
ventanap.title("Hacer figuras en ventanas hijas indep ")

ventanah1 =Toplevel(ventanap)
ventanah2 =Toplevel(ventanap)
ventanah3 =Toplevel(ventanap)
ventanah4 =Toplevel(ventanap)
ventanah5 =Toplevel(ventanap)

ventanah1.protocol("WM_DELETE_WINDOW", "onexit")
ventanah2.protocol("WM_DELETE_WINDOW", "onexit")
ventanah3.protocol("WM_DELETE_WINDOW", "onexit")
ventanah4.protocol("WM_DELETE_WINDOW", "onexit")
ventanah5.protocol("WM_DELETE_WINDOW", "onexit")

def ejecutar(f):
    ventanah1.after(300, f)
    ventanah2.after(300, f)
    ventanah3.after(300, f)
    ventanah4.after(300, f)
    ventanah5.after(300, f)

def mostrar (ventana):
        ventana.deiconify ()

def rectangulo(ven):
    ventanah1.deiconify()
    rectangulo = Canvas(ventanah1, width=300, height=300, bg="gold")
    rectangulo.pack(expand=YES, fill=BOTH)
    rectangulo.create_rectangle(10, 10, 300, 300, width=3, fill='skyblue')

def circulo(ven):
    ventanah2.deiconify()
    circulo = Canvas(ventanah2,width=300, height=300, bg='magenta')
    circulo.pack(expand=YES, fill=BOTH)
    circulo.create_oval(20, 20, 200, 300, width=5, fill='purple')

def linea (ven):
    ventanah3.deiconify()
    linea = Canvas(ventanah3,width=210, height=210, bg='darkblue')
    linea.pack(expand=YES, fill=BOTH)
    linea.create_line(0, 200, 200, 2, width=10, fill='ivory')
    linea.create_line(0, 0, 000, 000, width=10, fill='fuchsia')

def queso (vent):
    queso=Canvas (ventanah4, width=300  ,height=200,bg="skyblue"  )
    queso.pack(expand=YES, fill=BOTH)
    queso.create_arc(10,10,190,190,start=270,extent=90, fill="gold")
    ventanah4.deiconify()


def arco (ven):
    arco=Canvas(ventanah5, width=300,height=200,bg="white"  )
    arco.pack(expand=YES, fill=BOTH)
    xy=10,10,190,190    arco.create_arc(xy,start=0,extent=270, fill="blue")
    ventanah5.deiconify()


def ocultar(ventana):
        ventanah1.withdraw()
        ventanah2.withdraw()
        ventanah3.withdraw()
        ventanah4.withdraw()
        ventanah5.withdraw()



botoncirculo = Button(ventanap, text=" Circulo",command=lambda: ejecutar (circulo(ventanap)))
botoncirculo.grid(row=1, column=1)

botonrectangulo = Button(ventanap, text=" Rectangulo",command=lambda: ejecutar (rectangulo(ventanap)))
botonrectangulo.grid(row=2, column=1)

botonlinea= Button(ventanap, text=" Linea",command=lambda: ejecutar (linea(ventanap)))
botonlinea.grid(row=3, column=1)

botonarco= Button(ventanap, text=" Arco",command=lambda: ejecutar (arco(ventanap)))
botonarco.grid(row=4, column=1)

botonqueso = Button(ventanap, text=" Queso ",command=lambda: ejecutar (queso(ventanap)))
botonqueso.grid(row=5, column=1)


boton2= Button(ventanah1, text="Cerrar", command=lambda: ejecutar(ocultar(ventanah1)))
boton2.pack()
boton2= Button(ventanah2, text="Cerrar", command=lambda: ejecutar(ocultar(ventanah2)))
boton2.pack()
boton2= Button(ventanah3, text="Cerrar", command=lambda: ejecutar(ocultar(ventanah3)))
boton2.pack()



Aqui se muestra abiertas todas ala vez cada una contiene su boton CERRAR





miércoles, 6 de septiembre de 2017

Programas en clase (Videos)



UTILIZAMOS LA FUNCION  def  PARA DAR INSTRUCCIONES 



Aqui se muestra una suma de 2 funciones.



Aqui se puede guardar en funciones y dar el mismo resultado:




















Ejemplo siguiente:





Aqui se puede guardar en funciones y dar el mismo resultado
Siguiente Programa:
Aqui se multlipica 2 numeros






Siguiente programa:

Imprime la palabra python 2 veces por medio la funcion 




Siguiente programa:

Reproduce 5 veces la palabra de acuerdo a al formula 






Siguiente programa;



ejemplo siguiente



































Segunda Unidad

Objetivo General del Curso conocer la arquitectura de un gestor de base de datos y sus caracteristicas 2.1. Características del DBMS...