1. LABORATORIO DE TURBO ASSEMBLER. PROCESADORES DIGITALES
PRUEBA DE LAS INTERRUPCIONES BASICAS INT 10H BIOS Y 21H
Procedimiento.
Ingresar el código en archivos de texto plano con extensión
TXT o ASM.
Compilar desde el PROMPT del Sistema Operativo con los
siguientes comandos, si hubiera error corregir en el código:
C: PATH TASM
C: TASM ARCHIVO.TXT ó C:TASM ARCHIVO.ASM
C: TLINK ARCHIVO.OBJ
Seguidamente verificar la ejecución con el nombre del archivo
C: ARCHIVO
1. Interrupciones de Recorrido de pantalla,
posicionamiento de cursor y salida a pantalla.
DATOS SEGMENT
CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO","$"
CADENAC DB "INGENIERIA DE SISTEMAS: ",10,13
CADENAD DB "PRUEBA DE LA COMPILACION EN TASSEMBLER",10,13
CADENAE DB "VII CICLO SEMESTRE 2014-I","$"
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
INIC:
MOV AX,DATOS ; asigna a AX el desplazamineto DATOS
MOV DS,AX ; asigna al registro DS la dirección inicial
;interrupción de recorrido de pantalla
MOV AX,0600h ; funcion 06, valor de al=00 recorrido total
MOV BH,07h ; atributo de color
MOV CX,0000h ; posición inicial
MOV DX,184fh ; posición final renglon 24, columna 79
INT 10h
;interrupción de posición de cursor
MOV AH,02H ; función 02h
MOV BH,00 ; pagina activa nº0
MOV DX,0310H ; renglon 3, columna 16
INT 10H ; interrupción BIOS
;interrupción de salida a pantalla
LEA DX,CADENAB
MOV AH,09H
INT 21H
;interrupción de posición de cursor
MOV AH,02H ; función 02h
MOV BH,00 ; pagina activa nº0
MOV DX,0606H ; renglon 6, columna 6
INT 10H ; interrupción BIOS
;interrupción de salida a pantalla
LEA DX,CADENAC
MOV AH,09H
INT 21H
;interrupción de salida al sistema operativo
MOV AX,4C00h ;
INT 21h
CODIGO ENDS
PILA SEGMENT STACK
DB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS
END INIC
……………………………………………………………………………………………………………………………………………………………………………
.
………………………………………………………………………………………………………………………………………………………………………….
2. Prueba de bucles de control utilizando LOOP y el
registro CX.
DATOS SEGMENT
CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO",10,13
CADENAC DB " INGENIERIA DE SISTEMAS: ","$"
CADENAD DB "PRUEBA DE LA COMPILACION EN TASSEMBLER","$"
CADENAE DB " VII CICLO SEMESTRE 2014-I ","$"
POS DW 0800H
DATOS ENDS
2. CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
INIC:
MOV AX,DATOS ; asigna a AX el desplazamineto DATOS
MOV DS,AX ; asigna al registro DS la dirección inicial
;interrupción de recorrido de pantalla
MOV AX,0600h ; funcion 06, valor de al=00 recorrido total
MOV BH,07h ; atributo de color
MOV CX,0000h ; posición inicial
MOV DX,184fh ; posición final renglon 24, columna 79
INT 10h
;interrupción de posición de cursor
MOV AH,02H ; función 02h
MOV BH,00 ; pagina activa nº0
MOV DX,0310H ; renglon 3, columna 16
INT 10H ; interrupción BIOS
;interrupción de salida a pantalla
LEA DX,CADENAB
MOV AH,09H
INT 21H
MOV CX,04H
BUCL: MOV AH,02H
MOV BH,00
MOV DX,POS
INT 10H
ADD DX,0206H
MOV POS,DX
;interrupción de salida a pantalla
LEA DX,CADENAD
MOV AH,09H
INT 21H
LOOP BUCL
MOV AX,4C00h ;
INT 21h
CODIGO ENDS
PILA SEGMENT STACK
DB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS
END INIC
……………………………………………………………………………………………………………………………………………………………………….
3. Interrupciones de Ingreso de caracteres a memoria a
través de LABEL BYTE.
DATOS SEGMENT
CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO","$"
CADENAC DB "INGRESE UNA CADENA DE 20 CARACTERES: ","$"
CADENAD DB "LA CADENA INGRESADA ES: ","$"
CADENAE DB "LA CADENA INVERTIDA ES: ","$"
CADENA LABEL BYTE
TOTAL DB 21
ACTUAL DB ?
CADE DB 21 DUP(?)
DOLAR DB "$"
CADINV DB 21 DUP(?),”$”
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
INIC:
MOV AX,DATOS ; asigna a AX el desplazamiento DATOS
MOV DS,AX ; asigna al DS la dirección inicial
CALL RECORRE
MOV DX,0310H
CALL POSICION
LEA DX,CADENAB
CALL MUESTRA
MOV DX,0504H
CALL POSICION
LEA DX,CADENAC
CALL MUESTRA
3. CALL INGRESO
MOV DX,0704H
CALL POSICION
LEA DX,CADENAD
CALL MUESTRA
LEA DX,CADE
CALL MUESTRA
;&&&&&&&&&&&&&&&&&&&&&&&&&&&
;interrupción de salida al sistema operativo
MOV AX,4C00h ;
INT 21h
RECORRE PROC NEAR
;interrupción de recorrido de pantalla
MOV AX,0600h
MOV BH,07h ; atributo de color
MOV CX,0000h ; posición inicial
MOV DX,184fh
INT 10h
RET
RECORRE ENDP
POSICION PROC NEAR
;posicion de cursor, falta el valor de DX
MOV AH,02H
MOV BH,00
INT 10H
RET
POSICION ENDP
MUESTRA PROC NEAR
;interrupción de muestra, falta el valor de DX
MOV AH,09H
INT 21H
RET
MUESTRA ENDP
INGRESO PROC NEAR
;interrupción de ingreso de cadena a buffer LABEL BYTE
MOV AH,0AH
LEA DX,CADENA
INT 21H
RET
INGRESO ENDP
CODIGO ENDS
PILA SEGMENT STACK
DB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS
END INIC
4. Ejemplo final con accesos indirectos a DATOS para
invertir cadena de caracteres directamente en memoria
(nota: solo agregue al programa anterior en el renglón
marcado con ;&&&&&&&&&&&&&&&&&&&&&)
;procedimiento que invierte la cadena hacia CADINV
MOV DI,20
MOV SI,0
MOV CX,0
MOV CL,ACTUAL
SUB CX,1
MOV DI,CX
ADD CX,1
INVI: MOV BX,OFFSET CADE
MOV AL,[BX+DI]
MOV BX,OFFSET CADINV
MOV [BX+SI],AL
INC SI
DEC DI
LOOP INVI
MOV DX,0B04H
CALL POSICION
LEA DX,CADENAE
CALL MUESTRA
LEA DX,CADINV
CALL MUESTRA