domingo, 2 de abril de 2017

Programa 11(16) Imprimir numeros Decimal y Hexadecimal

CR EQU 13
LF EQU 10
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
TAB EQU 09H
BELL EQU 07H

DATOS SEGMENT
    ENCABEZADO  DB 13,10,13,TAB,TAB,"===================================="
DB 13,10,13,TAB,TAB," PROGRAMA QUE IMPRIME VALORES NUMERICOS DEC Y HEXA"
                DB 13,10,13,TAB,TAB,"===================================",13,10,"$"
    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,"$"
    VALOR_11    DW 31H,"$"
    VALOR_12    DW 32H,"$"
    VALOR_13    DW 33H,"$"
    VALOR_14    DW 34H,"$"
    VALOR_15    DW 35H,"$"
    VALOR_16    DW 36H,"$"
    VALOR_17    DW 37H,"$"
    VALOR_18    DW 38H,"$"
    VALOR_19    DW 39H,"$"
    VALOR_20    DW 40H,"$"
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP('0')
PILA ENDS

CODIGO SEGMENT
    EJ10 PROC NEAR
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
   
    MOV AX,DATOS
    MOV DS,AX
   
    LEA DX,ENCABEZADO
    CALL ESCRIBE
   
    LEA DX, VALOR_1
    CALL ESCRIBE
   
    LEA DX, VALOR_2
    CALL ESCRIBE
   
    LEA DX, VALOR_3
    CALL ESCRIBE
   
    LEA DX, VALOR_4
    CALL ESCRIBE
   
    LEA DX, VALOR_5
    CALL ESCRIBE
   
    LEA DX, VALOR_6
    CALL ESCRIBE
   
    LEA DX, VALOR_7
    CALL ESCRIBE
   
    LEA DX, VALOR_8
    CALL ESCRIBE
   
    LEA DX, VALOR_9
    CALL ESCRIBE
   
    LEA DX, VALOR_10
    CALL ESCRIBE
   
    LEA DX, VALOR_11
    CALL ESCRIBE
   
    LEA DX, VALOR_12
    CALL ESCRIBE
   
    LEA DX, VALOR_13
    CALL ESCRIBE
   
    LEA DX, VALOR_14
    CALL ESCRIBE
   
    LEA DX, VALOR_15
    CALL ESCRIBE
   
    LEA DX, VALOR_16
    CALL ESCRIBE
   
    LEA DX, VALOR_17
    CALL ESCRIBE
   
    LEA DX, VALOR_18
    CALL ESCRIBE
   
    LEA DX, VALOR_19
    CALL ESCRIBE
   
    LEA DX, VALOR_20
    CALL ESCRIBE
   
    CALL SALIR
    EJ10 ENDP
   
    ESCRIBE PROC
    MOV AH,9
    INT 21H
    RET
    ESCRIBE ENDP
   
    SALIR PROC NEAR
    MOV AX,FIN
    INT 21H
    RET
    SALIR ENDP
CODIGO ENDS
END EJ10


programa 10 (15) Valor Area de Datos

CR EQU 13
LF EQU 10
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
TAB EQU 09H
BELL EQU 07H

DATOS SEGMENT
ENCABEZADO  DB 13,10,13,TAB,TAB,"======================================"
                    DB 13,10,13,TAB,TAB,"       PROGRAMA QUE IMPRIME UN VALOR BINARIO"
                DB 13,10,13,TAB,TAB,"=======================================",13,10,"$"
    VALOR_ASCII DB '21314151', "$"    
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP('0')
PILA ENDS

CODIGO SEGMENT
    EJ9 PROC NEAR
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
   
   MOV AX,DATOS
   MOV DS,AX
 
   LEA DX, ENCABEZADO
   CALL ESCRIBE
 
   LEA DX, VALOR_ASCII
   CALL ESCRIBE
 
   CALL SALIR
 
   EJ9 ENDP
 
   ESCRIBE PROC NEAR
   MOV AH,9
   INT 21H
   RET
   ESCRIBE ENDP
 
   SALIR PROC NEAR
   MOV AX, FIN
   INT DOS
   RET
   SALIR ENDP
 
CODIGO ENDS
END EJ9


programa 9 (14) Letrero de Colores

CR EQU 13
LF EQU 10
BIOS EQU 10H
DOS EQU 21H
TEXTO EQU 3
FIN EQU 4C00H

DATOS SEGMENT
    TITULO DB 'ENSAMBLADOR'
    COLORES DB 01001110B
            DB 01101111B
            DB 00110001B
            DB 01011100B
            DB 00110001B
            DB 01011111B
            DB 01101011B
            DB 01011100B
            DB 01101111B
            DB 01001110B
            DB 00110001B
DATOS ENDS
       
PILA SEGMENT
    DB 64 DUP('PILA')
PILA ENDS

CODIGO SEGMENT
    EJ8 PROC FAR
   
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
    MOV AX,DATOS
    MOV DX,AX
    MOV AX,TEXTO
    INT BIOS
    MOV CX,11
    XOR SI,SI
    BUCLE:
    PUSH CX
    MOV DX,SI
    ADD DX,35
    MOV DH,12
    CALL COLOCA
    MOV AL,[SI+OFFSET TITULO]
    MOV BL,[SI+OFFSET COLORES]
    CALL COLOR
    POP CX
    INC SI
    LOOPNZ BUCLE
    MOV AH,8
    INT DOS
    XOR DX,DX
    CALL COLOCA
    MOV AX,FIN
    INT DOS
    EJ8 ENDP
   
    COLOR PROC
    MOV AH,9
    XOR BH,BH
    INT BIOS
    RET
    COLOR ENDP
   
    COLOCA PROC
    MOV AH,2
    XOR BX,BX
    INT BIOS
    RET
    COLOCA ENDP
   
CODIGO ENDS
END EJ8


programa 8(11) Datos 1 Con Terminacion

CR EQU 13
LF EQU 10
TECLADO EQU 8
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
BIOS EQU 10H
TAB EQU 09H
BELL EQU 07H

DATOS SEGMENT
    NOMBRE DB 30 DUP(32), '$'
    DIR DB 30 DUP(32),'$'
    TLF DB 15 DUP(30),'$'
    MENS1 DB 'NOMBRE: $'
    MENS2 DB 'DIRECCION: $'
    MENS3 DB 'TELEFONO: $'
    ENTERR DB CR,LF,'$'
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP('PILA')
PILA ENDS

CODIGO SEGMENT
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
    EJ7:
   
    MOV AX,DATOS
    MOV DS,AX
   
    CALL MODO_DE_VIDEO
   
    MOV DX,OFFSET MENS1
    CALL ESCRIBE
   
    MOV SI,OFFSET NOMBRE
    MOV CX,30
    CALL PEDIR
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET MENS2
    CALL ESCRIBE
   
    MOV SI,OFFSET DIR
    MOV CX,30
    CALL PEDIR
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET MENS3
    CALL ESCRIBE
   
    MOV SI,OFFSET TLF
    MOV CX,15
    CALL PEDIR
   
    MOV DX, OFFSET ENTERR
    CALL ESCRIBE
    CALL ESCRIBE
    CALL ESCRIBE
   
    MOV DX,OFFSET NOMBRE
    CALL ESCRIBE
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET DIR
    CALL ESCRIBE
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET TLF
    CALL ESCRIBE
   
    CALL SALTO_DE_LINEA
   
    CALL SALIR
   
    PEDIR PROC NEAR
   
    BUCLE:
   
    MOV AH,TECLADO
    INT DOS
   
    MOV [SI],AL
    MOV AH,2
    MOV DL,AL
    INT DOS
   
    INC SI
    LOOPNZ BUCLE
   
    RET
 
    PEDIR ENDP
   
    ESCRIBE PROC NEAR
    MOV AH,IMPRIMIR
    INT DOS
    RET
    ESCRIBE ENDP
   
    SALTO_DE_LINEA PROC NEAR
    MOV DX,OFFSET ENTERR
    CALL ESCRIBE
    RET
    SALTO_DE_LINEA ENDP
   
    MODO_DE_VIDEO PROC NEAR
    MOV AX,3
    INT BIOS
    RET
    MODO_DE_VIDEO ENDP
   
    SALIR PROC NEAR
    MOV AX,FIN
    INT DOS
    RET
    SALIR ENDP
   
CODIGO ENDS

END EJ7


programa 7 (8) CLS y Posiciona Cursor

CR     EQU 13
 LF     EQU 10
 TECLADO_8  EQU 8
 IMPRIMIR_9 EQU 9
 FIN_4C00H  EQU 4C00H
 DOS_21H    EQU 21H
 BIOS_10H   EQU 10H
 TAB    EQU 09H
 BELL   EQU 07H

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

 PILA SEGMENT STACK
     DW 100 DUP('0')
 PILA ENDS

 CODIGO SEGMENT
     EJ6 PROC FAR
     ASSUME CS:CODIGO,DS:DATOS,SS:PILA
     MOV AX,DATOS
     MOV DS,AX
 
     LEA DX,MENSAJE
   
     CALL LIMPIA_PANTALLA
     CALL POSICIONA_CURSOR
   
     MOV AH,IMPRIMIR_9
     INT DOS_21H
   
     MOV AX, FIN_4C00H
     INT DOS_21H
     EJ6 ENDP
   
     LIMPIA_PANTALLA PROC NEAR
    MOV AX,0600H ; Establecer modo texto y CLS
    MOV BH,14H ; 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
     MOV BH,00
     MOV DH,RENGLON
     MOV DL,COLUMNA
     INT BIOS_10H
     RET
     POSICIONA_CURSOR ENDP
   
 CODIGO ENDS
 END EJ6


Programa 6(7) Posiciona Cursor

CR     EQU 13
 LF     EQU 10
 TECLADO_8  EQU 8
 IMPRIMIR_9 EQU 9
 FIN_4C00H  EQU 4C00H
 DOS_21H    EQU 21H
 BIOS_10H   EQU 10H
 TAB    EQU 09H
 BELL   EQU 07H

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

 PILA SEGMENT STACK
     DW 100 DUP('0')
 PILA ENDS

 CODIGO SEGMENT
     EJ5 PROC FAR
     ASSUME CS:CODIGO,DS:DATOS,SS:PILA
     MOV AX,DATOS
     MOV DS,AX  
     LEA DX,MENSAJE
 
     CALL POSICIONA_CURSOR
   
     MOV AH,IMPRIMIR_9
     INT DOS_21H
     
     EJ5 ENDP

   POSICIONA_CURSOR PROC NEAR
 
     MOV AH,07
     MOV BH,05
     MOV DH,RENGLON
     MOV DL,COLUMNA
     INT BIOS_10H
     RET
     POSICIONA_CURSOR ENDP
   
 CODIGO ENDS
 END EJ5


Programa 5 (6) Limpiar Pantalla

FIN_4C00H EQU 4C00H
DOS_21H EQU 21H
BIOS_10H EQU 10H

PILA SEGMENT STACK
DW 100 DUP('0')
PILA ENDS

CODIGO SEGMENT
;-----------------------------------------------------------------------
EJ4 PROC FAR ; Inicio procedimiento
;-------------------------------------------------------------------
ASSUME CS:CODIGO,SS:PILA
;-------------------------------------------------------------------
CALL LIMPIA_PANTALLA ; Llama a procedimiento para limpiar pantalla.
;-------------------------------------------------------------------
MOV AX,FIN_4C00H ; Fin del programa
INT DOS_21H
;-------------------------------------------------------------------
EJ4 ENDP ; Fin del procedimiento
;-----------------------------------------------------------------------
LIMPIA_PANTALLA PROC NEAR
MOV AX,0600H ; Establecer modo texto y CLS
MOV BH,0AH ; 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 EJ4