Instituto Tecnológico de Matamoros

Impulsar el desarrollo científico y tecnológico ejerciendo actividades de docencia, investigación, extensión y vinculación en la formación de profesionales con competencias y valeres que aseguren el liderazgo, la equidad y la sustentabilidad ambiental.

GRAFICACION

Conocer técnicas para el trazado, manipulación y visualización de elementos en 2D y 3D, las cuales, servirán de base para desarrollar software basado en gráficos, como interfaz hombre-máquina y software gráfico para el diseño de diversas aplicaciones, enfocadas al arte, diseño, capacitación y entretenimiento.

Administracion de Bases de Datos

Tener la capacidad de seleccionar SGBD para la implementación y administración de sistemas de bases de datos, aplicando esquemas de seguridad, rendimiento y alta disponibilidad en distintas plataformas, optimizando los recursos económicos y la infraestructura tecnológica disponible en las organizaciones.

Programador

El Programador diseña, a través de un código, diferentes herramientas informáticas, tales como programas, sistemas o páginas web.

Ingeniería en Sistemas Computacionales

Formar profesionistas líderes, analíticos, críticos y creativos, con visión estratégica y amplio sentido ético, capaces de diseñar, implementar y administrar infraestructura computacional para aportar soluciones innovadoras en beneficio de la sociedad, en un contexto global, multidisciplinario y sustentable.

jueves, 27 de abril de 2017

Programa Suma de dos números

;-------------------------------------------------------------------------------------------------------------
: PROGRAMA: pe22_sum
; FUNCION: Suma de dos numeros
; REALIZADO POR: Jose Juan Muñiz Hdz
; FECHA : jueves 27 abril 2017
;------------------------------------------------------------------------------------------------------------

.model small Modelo de memoria m?s utilizado
.stack

data ;detinici?n de datos(variables), donde se almacenara informaci?n
valor db?

.code ;aqui debe de estar
.startup ;eI c?digo del programa
         
         mov ah, 01h ;Leer car?cter desde el teclado
         int 21h ;Lee primer caracter

        sub al, 30h ;Resto 30H (48Dec) para obtener el n?mero
       mov valor, al ;Lo guardo en variable valor

       mov ah, 01h ;Leer car?cter desde el teclado
       int 21h ;Leo el segundo caracter

       sub al, 30h ;Resto 30H (4BDec) para obtener segundo valor
       add al, valor ;Realizo Ia suma de los dos valores

       mov dl, al ;Pongo en dl el n?mero a imprimir
       add dl, 30h ;Agrego 30 (48Dec) para obtener el caracter
       mov ah, 02h ;Funcion para imprimir un car?cter en pantalla
       int 21h
.exit
end





Programa Multiplicación de dos números

;--------------------------------------------------------------------------------------------------
: PROGRAMA: pe24_mul
; FUNCION: Multimplicacion de dos numeros
; REALIZADO POR: Jose Juan Muñiz Hdz
; FECI-IA : jueves 27 abril 2017
;--------------------------------------------------------------------------------------------------

.model small ;Modelo de memoria m?s utilizado
.stack

.data definici?n de datos(variables), donde se almacenara informaci?n
. code
      chr1 db?
      chr2 db?
      chr3 db?
      r1 db?
      r2 db?
      ac db0

. startup
     ; cls
     mov ah,00h ;Function(Set video mode)
     mov al,03 ;Mode 80x25 8x8 16

     int 10h :Interruption Video

mov ah,01h Function(character read)
int 21h ;lnterruption DOS functions
sub aI,30h ;ajustamos valores
mov chr1,aI ,[chr1]chr2 * chr3 = ac.r1.r2

mov ah,02h ;Function(character read)
int 21h ;lnterruption DOS functions
sub aI,30h Ajustamos valores
mov chr2,al ;chr1.[chr2]* chr3 = ac.r1.r2

mov ah,02h ;Function(character to send to standard output)
mov dl,'*' ;Character to show
int 21h

mov ah,01h Function(Read character)
int 21h ;lnterruption DOS Functions
sub al,30h ;Transform(Odec= 30hex)
mov chr3,al ;chr1.chr2 * [chr3]= ac.r1.r2

mov ah,02h ;Character to send to standar output
mov dl,'' ;
int 21h :lnterruption DOS functions

; Realizamos operaci?n

mov al,chr3 ;al = chr3
mov bl,chr2 ;bl = chr2
mul bl ;AL chr3*chr2 (BL*AL)
Mov Ah,0h ;
AAM               ASCII Adjusment
 mov ac,AH ;ac = AH (Acarreo)
mov r2,AL ;r2 = AL (Unidad del resultado)

mov al,chr3 ;AL = chr3
mov bl,chr1 ;BL = chr1
mul bl AL = chr1*chr3 (BL*AL)
mov r1 ,aL ;r1 = AL (Decena del resultado)
mov bl,ac ;BL = Acarreo anterior
add r1 ,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r1 ;AL = r1 (Asignaci?n para el ajust)
AAM ;ASCll Adjustment
mov r1,al ;r1=AL
mov ac,ah ;ac = AH (Acarreo para Ia Centena del resultado)

; Mostramos resultado
mov ah,02h
mov dl,ac
add dl,30h
int 21h ;Mostramos ac (Centena)

mov ah,02H
mov dl,r1
add dl,30h
int 21h ;Mostramos rl (Decena)

mov ah,02H
mov dl,r2
add dl,30h
int 21h ;Mostramos r2 (Unidad)
.exit
end








Programa Vector

-----------------------------------------------------------------------------------
; PROGRAMA: pe26_arr
; FUNCION : Vector ingresa datos
; REALIZADO POR: JOSE JUAN MUÑIZ HDZ
; FECHA : jueves 27 abril 2017
--------------------------------------------------------------------------------------------------
title reves.asm

.model small ;Modelo de memoria m?s utilizado

.stack 256h ;se define el espacio necesario para Ia pila

.data
      CR equ 13 ; Constante CR (Retorno de carro) En decimal o
       LF equ 10 ; Constante LF (Salto de l?nea) en hex es igual

       mens db ‘Escribe algo y te lo convierto al reves’, CR,LF,’$’
       salto db CR,LF,’$’

cadena label byte ;cadena de texto

cant db 20
max db 00
campo db 20 dup(’’)

.code

inicio:


mov ax,@data; Inicializar correctamente el
mov ds,ax ; registro de datos
push ds ; Guardar ds en vector
pop es :restaruamos es con sus valores anteriores

mov ah,09h ; Esperar tecla
lea dx,mens ; CARGA ETIQUETA MENSAJE
int 21h ; Llamar a Ia interrupci?n del DOS

mov ah,Oah ; Esperar tecla
lea dx,cadena; CARGA ETIQUETA CADENA
int 21h ; Llamar a Ia interrupci?n del DOS

mov ah,09h ; Esperar tecla
lea dx,salto
int 21h ; Llamar a Ia interrupci?n del DOS

mov cI,cant
mov bx, offset campo
add bI, cant

loopo:
mov dl.[bx] ; Movemos el siguiente caracter ASCII al dl
mov ah,02h ;Leer car?cter desde el teclado
int 21h : Llamar a Ia interrupci?n del DOS
dec bI
dec cl
cmp cl,0
je salir
jmp loopo

salir:
mov dl,[bxl Movemos el siguiente caracter ASCII al dl
mov ah,02h ;Leer car?cter desde el teclado
int 21h ; Llamar a Ia interrupci?n del DOS
mov ax4cOOh :regresamos el control al sistema operativo
int 21h ; Llamar a Ia interrupci?n del DOS

end inicio



miércoles, 19 de abril de 2017

Unidad 3: Modularizacion

Introduccion

La programación modular es uno de los métodos de diseño mas flexibles y poderosos para el
mejoramiento de Ia productividad de un programa.Usando Ia programación modular el problema
se divide en módulos, donde cada una de los cuales ejecuta una única actividad o tarea y se
codifican independientemente de otros modulo.
Cada uno de estos módulos se analiza, se codifica y se prueba de preferencia por separado.
al trabajar con lenguaje ensamblador, Ia necesidad de Ia estructura es, si cabe, aún es más vital,
puesto que cualquier tarea, por sencilla que parezca, puede requerir una gran lista de sentencias
ejecutables.
Todo programa contiene un módulo denominado programa principal que controla todo Ib que
sucede; si se transfiere el control a un submódul, este ejecuta su función y una vez que Ia termina,
regresa el control al módulo desde donde fue llamado. En mucho casos es el modulo principal.
Si Ia tarea asignada a cada submódulo es demasiado compleja, éste deberá descomponerse en
otros módulos más pequeños. Este proceso de descomposición continua hasta que cada módulo
tenga una tarea especifica que ejecutar. Esta tarea puede ser:
A) Entrada
B) Salida
C) Manipulación de datos
D) Control, de otros módulos
E) Alguna combinación de los anteriores
En el lenguaje ENSAMBLADOR esta técnica se puede llevar a cabo mediante MACROS Y


3.1 PROCEDIMIENTOS.

Es una colección de instrucciones que realizan una tarea especifica. Dependiendo
de su extensión y complejidad, un programa puede contener uno, algunos o
inclusive cientos de procedimientos. Para emplear un procedimiento en un
programa se requiere definir y llamarlo. Al definir un procedimiento escribimos
Ias instrucciones que contiene. Al llamar al procedimiento transferimos el flujo al
procedimiento para que sus instrucciones se ejecuten. Se define como:

PROC nomProc
proposicion
[proposicion]
...
ENDP [nomProc]
La llamada a un procedimiento tiene Ia siguiente forma:
CALL nomProc
Pra regresar de un procedimiento se utiliza
RET

Un buen procedimiento debe:

. Hacer solo una tarea.
. Ser tan pequeño como sea posible y tan largo como sea necesario.
. Contener un comentario con su propósito, datos de entrada y salida.
. Entenderse por si solo.
. Funcionar como lo haría una instrucción del microprocesador.
. No usar variables globales ni para recibir datos, ni regresar un resultado, ni almacenar
temporalmente resultados intermedios.

3.2 Macros.
Es un conjunto de instrucciones asociadas a un identificador: el nombre de Ia
macro.
Este conjunto de instrucciones es invocado como una sola instrucción o
macroinstrucciôn. Para emplear una macro en un programa debemos de definir Ia
macro e invocar Ia macro.
La definición de una macro establece el nombre al que se le asocia Ia macro, el
número y nombre de sus parámetros formales y qué instrucciones contiene Ia
macroinstrucción. La sintaxis de Ia definición de una macro es Ia siguiente:

MACRO nombMacro [parForm[, parForm]...]
proposición
[proposición]
ENDM [nombMacroj

Aunque Ia definición de una macro puede ir en cualquier parte de un programa, el
lugar más recomendable para su localización es al principio de un archivo, antes
de los segmentos de datos y de código.
AI encontrar una invocación de una macro, el macro-ensamblador substituye Ia linea
con Ia invocación por Ias proposiciones que contiene Ia definición de Ia macro.
Este proceso de substitución se conoce como expansión de Ia macro. La sintaxis
de Ia invocación de Ia macro es similar a cualquier instrucción:

nomMacro [parReal[, parReal]...]

Donde cada parReal es conocido como un parámetro real de Ia macro. AI
expandirse Ia macro cada una de Ias ocurrencias de un parámetro formal en Ia
definición de Ia macro se substituye por su correspondiente parámetro real.

martes, 4 de abril de 2017

Programa Final de la Unidad



; PROGRAMA : pe11_dt1.asm 
; FUNCION : Pide tres datos hasta agotar la longitud de cada uno.
; REALIZADO POR :Jose Juan Muñiz Hernandez
----------------------------------------------------------------

; DECLARACION DE CONSTANTES
--------------------------------------------------

 CR EQU 13  ; Constante CR (Retorno de carro)
LF EQU 10  ; Constante LF (Salto de l?nea)
TECLADO EQU 8
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
BIOS EQU 10H
TAB EQU 09H
BELL EQU 07H
----------------------------------------------------------------

 ; DECLARACION DEL SEGMENTO DE DATOS
----------------------------------------------------------------

    DATOS SEGMENT
NOMBRE DB 30 DUP(32),'$'
DIR DB 30 DUP(32),'$'
TLF DB 15 DUP(32),'$'
MENS1 DB 'NOMBRE : $'
COLORES DB 11001111B ; Atributo de 'NOMBRE : $'
MENS2 DB 'DIRECCION: $'
MENS3 DB 'TELEFONO : $'
ENTERR DB CR,LF,'$'
DATOS ENDS
----------------------------------------------------------------

; DECLARACION DEL SEGMENTO DE PILA
--------------------------------------------------------------

PILA SEGMENT STACK
DB 64 DUP('PILA')
PILA ENDS
-----------------------------------------------------
; DECLARACION DEL SEGMENTO DE CODIGO
----------------------------------------------------------------

CODIGO SEGMENT
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
INICIO:
MOV AX,DATOS  ; pone el inicio del segmento de datos en el registro AX
MOV DS,AX ; pone el inicio dle segmento de datos en su registro correspondiente
; DS, mediante el registro AX

CALL MODO_DE_VIDEO  ; Establece modo de video
MOV DX,OFFSET MENS1  ; Imprimir MENS1: 'NOMBRE: '
CALL ESCRIBE
MOV SI,OFFSET NOMBRE  ; Direccion destino del nombre
MOV CX,30 ; Longitud del nombre
CALL PEDIR ; Solicitud de datos
CALL SALTO_DE_LINEA
MOV DX,OFFSET MENS2 ; Imprimir MENS2: 'DIRECCION: '
CALL ESCRIBE
MOV SI,OFFSET DIR ; Direccion destino de la direcci?n
MOV CX,30 ; Longitud de la direccion
CALL PEDIR ; Solicitud de datos
CALL SALTO_DE_LINEA
MOV DX,OFFSET MENS3 ; Imprimir MENS3 'TELEFONO: '
CALL ESCRIBE
MOV SI,OFFSET TLF ; Direccion destino del telefono
MOV CX,15 ; Longitud del telefono
CALL PEDIR ; Solicitud de datos
MOV DX,OFFSET ENTERR ; Imprimir salto de linea 3 veces
CALL ESCRIBE
CALL ESCRIBE
CALL ESCRIBE
MOV DX,OFFSET NOMBRE ; Imprimir nombre capturado
CALL ESCRIBE
CALL SALTO_DE_LINEA
MOV DX,OFFSET DIR ; Imprimir direccion capturado
CALL ESCRIBE
CALL SALTO_DE_LINEA
MOV DX,OFFSET TLF ; Imprimir telefono capturado
CALL ESCRIBE
CALL SALTO_DE_LINEA
CALL SALIR ; Fin del programa
-----------------------------------------------------------------------

; Procedimiento PEDIR. Solicita un dato y lo guarda en la memoria
; Entrar en SI la direcci?n de memoria donde almacenar los datos
; Entrar en CX el n?mero de caracteres del dato
-----------------------------------------------------------------------


PEDIR PROC NEAR
BUCLE:
MOV AH,TECLADO ; Leer una tecla
INT DOS
MOV [SI],AL ; Guardar tecla en memoria
MOV AH,2 ; Imprimir la tecla o caracter
MOV DL,AL
INT DOS
INC SI ; Incrementar puntero de memoria
LOOPNZ BUCLE ; Repetir hasta agotar la longitud (Loop While Not Zero)
RET
PEDIR ENDP
-----------------------------------------------------------------------


; Procedimiento ESCRIBE. Escribe en pantalla una cadena
; Entrar en DX la direcci?n de la cadena o variable con cadena
-----------------------------------------------------------------------


ESCRIBE PROC NEAR
MOV AH,IMPRIMIR ; Servicio del DOS para imprimir cadena
INT DOS
RET
ESCRIBE ENDP

;PROCEDIMIENTO QUE IMPRIME SALTO DE LINEA
SALTO_DE_LINEA PROC NEAR
MOV DX,OFFSET ENTERR
CALL ESCRIBE
RET
SALTO_DE_LINEA ENDP

; ESTABLECE MODO DE VIDEO
MODO_DE_VIDEO PROC NEAR
MOV AX,3 ; Establecer modo 80x25 car. 16 col.
INT BIOS
RET
MODO_DE_VIDEO ENDP

; TERMINA PROGRAMA
SALIR PROC NEAR
MOV AX, FIN ;Mueve la instruccion para terminar el programa.
INT DOS ;Ejecuta la interrupci?n.
RET
SALIR ENDP

CODIGO ENDS
END INICIO




lunes, 3 de abril de 2017

Programa#8

 ; PROGRAMA : pt14_col
 ; FUNCION : imprime un texto con las letras de colores que parpadean
  ; REALIZADO POR :Jose Juan Muñiz Hernandez
-------------------------------------------------------------------------------------------------------------------------------

; 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
BIOS_10H EQU 10H
------------------------------------------------------------

; DECLARACION DEL SEGMENTO DE DATOS
----------------------------------------------------------------

DATOS SEGMENT  ; Inicio del segmento de datos

TITULO DB 'JOSE_JUAN_MUÑIZ' ; Texto a imprimir
COLORES DB 11001110B ; Atributo de 'J' los numeros binarios se pueden convertir a hexa
DB 11001111B ; Atributo de 'O' siendo dos digitos hexa el primero representa el
DB 11000001B ; Atributo de 'S'
fondo y el segundo el texto.
DB 11001100B ; Atributo de 'E'
 
DB 11000001B ; Atributo de '_'
DB 11001111B ; Atributo de 'J'
DB 11001011B ; Atributo de 'U'
DB 00101100B ; Atributo de 'A'
DB 00101111B ; Atributo de 'N'
DB 00101110B ; Atributo de '_'
DB 00100001B ; Atributo de 'M'
DB 00101111B ; Atributo de 'U'
DB 00100001B ; Atributo de 'Ñ'
DB 00101100B ; Atributo de 'I'
DB 00100001B ; Atributo de 'Z'


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

pt14_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,22                                                       ; Bucle (22 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)
pt14_col ENDP                                                     ; Fin del procedimiento pt14_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 pt14_col                  ; Fin del codigo e indicar direccion comienzo





Programa#2

PROGRAMA #2: 4 mensajes
FUNCION : ESCRITURA DE 4 FRASE EN PANTALLA
REALIZADO POR : Jose Juan Muñiz Hernandez
-----------------------------------------------------------------------------------

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,'Jose Hdz ',CR,LF,'$'
MENSAJE2 DB 'carrera iNG. SISTEMAS COMPUTACIONALES',CR,LF,'$'
MENSAJE3 DB '7 SEMESTRE ',CR,LF,'$'
MENSAJE4 DB 'CEL:8941103108 ',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






Programa#7

; PROGRAMA : pe14_col
; FUNCION : imprime un texto con las letras de colores
; REALIZADO POR :Jose Juan Muñiz Hernandez
------------------------------------------------------------------------

; 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 :Jose Juan Muñiz Hernandez
------------------------------------------------------------------

; 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 :Jose Juan Muñiz Hernandez
-----------------------------------------------------------------------------------

; 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 : Jose Juan Muñiz Hernandez
---------------------------------------------------------------------

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