Mostrando las entradas con la etiqueta Lenguajes de interfaz. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Lenguajes de interfaz. Mostrar todas las entradas

jueves, 17 de mayo de 2018

Ejemplo de macros de compañeros en clase

Ejemplo Marco.-


Ejemplo de Melissa.-


Ejemplo Jonathan.-

Ejemplo de Edgar y Gilberto.-

Ejemplo de Sergio-.

Ejemplo de Uriel.- 

Ejemplo de Pedro, Emanuel y Lulu.-

Ejemplo Emanuel.-

Ejemplo Alma.-


Ejemplo Juan Rodolfo GT.-

Ejemplo Armando Monreal.-
Ejemplo David Mendoza.-
Ejemplo David Maldonado.-


jueves, 3 de mayo de 2018

Macros

Primero creamos un archivo de texto para cada macro, en este caso, vamos a ocupar dos..

macrosuma.txt
-------------------------------------------------------------------------------------------------------------
movimiento macro
mov ax, 0
mov bx, 0
mov ds, ax
mov es, ax
endm

suma macro p1, p2
mov ax, p1
mov bx, p2
add ax, bx
mov bx, 0
endm
--------------------------------------------------------------------------------------------------------------


macrosuma2.txt
--------------------------------------------------------------------------------------------------------------
sumas macro p1, p2
mov cx, p1
mov dx, p2
add cx, dx
mov dx, 0
endm
--------------------------------------------------------------------------------------------------------------

Estos dos documentos de texto los vamos a guardar en la siguiente dirección (en caso de que tengamos instalado el emu8086 en la carpeta por default)

C:\emu8086\inc


código del programa
--------------------------------------------------------------------------------------------------------------
include 'macrosuma.txt'        #instrucción que nos permitirá añadir los documentos de texto
include 'macrosuma2.txt'

org 100h

movimiento       
suma 3,5
sumas 4,6
ret
--------------------------------------------------------------------------------------------------------------

martes, 6 de marzo de 2018

Multiplicación número de dos dígitos con número de un dígito, TASM

.model small
.stack
.data
.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


Ejemplo maestra LOOPZ tasm

.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


Ejemplo de la maestra LOOPZ emu8086

.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,10     ;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


Ejemplo Eduardo tasm potencia de un número

.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


Ejemplo Eduardo emu8086 Potencia de un número

org 100h

.model small

.stack

.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:     ;funcion 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

lunes, 5 de marzo de 2018

Programa con loop 0 al 9 en tasm

.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


Programa con loop del 0 al 9 en emu8086

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


miércoles, 28 de febrero de 2018

Loop en tasm



Loop en emu8086



Menu en tasm

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

datos segment
    titulo db 13,10,'CAMBIAR FONDO DE PANTALLA',13,10,10,'Menu:',13,10,10,'$'
    mensaje db '1. Pantalla gris y letras blancas',13,10,'2. Pantalla verde y letras amarillas ',13,10,'3. Pantalla azul y letras celestes',13,10,'4. Pantalla morada y letras verdes',13,10,10,'Para salir, presione cualquier tecla...',13,10,'$'
datos ends

codigo segment ;segmento de codigo
assume cs:codigo, ss:pila, ds:datos
inicio:
    mov ah,0
    mov al,3h
    int 10h
   
    mov ax,0600h
    mov bh,0fh
    mov cx,0000h
    mov dx,184Fh
    int 10h
   
    mov ah,02h
    mov bh,00
    mov dh,00
    mov dl,00
    int 10h

    mov ax,datos
    mov ds,ax
    lea dx,titulo
    mov ah,9h
    int 21h
   
    lea dx,mensaje
    mov ah,9h
    int 21h
       
    mov ah,08
    int 21h
       
    cmp al,49
    je llamargris
    cmp al,50
    je llamarverde
    cmp al,51
    je llamarazul
    cmp al,52
    je llamarmorado
    jmp fin

fin:
           
mov ax,4c00h
int 21h
           
llamargris:
CALL GRISPROC
           
llamarverde:
CALL VERDEPROC
           
llamarazul:
CALL AZULPROC
           
llamarmorado:
CALL MORADOPROC
         
         
GRISPROC PROC NEAR
    mov ah,0
    mov al,6h
    int 10h
           
    mov ax,0600h
    mov bh,0fh
    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,71h
    mov cx,0000h
    mov dx,184fh
    int 10h
   
    mov ax,4c00h
    int 21h
   
RET
GRISPROC ENDP

VERDEPROC PROC NEAR
    mov ah,0
    mov al,3h
    int 10h
           
    mov ax,0600h
    mov bh,0fh
    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,2eh
    mov cx,0000h
    mov dx,184fh
    int 10h
    mov ax,4c00h
    int 21h
RET
VERDEPROC ENDP
         
AZULPROC PROC NEAR
    mov ah,0
    mov al,3h
    int 10h
   
    mov ax,0600h
    mov bh,0fh
    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,1bh
    mov cx,0000h
    mov dx,184fh
    int 10h
   
    mov ax,4c00h
    int 21h
RET
AZULPROC ENDP
         
MORADOPROC PROC NEAR
    mov ah,0
    mov al,3h
    int 10h
   
    mov ax,0600h
    mov bh,0fh
    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,5fh
    mov cx,0000h
    mov dx,184fh
    int 10h
   
    mov ax,4c00h
    int 21h
   
RET
MORADOPROC ENDP

codigo ends
end inicio






martes, 13 de febrero de 2018

Programas realizados el día 12 de febrero

Programas básicos sumas, restas, e incremento de registros




Programa donde se visualiza la bandera CF
Carry Flag (CF) - Este indicador se establece en 1 cuando se produce un desbordamiento de acarreo.
 Nota: Recordemos que al y bl son registros de 8 bits y que por lo tanto, el máximo valor decimal que pueden almacenar es 255


Programa donde se visualiza la bandera CF desbordada


Programa donde se visualiza la bandera OF
Overflow Flag (OF) - establece en 1 cuando hay un desbordamiento de signo. Por ejemplo, cuando se agrega hace la operación 100 + 50 (resultado no está en el rango -128 ... 127)



Programa donde se visualiza la bandera OF desbordada


Programa donde se visualiza la bandera ZF desbordado
ZF (cero). Indica el resultado de una operación aritmética o de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero).


Programa donde se visualiza la bandera ZF




jueves, 8 de febrero de 2018

Ejercicios de Lenguajes de interfaz

Ejercicios realizados el 8 de febrero

Primero


Segundo


Tercero

Cuarto

Quinto

Sexto


Séptimo

Octavo
Programa que muestra el abecedario

abecedario en minúsculas

Psy - Gangnam Style Psy - Gangnam Style Animated Rainbow Nyan Cat Animated Rainbow Nyan CatDancing Banana/* Start http://www.cursors-4u.com */ body, a:hover {cursor: url(http://cur.cursors-4u.net/food/foo-2/foo112.ani), url(http://cur.cursors-4u.net/food/foo-2/foo112.png), progress !important;} /* End http://www.cursors-4u.com */Animated Rainbow Nyan Cat