martes, 7 de mayo de 2019

Unidad No.3: Mejora programa # 9: Letras de colores(Versión Ingrid Sauceda)

Link del programa: https://drive.google.com/open?id=1KsfwUgoQS4RqSZGj08F7xc9KoYY4fSyC

Ejecución del programa:


Código:

include 'emu8086.inc'

Mostrar Macro Mensaje
    LEA DX,Mensaje ;mandamos el mensaje a leer
    MOV AH,9 ;usamos el servicio para mostrar en pantalla
    INT 21H
endM     

Terminar Macro
    MOV AX,4C00H
    INT 21H
endM

DATOS SEGMENT
    ENCABEZADO DB 13,10,13,09h,09h,"==============================="
    DB 13,10,13,09h,09h,"PROGRAMA QUE IMPRIME VALORES NUMERICOS DEC Y HEXA "
    DB 13,10,13,09h,09h,"================================",13,10,"$"
    ALINEAR DB 13,10,13,09h,09h
    VALOR_1 DW 41D,"$"
    VALOR_2 DW 42D,"$"
    VALOR_3 DW 43D,"$"
    VALOR_4 DW 44D,"$"
    VALOR_5 DW 45D,"$"
    VALOR_6 DW 46,"$"
    VALOR_7 DW 47,"$"
    VALOR_8 DW 48,"$"
    VALOR_9 DW 49,"$"
    VALOR_10 DW 50,"$"
DATOS ENDS


valores Macro 
    Mostrar ALINEAR
    Mostrar VALOR_1
    Mostrar VALOR_2
    Mostrar VALOR_3
    Mostrar VALOR_4
    Mostrar VALOR_5
    Mostrar VALOR_6   
    Mostrar VALOR_7
    Mostrar VALOR_8
    Mostrar VALOR_9
    Mostrar VALOR_10
endM

Titulo Macro
    Mostrar ENCABEZADO
endm

CODIGO SEGMENT
ASSUME CS: CODIGO,DS:DATOS,SS:PILA
Main PROC

MOV AX,DATOS
MOV DS,AX

Titulo
valores


Main ENDP 
Terminar
CODIGO ENDS
END Main





lunes, 6 de mayo de 2019

Unidad No.3: Mejora programa # 9: Letras de colores(Modificando emu 8086.inc)


Aportación de Carlos y Alex:



Aportación de Ambrocio y Torres:


Unidad No.3: Mejora programa # 9: Letras de colores(Version Torres)

Link del programa: https://drive.google.com/open?id=1KFSt5zVBSn3dz3Ql2JLN6o3luuAwu4Le

Ejecución:


Código:

CR EQU 13    ;Declaro retorno de carro
LF EQU 10    ;Declaro salto de linea
BIOS EQU 10H ;Declaro interrupcion 10h
DOS EQU 21H  ;Declaro interrupcion 21h
TEXTO EQU 3  ;Declaro el servicio 03 para la impresion de texto desde BIOS
FIN EQU 4C00H ;Declaro interrupcion de exit

VARIABLES SEGMENT          ;Declaro las variables
    include "emu8086.inc"
    TITULO DB "Colores_UwU" ;Un texto
    COLORES DB 01001110B   ;Una agrupacion de colores
    DB 01101111B         
    DB 01110011B
    DB 01011100B
    DB 00110001B
    DB 01011111B
    DB 01101011B
    DB 01011100B
    DB 01101111B
    DB 01001110B
    DB 01101111B
VARIABLES ENDS

VPILA SEGMENT;STACK       ;Declaro la pila
    DB 64 DUP("PILA")
VPILA ENDS

CODIGO SEGMENT
    COLO PROC FAR    ;Declaro un procedimiento
    ASSUME CS:CODIGO, DS:VARIABLES, SS:VPILA
    MOV AX,VARIABLES
    MOV DS,AX
    MOV AX,TEXTO     ;Invoco el servicio de impresion de texto
    INT BIOS         ;Ejecuto el servicio con 10h
    MOV CX,11        ;Declaro el iterador en 11
    XOR SI,SI        ;Borro SI
    BUCLE:           ;Llamo al bucle
    PUSH CX
    MOV DX,SI        ;Indico la posicion de la letra a imprimir con SI
    ADD DX,35        ;Indico la coordenada en x, la coordenada inicial es x=35
    MOV DH,12        ;Indico la coordenada en y
    CALL COLOCA      ;Llamo al sistema para que coloque el cursor donde yo quiero
    MOV AL,[SI+OFFSET TITULO] ;Le indico la letra a imprimir pasandole SI y el texto como parametros
    MOV BL,[SI+OFFSET COLORES]   ;Le indico los colores a imprimir pasandole SI y el conjunto de colores como parametros
    CALL COLOR                ;Llamo a la impresion del texto
    POP CX
    INC SI                     ;Incremento a SI para modificar la letra a imprimir y la coordenada en x
 
    LOOPNZ BUCLE
    MOV AH,8    ;08:Lee un caracter sin imprimir nada en pantalla
    INT DOS     ;Ejecuto el servicio
    XOR DX,DX   ;Limpio DX
    CALL COLOCA ;Coloco el cursor en las coordenadas x=0 y=0   
    PUT_CURSOR 2,32
    print "Colores modificado"
    PUT_CURSOR 20,20
    print "El programa a sido ejecutado correctamente"
    TERMINA        ;MACRO TERMINA
    COLO ENDP
     
    include "C:\Users\AlexG\Desktop\Tec(Sexto semestre)\Lenguajes De Interfaz\Unidad No.3\practicas\practica 9_3\libreria.inc"
 
CODIGO ENDS
END COLO




jueves, 2 de mayo de 2019

Unidad No.3: Mejora programa # 9: Letras de colores(Version Ambrocio)


Ejecución:


Código:

CR EQU 13    ;Declaro retorno de carro
LF EQU 10    ;Declaro salto de linea
BIOS EQU 10H ;Declaro interrupcion 10h
DOS EQU 21H  ;Declaro interrupcion 21h
TEXTO EQU 3  ;Declaro el servicio 03 para la impresion de texto desde BIOS
FIN EQU 4C00H ;Declaro interrupcion de exit

VARIABLES SEGMENT          ;Declaro las variables  
    include "emu8086.inc"
    TITULO DB "JUENITO_XD" ;Un texto
    COLORES DB 01001110B   ;Una agrupacion de colores
    DB 11101111B           ;0= cursos parpadeante 000=color de fondo 0000=color del texto
    DB 10110001B
    DB 01011100B
    DB 00110001B
    DB 01011111B
    DB 01101011B
    DB 01011100B
    DB 01101111B
    DB 01001110B
    DB 00110001B
VARIABLES ENDS

VPILA SEGMENT;STACK       ;Declaro la pila
    DB 64 DUP("PILA")
VPILA ENDS

CODIGO SEGMENT
    COLO PROC FAR    ;Declaro un procedimiento
    ASSUME CS:CODIGO, DS:VARIABLES, SS:VPILA
    MOV AX,VARIABLES
    MOV DS,AX
    MOV AX,TEXTO     ;Invoco el servicio de impresion de texto 
    INT BIOS         ;Ejecuto el servicio con 10h
    MOV CX,11        ;Declaro el iterador en 11
    XOR SI,SI        ;Borro SI
    BUCLE:           ;Llamo al bucle
    PUSH CX
    MOV DX,SI        ;Indico la posicion de la letra a imprimir con SI
    ADD DX,35        ;Indico la coordenada en x, la coordenada inicial es x=35
    MOV DH,12        ;Indico la coordenada en y  
    CALL COLOCA      ;Llamo al sistema para que coloque el cursor donde yo quiero
    MOV AL,[SI+OFFSET TITULO] ;Le indico la letra a imprimir pasandole SI y el texto como parametros
    MOV BL,[SI+OFFSET COLORES]   ;Le indico los colores a imprimir pasandole SI y el conjunto de colores como parametros
    CALL COLOR                ;Llamo a la impresion del texto
    POP CX
    INC SI                     ;Incremento a SI para modificar la letra a imprimir y la coordenada en x
    
    LOOPNZ BUCLE
    MOV AH,8    ;08:Lee un caracter sin imprimir nada en pantalla
    INT DOS     ;Ejecuto el servicio
    XOR DX,DX   ;Limpio DX
    CALL COLOCA ;Coloco el cursor en las coordenadas x=0 y=0     
    PUT_CURSOR 10,10
    print "Hola mundo" 
    PUT_CURSOR 20,20
    print "Estas son las coordenadas( x=20, y=20)"
    TERMINA        ;MACRO TERMINA
    COLO ENDP
       
    include "C:\Users\AlexG\Desktop\Tec(Sexto semestre)\Lenguajes De Interfaz\Unidad No.3\practicas\practica 9_2\libreria.inc"
    
CODIGO ENDS
END COLO


miércoles, 1 de mayo de 2019

Unidad No.3: Mejora programa # 9: Letras de colores


Ejecución del programa:



Código:

include 'emu8086.inc'

CUADRO MACRO XI,YI,XF,YF,COLOR
MOV AX, 0600H ;
MOV BH, COLOR ; COLOR DE FONDO Y LETRA
MOV BL, 00H
MOV CH, YI ; Y INICIAL
MOV CL, XI ; X INICIAL
MOV DH, YF ; Y FINAL
MOV DL, XF ; X FINAL
INT 10h
endM

POSICION MACRO X,Y
; **** POSICIONA EL CURSOR ********
MOV DH, Y ; POSICI[ON EN Y
MOV DL, X ; POSICI[ON EN X
MOV AH, 02
MOV BH, 00
INT 10H
ENDM

DESPLEGAR MACRO MENSAJE
MOV AH,09 ;****** MUESTRA MENSAJE *******
MOV DX,OFFSET MENSAJE
INT 21h
ENDM

DATOS SEGMENT ;SEGMENTO DE DATOS
M1 DB "I",'$'
M2 DB "V",'$'
M3 DB "A",'$'
M4 DB "N",'$'

datos ends
cincocuadros macro

cuadro 1,1,20,5,71
posicion 10,3
desplegar M1

cuadro 21,1,40,5,22
posicion 30,3
desplegar M2

cuadro 41,1,60,5,33
posicion 50,3
desplegar M3

cuadro 61,1,78,5,54
posicion 70,3
desplegar M4



endM
CODIGO SEGMENT
ASSUME CS: CODIGO,DS:DATOS,SS:PILA
PRINCIPAL PROC

MOV AX,DATOS
MOV DS,AX

cincocuadros

PRINCIPAL ENDP ;FIN DEL PROCEDIMIENTO
CODIGO ENDS ;FIN DEL SEGMENTO

END PRINCIPAL


martes, 2 de abril de 2019

Unidad No.3: Colores de la BIOS


Unidad No.3: Programa de multiplicación con macros(Ambrocio)

Link del archivo: https://drive.google.com/open?id=1vyrPVVCrXyQYBwb9mofqY4eUSx5-iERe

Ejecución:


Código:

.model small ;Modelo de memoria m?s utilizado
.stack
.data        ;definición de datos(variables), donde se almacenara información     
include "emu8086.inc"
.code
imprimir macro num 
   mov ah,02h
   mov dl,num
   add dl,30h
   int 21h   
endm 

leernum macro
   mov ah,01h     ;Function(character read) Guarda en AL
   int 21h        ;Interruption DOS functions
   sub al,30h     ;ajustamos valores
endm       

multiplica macro valor1, valor2
   mov al,valor1  ;al=5       ;unidad del segundo numero
   mov bl,valor2  ;bl=5       ;unidad del primer numero
   mul bl       ;al=25      ;multiplicar 
endm
   
suma macro valor1, valor2
   mov al,valor1      ;al=02        ;movemos el segundo resultado de la primera mult a al
   mov bl,valor2      ;bl=0         ;movemos primer resultado de la segunda mult a bl
   add al,bl      ;al=2 
endm 

separarUnidades macro
   mov ah,00h     ;ah=00        ;limpiamos el registro ah
   aam            ;ax=01 01     ;separamos de hex a dec
endm

   chr1  db ? ;primer digito
   chr2  db ? ;segundo digito
   chr3  db ? ;multiplo
   chr4  db ?
   r1    db ? ;resultado 1
   r2    db ? ;resultado 2
   r3    db ?
   r4    db ?
   ac    db 0 ;acarreo
   ac1   db 0   
 
.startup
   ;cls
   mov ah,00h     ;Function(Set video mode)
   mov al,03      ;Mode 80x25 8x8 16
   int 10h        ;Interruption Video
 
   leernum
   mov chr1,al    ;[chr1].chr2 * chr3 = ac.r1.r2
   
   leernum
   mov chr2,al    ;chr1.[chr2] * chr3 = ac.r1.r2

   print "*"

   leernum
   mov chr3,al    ;chr1.chr2 * [chr3] = ac.r1.r2
 
   leernum
   mov chr4,al    ;chr1.chr2 * [chr3] = ac.r1.r2

   print "="
   ;Realizamos operaci?n 
 
   multiplica chr4,chr2
   separarUnidades
   mov ac1,ah   ;ac1=02     ;decenas del primera multiplicacion
   mov r4,al    ;r4=05      ;unidades del primera multiplicacion
 
   multiplica chr4,chr1
   mov r3,al    ;r3=14h     ;movemos el resultado de la operacion a r3
   mov bl,ac1   ;bl=02      ;movemos el acarreo a bl
   add r3,bl    ;r3=16h     ;sumamos resultado mas acarreo
   mov al,r3    ;al=16h     ;movemos el resultado de la suma a al
   separarUnidades
   mov r3,al    ;r3=02      ;guardamos unidades en r3
   mov ac1,ah   ;ac1=0      ;guardamos decenas en ac1
 
   multiplica chr3,chr2
   separarUnidades
   mov ac,AH      ;ac=01    ;ac = AH (Acarreo)
   mov r2,AL      ;r2=0     ;r2 = AL       (Unidad del resultado)

   multiplica chr3,chr1
   mov r1,al      ;r1=8     ;r1 = AL       (Decena del resultado)
   mov bl,ac      ;bl=01    ;BL = Acarreo anterior
   add r1,bl      ;r1=9;    ;r1 = r1+ac (r1 + Acarreo)
   separarUnidades
   mov r1,al      ;r1=09    ;r1 = AL
   mov ac,ah      ;ac=0     ;ac = AH (Acarreo para la Centena del resultado)

   mov ax,0000h   ;limpiamos ax
 
   suma r3,r2
   separarUnidades
   mov r3,al      ;r3=02        ;r3 guarda las decenas del resultado final
   mov r2,ah      ;r2=0         ;r2 se utiliza como nuevo acarreo
 
   mov ax,0000h   ;''''
 
   suma ac1,r1
   suma al,r2
   separarUnidades
   mov r1,al      ;r1=01        ;r1 guarda las centenas
   mov r2,ah      ;R2=01        ;ah se sigue utilizando como acarreo
 
   mov al,r2      ;al=01        ;movemos el acarreo a al
   mov bl,ac      ;bl=00        movemos ac a bl
   add al,bl      ;al=01        ;sumamos al a bl
   ;aam            ;separamos hex a dec
   mov ac,al      ;ac=01        mov al a ac como nuestro acarreo final

   ;Mostramos resultado
   imprimir ac
   imprimir r1
   imprimir r3
   imprimir r4   
 
   DEFINE_SCAN_NUM
end