1. CODIGO SEGMENT
En informática, un segmento de código, también conocido como un segmento de texto o
simplemente como texto, es una frase usada para referirse a una parte de la memoria o de
un archivo objeto que contiene instrucciones ejecutables.
Tiene un tamaño fijo y suele ser de sólo lectura. Si la sección de texto no es de sólo lectura,
entonces la arquitectura particular, permite que el código auto-modificación. código de sólo
lectura es reentrante si puede ser ejecutado por más de un proceso, al mismo tiempo.
El segmento de código (CS) contiene las instrucciones de maquina que son ejecutadas por
lo común la primera instrucción ejecutable esta en el inicio del segmento, y el sistema
operativo enlaza a esa localidad para iniciar la ejecución del programa. Como su nombre
indica, el registro del CS direcciona el segmento de código. Si su área de código requiere
mas de 64K, su programa puede necesitar definir mas de un segmento de código.
Visualizacion de caracteres ASCII en pantalla usando el servicio 02H de la INT 21H
Código:
CODIGO SEGMENT
ASSUME CS:CODIGO
INICIO:
MOV AH, 02H
MOV DL, 4AH
INT 21H
MOV DL, 61H
INT 21H
MOV DL, 73H
INT 21H
MOV DL, 65H
INT 21H
FIN: MOV AH, 4CH
INT 21H
CODIGO ENDS
END INICIO
Visaulización de mi nombre en pantalla usando el servicio 02H de la INT 21H
Código:
CODIGO SEGMENT
2. ASSUME CS:CODIGO
INICIO:
MOV AH, 02H
MOV DL, 'K'
INT 21H
MOV DL, 'a'
INT 21H
MOV DL, 'l'
INT 21H
MOV DL, 'u'
INT 21H
MOV DL, 'n'
INT 21H
MOV DL, ' '
INT 21H
MOV DL, 'J'
INT 21H
MOV DL, 'o'
INT 21H
MOV DL, 's'
INT 21H
MOV DL, 'e'
INT 21H
MOV DL, ' '
INT 21H
MOV DL, 'L'
INT 21H
MOV DL, 'a'
INT 21H
MOV DL, 'u'
INT 21H
MOV DL, ' '
INT 21H
MOV DL, 'G'
INT 21H
MOV DL, 'a'
INT 21H
MOV DL, 'n'
INT 21H
FIN: MOV AH, 4CH
INT 21H
CODIGO ENDS
END INICIO
3. Impresión de cadenas de caracteres usando el servicio 09H de la INT 21H
Código:
;El segmento de datos para almacenar las cadenas}
;de caracteres a imprimir
DATOS SEGMENT
TITULO DB "Ingenieria de Computacion y Sistemas$"
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
MOV AH, 09H
LEA DX, TITULO
; MOV DX, OFFSET TITULO
INT 21H
FIN: MOV AH, 4CH
INT 21H
CODIGO ENDS
END INICIO
Impresión de un mensaje "UPAO" usando caracteres ASCII y servicio 09H de la INT21H
Código:
DATOS SEGMENT
TITULO1 DB " ** ** ******** ******** ********", 0AH, 0DH, "$"
TITULO2 DB " * * * * * * * * * *", 0AH, 0DH, "$"
TITULO3 DB " * * * * * **** * * **** * * *", 0AH, 0DH, "$"
TITULO4 DB " * * * * * * * * * * * * * **** *", 0AH, 0DH, "$"
TITULO5 DB " * * * * * **** * * **** * * * * *", 0AH, 0DH, "$"
TITULO6 DB " * * * * * * * * * * * *", 0AH, 0DH, "$"
TITULO7 DB " * * * * * ****** * **** * * **** *", 0AH, 0DH, "$"
TITULO8 DB " * **** * * * * * * * * *", 0AH, 0DH, "$"
TITULO9 DB " * * * * * * * * * *", 0AH, 0DH, "$"
TITULO10 DB " ******** ** ** ** ********", 0AH, 0DH, "$"
4. DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
MOV AH, 09H
MOV CX, 2
LAZO:
LEA DX, TITULO1
INT 21H
LEA DX, TITULO2
INT 21H
LEA DX, TITULO3
INT 21H
LEA DX, TITULO4
INT 21H
LEA DX, TITULO5
INT 21H
LEA DX, TITULO6
INT 21H
LEA DX, TITULO7
INT 21H
LEA DX, TITULO8
INT 21H
LEA DX, TITULO9
INT 21H
LEA DX, TITULO10
INT 21H
LOOP LAZO
FIN: MOV AH, 4CH
INT 21H
CODIGO ENDS
END INICIO
Programa que visualiza UPAO y lo repite cuando se presiona la tecla r y finaliza cuando se
presiona q
Código:
DATOS SEGMENT
5. TITULO1 DB " ** ** ******** ******** ********", 0AH, 0DH, "$"
TITULO2 DB " * * * * * * * * * *", 0AH, 0DH, "$"
TITULO3 DB " * * * * * **** * * **** * * *", 0AH, 0DH, "$"
TITULO4 DB " * * * * * * * * * * * * * **** *", 0AH, 0DH, "$"
TITULO5 DB " * * * * * **** * * **** * * * * *", 0AH, 0DH, "$"
TITULO6 DB " * * * * * * * * * * * *", 0AH, 0DH, "$"
TITULO7 DB " * * * * * ****** * **** * * **** *", 0AH, 0DH, "$"
TITULO8 DB " * **** * * * * * * * * *", 0AH, 0DH, "$"
TITULO9 DB " * * * * * * * * * *", 0AH, 0DH, "$"
TITULO10 DB " ******** ** ** ** ********", 0AH, 0DH, "$"
ERROR DB "Tecla presionada es erronea, intente de nuevo", 0AH, 0DH, "$"
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
MOV AH, 09H
LEA DX, TITULO1
INT 21H
LEA DX, TITULO2
INT 21H
LEA DX, TITULO3
INT 21H
LEA DX, TITULO4
INT 21H
LEA DX, TITULO5
INT 21H
LEA DX, TITULO6
INT 21H
LEA DX, TITULO7
INT 21H
LEA DX, TITULO8
INT 21H
LEA DX, TITULO9
INT 21H
LEA DX, TITULO10
INT 21H
LECTU: MOV AH, 01H
INT 21H
CMP AL, 71H
JE FIN
CMP AL, 72H
6. JE INICIO
MOV AH, 09H
LEA DX, ERROR
INT 21H
JMP LECTU
FIN: MOV AH, 4CH
INT 21H
CODIGO ENDS
END INICIO
Para apagar un led y prenderlo yuasando el teclado blablabablaaaaa
Código:
DATOS SEGMENT
ENC DB 0AH, 0DH, "Led Encendido", 0AH, 0DH, "$"
APA DB 0AH, 0DH, "Led Apagado", 0AH, 0DH, "$"
ERROR DB 0AH, 0DH, "Tecla presionada es erronea, intente de nuevo", 0AH, 0DH, "$"
GRACIAS DB 0AH, 0DH, "Gracias por usar el programa", 0AH, 0DH, "$"
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
MOV AH, 09H
LEA DX, APA
INT 21H
MOV DX, 378H
MOV AL, 0
OUT DX, AL
LECTU: MOV AH, 01H
INT 21H
CMP AL, 71H
JE FIN
CMP AL, 61H
JE APAGA
CMP AL, 65H
JE ENCEN
MOV AH, 09H
LEA DX, ERROR
7. INT 21H
JMP LECTU
ENCEN: MOV AH, 09H
LEA DX, ENC
INT 21H
MOV DX, 378H
MOV AL, 1
OUT DX, AL
JMP LECTU
APAGA: MOV AH, 09H
LEA DX, APA
INT 21H
MOV DX, 378H
MOV AL, 0
OUT DX, AL
JMP LECTU
FIN: MOV AH, 09H
LEA DX, GRACIAS
INT 21H
MOV AH, 4CH
INT 21H
CODIGO ENDS
END INICIO
Este programa es para escribir un mensaje en pantalla usando el servicio 09H de la INT
21H
Código:
;-Programa ejemplo para visualizar la palabra "MASM ES FACIL!".
;-Para ello vamos a utilizar el servicio 09H de la INT 21H.
;-En la cadena a imprimir usando el servicio 09H, debemos de colocarle
; el caracter "$" para indicar el fin de la cadena.
;-Al terminar de ejecutar nuestro programa, es necesario devolver el
; control de la maquina al sistema operativo.
DATOS SEGMENT
CAD1 DB "MASM ES FACIL!$"
DATOS ENDS
8. CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
MOV AH, 09H
LEA DX, CAD1
INT 21H
FIN: MOV AH, 4CH
INT 21H
CODIGO ENDS
END INICIO
Código:
CODIGO SEGMENT
ASSUME CS:CODIGO
INICIO: MOV AH, 02H ;SERVICIO DE IMPRESION DE CARACTER EN
PANTALLA
MOV DL, 'U' ;CARACTER ASCII A IMPRIMIR EN PANTALLA
INT 21H
MOV DL, 'P' ;CARACTER ASCII A IMPRIMIR EN PANTALLA
INT 21H
MOV DL, 'A' ;CARACTER ASCII A IMPRIMIR EN PANTALLA
INT 21H
MOV DL, 'O' ;CARACTER ASCII A IMPRIMIR EN PANTALLA
INT 21H
FIN: MOV AH, 4CH ;SERVICIO PARA RETORNAR EL CONTROL DE LA PC
INT 21H ;AL SISTEMA OPERATIVO
CODIGO ENDS
END INICIO
Saludos, aqui les paso la APP08, para titilear un LED
Código:
;Este es un programa para titilar un LED por un pin del puerto paralelo
;Con la tecla 'y' titlamos el LED y con la tecla 'n' apagamos el LED
;Con la tecla 'q' salimos de la aplicacion
9. DATOS SEGMENT
TIT1 DB "PROGRAMA PARA TITILAR UN LED", "$"
OPT DB 0AH, 0DH, "ELIJA OPCION ('y' TITILAR, 'q' SALIR): ", "$"
ONLED DB 0AH, 0DH, "EL LED TA TITILANDO PS", "$"
OFFLED DB 0AH, 0DH, "EL LED YA NO TA TITILANDO PS", "$"
ERRA DB 0AH, 0DH, "TECLA PRESIONADA INCORRECTA, INTENTE DE
NUEVO", "$"
CHAU DB 0AH, 0DH, "GRACIAS POR USAR EL PROGRAMA CHAUFAS", "$"
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
MOV AH, 09H
LEA DX, TIT1
INT 21H
TECLA: MOV AH, 09H
LEA DX, OPT
INT 21H
MOV AH, 01H ;SERVICIO PARA LEER UNA TECLA
INT 21H
CMP AL, 'y'
JE TTLE ;SALTO PARA TITILEAR LED
CMP AL, 'q'
JE BYEBYE ;SALTO PARA SALIR DEL PROGRAMA
ERROR: MOV AH, 09H
LEA DX, ERRA
INT 21H
JMP TECLA
TTLE: MOV AH, 09H
LEA DX, ONLED
INT 21H
MOV CX, 20
LAZO: MOV DX, 378H
MOV AL, 0
OUT DX, AL
CALL RETAR
MOV AL, 1
OUT DX, AL
CALL RETAR
LOOP LAZO
10. MOV AH, 09H
LEA DX, OFFLED
INT 21H
JMP TECLA
RETAR: PUSH AX
PUSH BX
PUSH CX
MOV AX, 1000
P3: MOV BX, 1000
P2: MOV CX, 100
P1: DEC CX
JNZ P1
DEC BX
JNZ P2
DEC AX
JNZ P3
POP CX
POP BX
POP AX
RET
BYEBYE: MOV AH, 09H
LEA DX, CHAU
INT 21H
MOV AH, 4CH
INT 21H
CODIGO ENDS
END INICIO