Sunteți pe pagina 1din 5

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, en DOSBOX con los siguientes
comandos: (en la unidad escogida, d: en este caso, debe existir la carpeta
procesador con el MASM61 en su contenido, y los archivos programa.asm a
compilar)
C:\ d:
d:\ PATH d:\TASM61\BIN\
d:\ TASM programa.asm ó C:\TASM programa.txt
d:\ LINK programa.obj
Seguidamente verificar la ejecución con el nombre del archivo ya ejecutable
d:\ programa

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 "SUB SEDE VALLE JEQUETEPEQUE","$"

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 "SUB SEDE VALLE JEQUETEPEQUE","$"

POS DW 0800H

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

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

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

S-ar putea să vă placă și