martes, 4 de abril de 2017

Programa #7

;================================================================
 ; PROGRAMA : pe14_col
 ; FUNCION : imprime un texto con las letras de colores
  ; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
  ; FECHA : Mi?rcoles 30 marzo 2017
;================================================================

 ; DECLARACION DE CONSTANTES

CR EQU 13 ; Constante CR (Retorno de carro) En decimal o
 LF EQU 10 ; Constante LF (Salto de l?nea) en hex es igual
 BIOS EQU 10H ; Definicion de constantes o simbolos
 DOS EQU 21H
 TEXTO EQU 3
 FIN EQU 4C00H

 ; DECLARACION DEL SEGMENTO DE DATOS

 DATOS SEGMENT                                                   ; Inicio del segmento de datos

     TITULO DB 'ENSAMBLADOR'                          ; Texto a imprimir
 COLORES
 DB 01001110B ; Atributo de 'E' los numeros binarios se pueden convertir a hexa
 DB 01101111B ; Atributo de 'N' siendo dos digitos hexa el primero representa el
 DB 00110001B ; Atributo de 'S' fondo y el segundo el texto.
 DB 01011100B ; Atributo de 'A'
 DB 00110001B ; Atributo de 'M'
 DB 01011111B ; Atributo de 'B'
 DB 01101011B ; Atributo de 'L'
 DB 01011100B ; Atributo de 'A'
 DB 01101111B ; Atributo de 'D'
 DB 01001110B ; Atributo de 'O'
 DB 00110001B ; Atributo de 'R'

 DATOS ENDS ; Fin del segmento de datos

 ; DECLARACION DEL SEGMENTO DE PILA

PILA SEGMENT STACK                                         ; Inicio del segmento de pila

    DB 64 DUP('PILA')                                               ; Asignar espacio
   
    PILA ENDS                                                           ; Fin del segmento de pila

    ;====================================
 ; DECLARACION DEL SEGMENTO DE CODIGO
 ;=====================================

 CODIGO SEGMENT                                                ; Inicio del segmento de código

 pe14_col PROC FAR                                                  ; Inicio procedimiento pe14_col

 ASSUME CS:CODIGO,DS:DATOS,SS:PILA           ; Indicar segmentos
 MOV AX,DATOS                                                       ; Inicializar correctamente el
 MOV DS,AX                                                               ; registro de datos
 MOV AX,TEXTO                                                       ; Establecer modo de texto 80x25 16 colores
 INT BIOS                                                                     ; Interrupción BIOS pantalla (10H)
 MOV CX,11                                                                 ; Bucle (11 caracteres)
 XOR SI,SI                                                                     ; Contador de caracteres (SI=0)

 BUCLE:
 PUSH CX                                                                      ; Guardar CX (contador de bucle) en pila
 MOV DX,SI                                                                   ; DX=SI (DX=contador)
 ADD DX,35                                                                    ; Columna=35+contador
 MOV DH,12                                                                   ; Establecer fila (12)
 CALL COLOCA                                                             ; Colocar el cursor
 MOV AL,[SI+OFFSET TITULO]                                  ; Obtener caracter
 MOV BL,[SI+OFFSET COLORES]                               ; Obtener atributo
 CALL COLOR                                                                 ; Imprimir caracter y atributo
 POP CX                                                                             ; Recuperar CX (contador de bucle)
 INC SI                                                                                ; Incrementar contador o puntero
 LOOPNZ BUCLE                                                              ; Repetir bucle mientras CX no sea 0

 MOV AH,8                                                                         ; Esperar tecla
 INT DOS                                                                             ; Interrupcion servicios del DOS (21H)
 XOR DX,DX                                                                       ; Situar cursor en 0,0 (DH=0 y DL=0)
 CALL COLOCA                                                                 ; Interrupcion servicios del DOS (21H)
 MOV AX,FIN                                                                      ; Fin del programa
 INT DOS                                                                              ; Interrupcion servicios del DOS (21H)
 pe14_col ENDP                                                                    ; Fin del procedimiento pe14_col

  ;----------------------------------------------------------------------
 ; Definicion del procedimiento COLOR, que imprime un caracter en color
 ; Pasar en AL el codigo del caracter, y en BL el atributo
 ;----------------------------------------------------------------------
 COLOR PROC                                                        ; Principio del procedimiento COLOR
 MOV AH,9                                                              ; Servicio que escribe caracter y atrib
 XOR BH,BH                                                            ; Numero de pagina de video (BH=0)
 INT BIOS                                                                 ; Interrupcion BIOS pantalla (10H)

 RET ; Retornar
 COLOR ENDP                                                          ; Fin del procedimiento COLOR
 ;----------------------------------------------------------------------
 ; Definici?n del procedimiento COLOCA, que situa el cursor en la pantalla
 ; Pasar en DH la fila y en DL la columna
 ;----------------------------------------------------------------------
 COLOCA PROC                                                      ; Principio del procedimiento COLOCA
 MOV AH,2                                                               ; Servicio que coloca el cursor
 XOR BX,BX                                                             ; Numero de pagina de video (BH=0)
 INT BIOS                                                                  ; Interrupcion BIOS pantalla (10H)
 RET                                                                            ; Retornar
 COLOCA ENDP                                                        ; Final del procedimiento COLOCA

 CODIGO ENDS                                                         ; Fin del segmento de codigo

 END pe14_col                                                             ; Fin del codigo e indicar direccion comienzo


Programa #6

;===================================================================
 ; PROGRAMA : pe08_clp
 ; FUNCION : BORRA PANTALLA Y POSICIONA CURSOR.
 ; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
 ; FECHA : Miércoles 30 marzo 2017
 ;===================================================================

 ; DECLARACION DE CONSTANTES

 CR EQU 13                                                ; Constante CR (Retorno de carro)
 LF EQU 10                                                 ; Constante LF (Salto de l?nea)
 TECLADO_8 EQU 8
 IMPRIMIR_9 EQU 9
 FIN_4C00H EQU 4C00H                           ;fializa el programa y regresa al DOS
 DOS_21H EQU 21H
 BIOS_10H EQU 10H
 TAB EQU 09H
 BELL EQU 07H

 ; DECLARACION DEL SEGMENTO DE DATOS

 DATOS SEGMENT
 RENGLON DB 0
 COLUMNA DB 0
 MENSAJE DB CR,LF,'POSICION (x,y), del mensaje: Hola Mundo !'
 DB 'DESPUES DE BORRAR PANTALLA.',CR,LF,'$'
 DATOS ENDS

 ; DECLARACION DEL SEGMENTO DE PILA

 PILA SEGMENT STACK
     DW 100 DUP('0') ;DW: describe palabra
 PILA ENDS

 ; DECLARACION DEL SEGMENTO DE CODIGO

 CODIGO SEGMENT

     pe08_clp PROC FAR ; Inicio procedimiento pe08_cls

 ASSUME CS:CODIGO,DS:DATOS,SS:PILA

 MOV AX,DATOS                                            ; AX=Direcci?n del segmento de datos
 MOV DS,AX                                                    ; DS=AX. Indicar el segmento de datos
 LEA DX,MENSAJE                                         ; DS:DX = direcci?n de MENSAJE
 CALL LIMPIA_PANTALLA

 CALL POSICIONA_CURSOR                        ; Llama a procedimiento par posionar cursor.

 MOV AH,IMPRIMIR_9                                   ; Funci?n DOS para escribir texto en pantalla
 INT DOS_21H                                                   ; Llamar a la interrupci?n del DOS

 MOV AX,FIN_4C00H  ; Fin del programa
 INT DOS_21H


 pe08_clp ENDP                                                    ; Fin del procedimiento EJEMPLO

  LIMPIA_PANTALLA PROC NEAR
 MOV AX,01000H                                                ; Establecer modo texto y CLS
 MOV BH,6AH                                                      ; Colores de fondo  y texto .
 MOV CX,0000H                                                   ; Desde el inicio de pantalla
 MOV DX,484FH                                                   ; Hasta el fin de la pantalla Reng (48)72 col(79)4F
 INT BIOS_10H                                                      ; Interrupci?n que llama al BIOS
 RET
 LIMPIA_PANTALLA ENDP

 POSICIONA_CURSOR PROC NEAR
 MOV AH,02                                                           ; Servicio para Fija posicion del Cursor
 MOV BH,00                                                           ; Numero de pagina o pantalla
 MOV DH,RENGLON
 MOV DL,COLUMNA
 INT BIOS_10H
 RET

 POSICIONA_CURSOR ENDP

 CODIGO ENDS

END pe08_clp




Programa #5

;==================================================================
 ; PROGRAMA : pe07_cur
 ; FUNCION : Posiciona el cursor en cordenada determinada.
  ; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
  ; FECHA : Mi?rcoles 30 marzo 2017
 ;==================================================================

 ; DECLARACION DE CONSTANTES

 CR EQU 13                                      ; Constante CR (Retorno de carro)
 LF EQU 10                                       ; Constante LF (Salto de línea)
 TECLADO_8 EQU 8
 IMPRIMIR_9 EQU 9
 FIN_4C00H EQU 4C00H                    ;fializa el programa y regresa al DOS
 DOS_21H EQU 21H
 BIOS_10H EQU 10H
 TAB EQU 09H
 BELL EQU 07H

 ;======================================
 ; DECLARACION DEL SEGMENTO DE DATOS
 ;======================================
 DATOS SEGMENT
 RENGLON DB 0
 COLUMNA DB 0
 MENSAJE DB CR,LF,'POSICION (x,y), del mensaje: Hola Mundo !',CR,LF,'$'
 DATOS ENDS

 ; DECLARACION DEL SEGMENTO DE PILA

 PILA SEGMENT STACK
     DW 100 DUP('0')                            ;DW : describe palabra
 PILA ENDS

 ; DECLARACION DEL SEGMENTO DE CODIGO

 CODIGO SEGMENT

 pe07_cur PROC FAR                         ; Inicio procedimiento pe06_cls

 ASSUME CS:CODIGO,DS:DATOS,SS:PILA

 MOV AX,DATOS                               ; AX=Dirección del segmento de datos
 MOV DS,AX                                      ; DS=AX. Indicar el segmento de datos
 LEA DX,MENSAJE                            ; DS:DX = dirección de MENSAJE
 CALL LIMPIA_PANTALLA

 CALL POSICIONA_CURSOR             ; Llama a procedimiento par posionar cursor.

 MOV AH,IMPRIMIR_9                        ; Función DOS para escribir texto en pantalla
 INT DOS_21H                                    ; Llamar a la interrupción del DOS

 MOV AX,FIN_4C00H                          ; Fin del programa
 INT DOS_21H

 pe07_cur ENDP                                  ; Fin del procedimiento EJEMPLO

  LIMPIA_PANTALLA PROC NEAR
 MOV AX,01000H                                ; Establecer modo texto y CLS
 MOV BH,6AH                                     ; Colores de fondo (negro=0) y texto (verde=A).
 MOV CX,0000H                                  ; Desde el inicio de pantalla
 MOV DX,484FH                                  ; Hasta el fin de la pantalla Reng (48)72 col(79)4F
 INT BIOS_10H                                    ; Interrupci?n que llama al BIOS
 RET
 LIMPIA_PANTALLA ENDP

 POSICIONA_CURSOR PROC NEAR
 MOV AH,02                                        ; Servicio para Fija posicion del Cursor
 MOV BH,00                                        ; Numero de pagina o pantalla
 MOV DH,RENGLON
 MOV DL,COLUMNA
 INT BIOS_10H
 RET

 POSICIONA_CURSOR ENDP
 CODIGO ENDS
END pe07_cur




Programa #4

;=====================================================================
 ; PROGRAMA #4:  : pe06_cls
 ; FUNCION : LIMPIAR PANTALLA
 ; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
 ; FECHA : Miércoles 29 marzo 2017
;======================================================================
FIN_4C00H EQU 4C00H
DOS_21H EQU 21H
BIOS_10H EQU 10H

;====================================
; DECLARACION DEL SEGMENTO DE PILA
;====================================
    PILA SEGMENT STACK
    DW 100 DUP('0')
    PILA ENDS

;======================================
; DECLARACION DEL SEGMENTO DE CODIGO
;======================================
     CODIGO SEGMENT

 pe06_cls PROC FAR                     ; Inicio procedimiento pe06_cls

 ASSUME CS:CODIGO,SS:PILA

 CALL LIMPIA_PANTALLA              ; Llama a procedimiento par limpiar pantalla.

 MOV AX,FIN_4C00H                     ; Fin del programa
 INT DOS_21H

 pe06_cls ENDP                             ; Fin del procedimiento EJEMPLO

 LIMPIA_PANTALLA PROC NEAR
 MOV AX,01000H                           ; Establecer modo texto y CLS
 MOV BH,6AH                                ; Colores de fondo (negro=0) y texto (verde=A).
 MOV CX,0000H                             ; Desde el inicio de pantalla
 MOV DX,484FH                             ; Hasta el fin de la pantalla Reng (48)72 col(79)4F
 INT BIOS_10H                               ; Interrupci?n que llama al BIOS
 RET
 LIMPIA_PANTALLA ENDP

 CODIGO ENDS

 END pe06_cls




Programa #3

;======================================================================
 ; PROGRAMA #3: Pe04_hol.
 ; FUNCION : ESCRITURA DE 3 FRASES EN PANTALLA ECHA CON PROCEDIMIENTOS
 ; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
 ; FECHA : Miércoles 29 marzo 2017
;======================================================================

CR EQU 13                       ; Constante CR (Retorno de carro) 
LF EQU 10                        ; salto de linea


DATOS SEGMENT            ; Inicio del segmento de datos     
    
    MENSAJE1 DB CR,LF,'Yesenia Guerrero ',CR,LF,'$'
    MENSAJE2 DB 'carrera iNG. SISTEMAS COMPUTACIONALES',CR,LF,'$'
    MENSAJE3 DB '6 SEMESTRE ',CR,LF,'$'

DATOS ENDS                      ; Fin del segmento de datos         

; DECLARACION DEL SEGMENTO DE PILA
    
PILA SEGMENT STACK     ; Inicio del segmento de pila
    
    DB 64 DUP('PILA')           ; Inicialización de la pila
    
PILA ENDS                            ; Fin del segmento de pila

; DECLARACION DEL SEGMENTO DE CODIGO

    CODIGO SEGMENT         ; Inicio del segmento de código
    Pe04_hol PROC FAR         ; Inicio procedimiento Pee2_letreros
    
ASSUME CS:CODIGO,DS:DATOS,SS:PILA ; Asignar segmentos

        MOV AX,DATOS         ; AX=Dirección del segmento de datos
        MOV DS,AX                 ; DS=AX. Indicar el segmento de datos
        
        LEA DX,MENSAJE1
        CALL ESCRIBE
        
        LEA DX,MENSAJE2
        CALL ESCRIBE
        
        LEA DX,MENSAJE3
        CALL ESCRIBE
       
    
        MOV AX,4C00H          ; Función para terminar el programa
        INT 21H          
    
    
 Pe04_hol ENDP    

 ESCRIBE PROC
   MOV AH,9                        ;  función DOS escribe el texto en la pantalla
   INT 21H                            ; interrupcion
   RET                                  ; Retorna donde se quedo
 ESCRIBE ENDP 

CODIGO ENDS          

END  Pe04_hol 


Programa #2

;======================================================================
 ; PROGRAMA #2: 4 mensajes
 ; FUNCION : ESCRITURA DE 4 FRASE EN PANTALLA
 ; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
 ; FECHA : Mi?rcoles 23 marzo 2017
;======================================================================

CR EQU 13                               ; Constante CR (Retorno de carro)
LF EQU 0Ah                             ;salto de linea


DATOS SEGMENT                  ; Inicio del segmento de datos   
  
    MENSAJE1 DB CR,LF,'Yesenia Guerrero ',CR,LF,'$'
    MENSAJE2 DB 'carrera iNG. SISTEMAS COMPUTACIONALES',CR,LF,'$'
    MENSAJE3 DB '6 SEMESTRE ',CR,LF,'$'
    MENSAJE4 DB 'CEL:8681619330 ',CR,LF,'$'

DATOS ENDS                            ; Fin del segmento de datos     

;====================================
; DECLARACION DEL SEGMENTO DE PILA
;====================================
  
PILA SEGMENT STACK         ; Inicio del segmento de pila
  
    DB 64 DUP('PILA')               ; Inicialización de la pila
  
PILA ENDS                                ; Fin del segmento de pila

;======================================
; DECLARACIÓN DEL SEGMENTO DE CODIGO
;======================================

    CODIGO SEGMENT             ; Inicio del segmento de c?digo
    Pee2_letreros PROC FAR       ; Inicio procedimiento Pee2_letreros
  
ASSUME CS:CODIGO,DS:DATOS,SS:PILA             ; Asignar segmentos

        MOV AX,DATOS               ; AX=Dirección del segmento de datos
        MOV DS,AX                       ; DS=AX. Indicar el segmento de datos
      
        LEA DX,MENSAJE1
        CALL ESCRIBE
      
        LEA DX,MENSAJE2
        CALL ESCRIBE
      
        LEA DX,MENSAJE3
        CALL ESCRIBE
      
        LEA DX,MENSAJE4
        CALL ESCRIBE
      
  
        MOV AX,4C00H              ; Función para terminar el programa
        INT 21H         
  
  
 Pee2_letreros ENDP   

 ESCRIBE PROC
   MOV AH,9                           ; función DOS escribe el texto en la pantalla
   INT 21H                               ; interrupcion
   RET                                     ; Retorna donde se quedo
 ESCRIBE ENDP

CODIGO ENDS         

END  Pee2_letreros   


miércoles, 29 de marzo de 2017

Programa #1

;======================================================================
 ; PROGRAMA #1: HolaMundo
 ; FUNCION : ESCRITURA DE UNA FRASE EN PANTALLA
 ; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
 ; FECHA : Miércoles 22 marzo 2017
;======================================================================

CR EQU 13                           ; Constante CR (Retorno de carro)
LF EQU 0Ah                         ;salto de linea


DATOS SEGMENT              ; Inicio del segmento de datos  
 
MENSAJE DB CR,LF,' ! Hola Mundo !',CR,LF,'$'

DATOS ENDS                        ; Fin del segmento de datos
    
;====================================
; DECLARACIÓN DEL SEGMENTO DE PILA
;====================================
 
PILA SEGMENT STACK       ; Inicio del segmento de pila
 
DB 64 DUP('PILA')                 ; Inicialización de la pila
 
PILA ENDS                              ; Fin del segmento de pila

;========================================
; DECLARACION DEL SEGMENTO DE CÓDIGO
;========================================

CODIGO SEGMENT             ; Inicio del segmento de c?digo
Pe01_hol PROC FAR             ; Inicio procedimiento p1_hola
 
ASSUME CS:CODIGO,DS:DATOS,SS:PILA                  ; Asignar segmentos

    MOV AX,DATOS               ; AX=Dirección del segmento de datos
    MOV DS,AX                       ; DS=AX. Indicar el segmento de datos
    LEA DX,MENSAJE            ; DS:DX = dirección de MENSAJE
    MOV AH,9                          ; Función DOS para escribir texto en pantalla
    INT 21H                               ; Llamar a la interrupción del DOS
    MOV AX,4C00H                 ; Función para terminar el programa
    INT 21H        
 
 
Pe01_hol ENDP      

CODIGO ENDS        

END Pe01_hol