miércoles, 13 de marzo de 2019

programa en emu8086 subcadena

programa en emu8086

programa que valida si una cadena es sub cadena de una palabra. su codigo es el siguiente.


org 100h
include 'emu8086.inc'
mov si, 0   
 
 
comienzo:
mov al, msg2[0] 

cmp msg[si],"$" 
 jz resultado2       
cmp msg[si], al
 jne seguir 


mov di, 1       

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
         


 inc di               

 cmp msg2[di],"$"     
 jz resultado


loop comprobar

seguir: 

  inc si
   
 
 
loop comienzo

   

resultado:

  mov dx, offset msg3   
  mov ah, 9           
  int 21h               
  jmp final
 
resultado2:
    mov dx, offset msg4
    mov ah, 9
    int 21h
    jmp final

final:

   
    printn ""
    printn ""
    print "presione para salir..."
    mov ah,0
    int 16h
    ret


msg db "tecnologico$"
msg2 db "gi$"

msg3 db "Si se encuentra$"
msg4 db "no se encuentra$"




capturas del programa en funcionamiento:






programa mensaje

programa que utiliza loop en emu8086.

el siguiente programa despliega el mensaje cuantas veces marque el usuario.

include "emu8086.inc"
org 100h

.data
pro db 2 dup (?) 

.code
llamar proc
    printn "" 
    print  "cuantas veces quiere repetir el mensaje: "
    call scan_num 
    mov pro[0],cl
    printn ""
    xor ax,ax
    add al,pro[0]

mensaje:
printn "mensaje"
loop mensaje
   
 
 
     
llamar endp

exit:
    printn ""
    printn ""
    print "presione para salir..."
    mov ah,0
    int 16h
    ret
define_print_string
define_print_num
define_print_num_uns
define_scan_num
end

jueves, 28 de febrero de 2019

promedio

pequeño programa que sirve para sacar promedio de una calificación de 3 materias, no obtiene resultados decimales



name "calcula el promedio de tres materias"
include "emu8086.inc"
org 100h 

.data
pro db 4 dup (?)  

.code
promedio proc
    printn ""  
    print "introduce una calificacion: "
    call scan_num  
    mov pro[0],cl
    printn ""
    print "introduce la 2da calificacion: "
    call scan_num
    mov pro[1],cl
    printn ""
    print "introduce la 3ra calificacion: "
    call scan_num
    mov pro[2],cl
    printn ""
    print "numero de materias: "
    call scan_num
    mov pro[3],cl
    xor ax,ax
    add al,pro[0]
    add al,pro[1]
    add al,pro[2]
    div pro[3]
    printn ""
    print "promedio es= "
    call print_num
      
promedio endp

exit:
    printn ""
    printn ""
    print "presione para salir..."
    mov ah,0
    int 16h
    ret
define_print_string
define_print_num
define_print_num_uns
define_scan_num

end








jueves, 31 de enero de 2019

2 diferentes formas de crear hola mundo en emu8086

 1.- en la siguiente captura se muestra la primera opción para crear el programa hola mundo:


y una captura ejecutando el programa


2.- en la siguiente captura se muestra el segundo código para crear el programa hola mundo


y aquí su ejecución




miércoles, 30 de enero de 2019

hola mundo en emu8086 mas nombre

programa hola mundo mas nombre en lenguaje ensamblador emu8086.

programa sencillo para aprender un poco de lo que es emu8086, el codigo es el siguiente:






martes, 4 de diciembre de 2018

piramide o triangulo 3d

programa que muestra en ventana un triangulo en 3d moviendose de forma aleatoria.

codigo del 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()



triangulo 3d mostrandose en pantalla al ejecutar el programa:

cubo 3d de colores

programa que despliega en ventana un cubo en movimiento de varios colores

codigo del programa:

import sys, math, pygame
from operator import itemgetter


class Point3D:
    def __init__(self, x=0, y=0, z=0):
        self.x, self.y, self.z = float(x), float(y), float(z)

    def rotateX(self, angle):
        """ Rotates the point around the X axis by the given angle in degrees. """        rad = angle * math.pi / 180        cosa = math.cos(rad)
        sina = math.sin(rad)
        y = self.y * cosa - self.z * sina
        z = self.y * sina + self.z * cosa
        return Point3D(self.x, y, z)

    def rotateY(self, angle):
        """ Rotates the point around the Y axis by the given angle in degrees. """        rad = angle * math.pi / 180        cosa = math.cos(rad)
        sina = math.sin(rad)
        z = self.z * cosa - self.x * sina
        x = self.z * sina + self.x * cosa
        return Point3D(x, self.y, z)

    def rotateZ(self, angle):
        """ Rotates the point around the Z axis by the given angle in degrees. """        rad = angle * math.pi / 180        cosa = math.cos(rad)
        sina = math.sin(rad)
        x = self.x * cosa - self.y * sina
        y = self.x * sina + self.y * cosa
        return Point3D(x, y, self.z)

    def project(self, win_width, win_height, fov, viewer_distance):
        """ Transforms this 3D point to 2D using a perspective projection. """        factor = fov / (viewer_distance + self.z)
        x = self.x * factor + win_width / 2        y = -self.y * factor + win_height / 2        return Point3D(x, y, self.z)


class Simulation:
    def __init__(self, win_width=640, win_height=480):
        pygame.init()

        self.screen = pygame.display.set_mode((win_width, win_height))
        pygame.display.set_caption("Figura de cubo 3D en python")

        self.clock = pygame.time.Clock()

        self.vertices = [
            Point3D(-1, 1, -1),            Point3D(1, 1, -1),            Point3D(1, -1, -1),            Point3D(-1, -1, -1),            Point3D(-1, 1, 1),            Point3D(1, 1, 1),            Point3D(1, -1, 1),            Point3D(-1, -1, 1)
        ]

        # Define the vertices that compose each of the 6 faces. These numbers are        #  indices to the vertices list defined above.        self.faces = [(0, 1, 2, 3), (1, 5, 6, 2), (5, 4, 7, 6), (4, 0, 3, 7), (0, 4, 5, 1), (3, 2, 6, 7)]

        # Define colors for each face        self.colors = [(255, 0, 100), (100, 0, 0), (0, 25, 0), (0, 0, 255), (0, 255, 155), (255, 5, 0)]

        self.angle = 0
    def run(self):
        """ Main Loop """        while 1:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()

            self.clock.tick(50)
            self.screen.fill((0, 32, 0))

            # It will hold transformed vertices.            \            t = []

            for v in self.vertices:
                # Rotate the point around X axis, then around Y axis, and finally around Z axis.                r = v.rotateX(self.angle).rotateY(self.angle).rotateZ(self.angle)
                # Transform the point from 3D to 2D                p = r.project(self.screen.get_width(), self.screen.get_height(), 256, 4)
                # Put the point in the list of transformed vertices                t.append(p)

            # Calculate the average Z values of each face.            avg_z = []
            i = 0            for f in self.faces:
                z = (t[f[0]].z + t[f[1]].z + t[f[2]].z + t[f[3]].z) / 4.0                avg_z.append([i, z])
                i = i + 1            # Draw the faces using the Painter's algorithm:            #  Distant faces are drawn before the closer ones.            for tmp in sorted(avg_z, key=itemgetter(1), reverse=True):
                face_index = tmp[0]
                f = self.faces[face_index]
                pointlist = [(t[f[0]].x, t[f[0]].y), (t[f[1]].x, t[f[1]].y),                             (t[f[1]].x, t[f[1]].y), (t[f[2]].x, t[f[2]].y),                             (t[f[2]].x, t[f[2]].y), (t[f[3]].x, t[f[3]].y),                             (t[f[3]].x, t[f[3]].y), (t[f[0]].x, t[f[0]].y)]
                pygame.draw.polygon(self.screen, self.colors[face_index], pointlist)

            self.angle += 1            pygame.display.flip()


if __name__ == "__main__":
    Simulation().run()


cubo mostrandose en ventana: