Está en la página 1de 3

LABORATORIO DE TURBO ASSEMBLER.

PROCESADORES DIGITALES INT 10H ; interrupción BIOS

PRUEBA DE LAS INTERRUPCIONES BASICAS INT 10H BIOS Y 21H ; Interrupción de salida a pantalla
LEA DX,CADENAC
MOV AH,09H
1. Interrupciones de Recorrido de pantalla, INT 21H
posicionamiento de cursor y salida a pantalla.
; Interrupción de salida al sistema operativo
DATOS SEGMENT MOV AX,4C00h ;
INT 21h
CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO","$"
CADENAC DB "INGENIERIA DE SISTEMAS: ", 10,13 CODIGO ENDS
CADENAD DB "PRUEBA DE LA COMPILACION EN TASSEMBLER", 10,13
CADENAE DB "SUB SEDE VALLE JEQUETEPEQUE","$" PILA SEGMENT STACK
DB 160 DUP(?); separación de 160 bytes para uso de pila
DATOS ENDS PILA ENDS

END INIC
CODIGO SEGMENT ……………………………………………………………………………………………………………………………………………………………………………
ASSUME CS:CODIGO, DS:DATOS, SS:PILA .
………………………………………………………………………………………………………………………………………………………………………….
INIC:
MOV AX,DATOS ; asigna a AX el desplazamiento DATOS 2. Prueba de bucles de control utilizando LOOP y el
MOV DS,AX ; asigna al registro DS la dirección inicial registro CX.
;interrupción de recorrido de pantalla
MOV AX,0600h ; función 06, valor de al=00 recorrido total DATOS SEGMENT
MOV BH,07h ; atributo de color
MOV CX,0000h ; posición inicial CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO",10,13
MOV DX,184fh ; posición final renglón 24, columna 79 CADENAC DB " INGENIERIA DE SISTEMAS: ","$"
INT 10h CADENAD DB "PRUEBA DE LA COMPILACION EN TASSEMBLER","$"
CADENAE DB "SUB SEDE VALLE JEQUETEPEQUE","$"

;interrupción de posición de cursor POS DW 0800H


MOV AH,02H ; función 02h
MOV BH,00 ; pagina activa nº0 DATOS ENDS
MOV DX,0310H ; renglon 3, columna 16
INT 10H ; interrupción BIOS
CODIGO SEGMENT
;interrupción de salida a pantalla ASSUME CS:CODIGO, DS:DATOS, SS:PILA
LEA DX,CADENAB
MOV AH,09H INIC:
INT 21H MOV AX,DATOS ; asigna a AX el desplazamiento DATOS
MOV DS,AX ; asigna al registro DS la dirección inicial
;interrupción de posición de cursor
MOV AH,02H ; función 02h ;interrupción de recorrido de pantalla
MOV BH,00 ; pagina activa nº0 MOV AX,0600h ; función 06, valor de al=00 recorrido total
MOV DX,0606H ; renglon 6, columna 6 MOV BH,07h ; atributo de color
MOV CX,0000h ; posición inicial
MOV DX,184fh ; posición final renglón 24, columna 79
INT 10h CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO","$"
CADENAC DB "INGRESE UNA CADENA DE 20 CARACTERES: ","$"
;interrupción de posición de cursor CADENAD DB "LA CADENA INGRESADA ES: ","$"
MOV AH,02H ; función 02h CADENAE DB "LA CADENA INVERTIDA ES: ","$"
MOV BH,00 ; pagina activa nº0
MOV DX,0310H ; renglon 3, columna 16 CADENA LABEL BYTE
INT 10H ; interrupción BIOS TOTAL DB 21
ACTUAL DB ?
;interrupción de salida a pantalla CADE DB 21 DUP(?)
LEA DX,CADENAB
MOV AH,09H DOLAR DB "$"
INT 21H
CADINV DB 21 DUP(?),”$”
DATOS ENDS
MOV CX,04H
CODIGO SEGMENT
BUCL: MOV AH,02H ASSUME CS:CODIGO, DS:DATOS, SS:PILA
MOV BH,00
MOV DX,POS INIC:
INT 10H MOV AX,DATOS ; asigna a AX el desplazamiento DATOS
ADD DX,0206H MOV DS,AX ; asigna al DS la dirección inicial
MOV POS,DX

;interrupción de salida a pantalla CALL RECORRE


LEA DX,CADENAD
MOV AH,09H MOV DX,0310H
INT 21H CALL POSICION
LEA DX,CADENAB
LOOP BUCL CALL MUESTRA

MOV AX,4C00h ; MOV DX,0504H


INT 21h CALL POSICION
LEA DX,CADENAC
CODIGO ENDS CALL MUESTRA

PILA SEGMENT STACK CALL INGRESO


DB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS MOV DX,0704H
CALL POSICION
END INIC LEA DX,CADENAD
CALL MUESTRA
………………………………………………………………………………………………………………………………………………………………………. LEA DX,CADE
3. Interrupciones de Ingreso de caracteres a memoria a CALL MUESTRA
través de LABEL BYTE.
;&&&&&&&&&&&&&&&&&&&&&&&&&&&
;interrupción de salida al sistema operativo
DATOS SEGMENT MOV AX,4C00h ;
INT 21h (nota: solo agregue al programa anterior en el renglón
marcado con ;&&&&&&&&&&&&&&&&&&&&&)
RECORRE PROC NEAR
;interrupción de recorrido de pantalla ;procedimiento que invierte la cadena hacia CADINV
MOV AX,0600h MOV DI,20
MOV BH,07h ; atributo de color MOV SI,0
MOV CX,0000h ; posición inicial
MOV DX,184fh MOV CX,0
INT 10h MOV CL,ACTUAL
RET SUB CX,1
RECORRE ENDP MOV DI,CX
ADD CX,1
POSICION PROC NEAR INVI: MOV BX,OFFSET CADE
;posicion de cursor, falta el valor de DX MOV AL,[BX+DI]
MOV AH,02H MOV BX,OFFSET CADINV
MOV BH,00 MOV [BX+SI],AL
INT 10H INC SI
RET DEC DI
POSICION ENDP LOOP INVI

MUESTRA PROC NEAR


;interrupción de muestra, falta el valor de DX MOV DX,0B04H
MOV AH,09H CALL POSICION
INT 21H LEA DX,CADENAE
RET CALL MUESTRA
MUESTRA ENDP LEA DX,CADINV
CALL MUESTRA
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

También podría gustarte