Programas: Turbo Assembler [Parte 2]

Programas: Turbo Assembler [Parte 1]


1. Hola mundo.


CR EQU 13
LF EQU 0Ah
 
DATOS SEGMENT
    MENSAJE DB CR,LF, 'Hola mundo', CR,LF,'$'
DATOS ENDS
 
PILA SEGMENT STACK
    DB 64 DUP('PILA')
PILA ENDS
 
CODIGO SEGMENT
    HM PROC FAR
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
     
    MOV AX,DATOS
    MOV DS,AX
    LEA DX,MENSAJE
     
    MOV AH,9
    INT 21H
     
    MOV AX,4C00H
    INT 21H
     
    HM ENDP
     
CODIGO ENDS
END HM

2. Uso de constantes para imprimir un mensaje
CR EQU 13
LF EQU 10
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
 
DATOS SEGMENT
    TEXTO DB 'EJEMPLO DE USO DE CONSTANTES ', CR,LF,'$'
 
DATOS ENDS
 
PILA SEGMENT STACK
    DB 64 DUP('PILA')
PILA ENDS
 
CODIGO SEGMENT
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
    INICIO: MOV AX,DATOS
            MOV DS,AX
            MOV DX,OFFSET TEXTO
            MOV AH,IMPRIMIR
            INT DOS
            MOV AX,FIN
            INT DOS
             
        CODIGO ENDS
        END INICIO


3. Uso de funciones
CR EQU 13
LF EQU 10
 
DATOS SEGMENT
    MENSAJE DB CR,LF,'HOLA MUNDO  ', CR,LF,'$'
 
DATOS ENDS
 
PILA SEGMENT STACK
    DB 64 DUP('PILA')
PILA ENDS
 
CODIGO SEGMENT
    HMF PROC FAR
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
    MOV AX,DATOS
    MOV DS,AX
    LEA DX,MENSAJE
     
    CALL ESCRIBE
    MOV AX,4C00H
    INT 21H
     
    HMF ENDP
     
    ESCRIBE PROC
            MOV AH,9
            INT 21H
            RET
            ESCRIBE ENDP
             
        CODIGO ENDS
        END HMF

4. Impresión de mensajes con una función
CR EQU 13
LF EQU 10
 
DATOS SEGMENT
    LINEA1 DB CR,LF,'Carolina Sauceda',CR,LF,'$'
    LINEA2 DB 'Tecnologico de matamoros',CR,LF,'$'
    LINEA3 DB 'ING. SISTEMAS COMPUTACIONALES',CR,LF,'$'
    LINEA4 DB 'ES COMPLICADO ;-;',CR,LF,'$'
 
DATOS ENDS
 
PILA SEGMENT STACK
    DB 64 DUP('PILA')
PILA ENDS
 
CODIGO SEGMENT
    LN PROC FAR
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
    MOV AX,DATOS
    MOV DS,AX
    LEA DX,LINEA1
    CALL ESCRIBE
    LEA DX,LINEA2
    CALL ESCRIBE
    LEA DX,LINEA3
    CALL ESCRIBE
    LEA DX,LINEA4
    CALL ESCRIBE
    MOV AX,4C00H
    INT 21H
     
    LN ENDP
     
    ESCRIBE PROC
    MOV AH,9
    INT 21H
    RET
    ESCRIBE ENDP
     
CODIGO ENDS
END LN

5. Limpia de pantalla
FIN_4C00H EQU 4C00H
DOS_21H EQU 21H
BIOS_10H EQU 10H
 
PILA SEGMENT STACK
    DW 100 DUP('0')
PILA ENDS
 
CODIGO SEGMENT
    CLS PROC FAR
    ASSUME CS:CODIGO,SS:PILA
    CALL LIMPIA_PANTALLA
    MOV AX,FIN_4C00H
    INT DOS_21H
    CLS ENDP
     
    LIMPIA_PANTALLA PROC NEAR
    MOV AX,0600H
    MOV BH,0AH
    MOV CX,000H
    MOV DX,484FH
    INT BIOS_10H
    RET
    LIMPIA_PANTALLA ENDP
     
CODIGO ENDS
END CLS

6. Mensaje con posición X,Y.
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,'$'
DATOS ENDS
PILA SEGMENT STACK
    DW 100 DUP('0')
PILA ENDS
 
CODIGO SEGMENT
    PC 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
    MOV AX,FIN_4C00H
    INT DOS_21H
     
    PC 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 PC

7. Mensaje en posición X,Y y limpia de pantalla
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'
            DB 'DESPUES DE BORRAR PANTALLA',CR,LF,'$'
        DATOS ENDS
        PILA SEGMENT STACK
            DW 100 DUP('0')
        PILA ENDS
 
        CODIGO SEGMENT
            CLSP 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
             
            CLSP ENDP
             
            LIMPIA_PANTALLA PROC NEAR
            MOV AX,0600H
            MOV BH,0AH
            MOV CX,000H
            MOV DX,484FH
            INT BIOS_10H
            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 CLSP

Comments