Está en la página 1de 17

UNIVERSIDAD NACIONAL DE TRUJILLO.

DIRECCIONAMIENTO EN ASSEMBLER.
EJECUCIÓN POR INTERRUPCIONES
César Arellano Salazar.

ARQUITECTURA Y ORGANIZACIÓN Docente Regular UNT.

DE COMPUTADORAS.
INGENIERIA DE SISTEMAS - V CICLO. SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
PROGRAMA DE ASSEMBLER
DATOS SEGMENT
Área de datos,
< DATOS DEL PROGRAMA>
DATOS ENDS colocados por
etiquetas
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
Directiva ASSUME,
INIC:
MOV AX,DATOS ; asigna a AX el desplazamiento DATOS establece los segmentos
MOV DS,AX ; asigna al registro DS la dirección inicial de programa en
< CODIGO DEL PROGRAMA> memoria.
MOV AX,4C00h ;interrupción de salida al sist. operativo
INT 21h DATOS, CODIGO , PILA
CODIGO ENDS son etiquetas que
asumen un valor de
PILA SEGMENT STACK desplazamiento o
DB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS dirección.

END INIC SESIÓN Nº04


DIRECCIONAMIENTO DE ASSEMBLER
PROGRAMA DE ASSEMBLER
DATOS SEGMENT
Relaciona la
< DATOS DEL PROGRAMA>
DATOS ENDS dirección inicial
del segmento de
CODIGO SEGMENT datos, usando
ASSUME CS:CODIGO, DS:DATOS, SS:PILA Direccionamiento
INIC:
por Registro.
MOV AX,DATOS ; asigna a AX el desplazamiento DATOS
MOV DS,AX ; asigna al registro DS la dirección inicial
< CODIGO DEL PROGRAMA>
MOV AX,4C00h ;interrupción de salida al sist. operativo
INT 21h Interrupción del DOS
CODIGO ENDS 21h, función 4Ch,
transfiere el control al
PILA SEGMENT STACK sistema operativo
DB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS

END INIC SESIÓN Nº04


DIRECCIONAMIENTO DE ASSEMBLER
PROGRAMA DE ASSEMBLER
DATOS SEGMENT
Segmento de Pila
< DATOS DEL PROGRAMA>
DATOS ENDS denominado STACK

CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
INIC:
MOV AX,DATOS ; asigna a AX el desplazamiento DATOS
MOV DS,AX ; asigna al registro DS la dirección inicial Directiva DUP, establece
< CODIGO DEL PROGRAMA> la reserva de bytes para
MOV AX,4C00h ;interrupción de salida al sist. operativo uso de pila LIFO, para
INT 21h
CODIGO ENDS aplicar y desapilar
mediante PUSH y POP
PILA SEGMENT STACK
DB 160 DUP(?) ; separación 160 bytes para uso de pila
PILA ENDS

END INIC SESIÓN Nº04


DIRECCIONAMIENTO DE ASSEMBLER
DEFINE BYTES, WORDS Y DOBLEWORDS

DATOS SEGMENT RAM


DATO1 DB 24, 8, 3Eh, 0F3h
DATO2 DB 45 [ DATO3 ] ? ?
DATO3 DB ?
[ DATO2 ] 2 D
DCADE DB “HOLA M”, “U” ,‘N’,‘D’, ‘O’
F 3
[ DATO1+2 ] 3 E
[ DATO1+1 ] 0 8
DATOS ENDS
[ DATO1 ] 1 8

SEGMENTO
DESPLAZAMIENTOS EQUIVALENTES: DE DATOS DSx10h
[ DATO2 ] = [ DATO1 + 4 ]
[ DATO3 ] = [ DATO1 + 5 ]
[ DATO3 ] = [ DATO2 + 1 ] SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
DEFINE BYTES, WORDS Y DOBLEWORDS

DATOS SEGMENT
DATO1 DB 24, 8, 3Eh, 0F3h “M”
[ DCADE+4] “ ”
DATO2 DB 45
DATO3 DB ? “A”
DCADE DB “HOLA M”, “U” ,‘N’,‘D’, ‘O’
“L”
[ DCADE+1] “O”
[ DCADE ] “H”
DATOS ENDS
[ DATO3 ] ? ?
.
.
.
DESPLAZAMIENTOS EQUIVALENTES: DSx10h
[ DCADE ] = [ DATO2 + 1 ]
[DCADE ] = [ DATO1 + 6 ]
SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
DEFINE BYTES, WORDS Y DOBLEWORDS
DATOS SEGMENT
[ OPERA ] 7 8
DATO1 DB 24, 8, 3Eh, 0F3h
? ?
DATO2 DB 45
[ PALAB ] ? ?
DATO3 DB ?
0 0
DCADE DB “HOLA M”, “U” ,‘N’,‘D’, ‘O’
0 5
DATWR DW 234Eh, 5 [DATWR+1] 2 3
PALAB DW ? [ DATWR ] 4 E
OPERA DD 45678h [DCADE +9] “O”
DATOS ENDS .
.
.
DESPLAZAMIENTOS EQUIVALENTES: DSx10h
[ DATWR ] = [ DCADE + 10 ]
[PALAB] = [ DATWR + 4 ]
SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
DEFINE BYTES, WORDS Y DOBLEWORDS
DATOS SEGMENT [ OPERA+4]

DATO1 DB 24, 8, 3Eh, 0F3h 0 0


0 4 DOBLE
DATO2 DB 45
5 6 WORD
DATO3 DB ?
[ OPERA ] 7 8
DCADE DB “HOLA M”, “U” ,‘N’,‘D’, ‘O’
? ?
DATWR DW 234Eh, 5 WORD
[ PALAB ] ? ?
PALAB DW ?
0 0
OPERA DD 45678h [DATWR+2]
WORD
0 5
DATOS ENDS [DATWR+1] 2.3
.
VALORES ACCEDIDOS: .
DSx10h
WORD EN DS:[PALAB] = NULL
WORD EN DS:[DATWR+2] = 0005 h
DOBLEWORD EN DS:[OPERA] = 00045678 SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
DIRECCIONAMIENTO INDIRECTO
DATOS SEGMENT
DATO1 DB 24, 8, 3Eh, 0F3h RAM
DATO2 DB 45 byte
[ DATO3 ] ? ? accedido
DATO3 DB ? que escribe
[ DATO2 ] 2 D
……… AL
F 3
DS:[BX+SI]
[DATO1 + 2] 3 E
………
LEA BX, DATO1 [DATO1 + 1] 0 8
MOV SI,2 [ DATO1 ] 1 8

MOV AL,[BX+SI] SEGMENTO


………… DE DATOS DSx10h

BYTE ACCEDIDO EN DS:[BX+SI]


DS: [DATO1 + 2] = 3E h AL = 3E h SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
DIRECCIONAMIENTO INDIRECTO
DATOS SEGMENT
DS:[BX+DI]
DATO1 DB 24, 8, 3Eh, 0F3h RAM se escribe
DATO2 DB 45 79 h
[ DATO3 ] ? ?
DATO3 DB ?
[ DATO2 ] 2 D
………
F 3
[DATO1 + 2] 3 E
………
LEA BX, DATO3 [DATO1 + 1] 0 8
MOV DI,0 [ DATO1 ] 1 8

MOV [BX+SI], CL SEGMENTO


………… DE DATOS DSx10h

BYTE ACCEDIDO EN DS:[BX+DI]


DS: [DATO3] = null CX=4679h SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
DIRECCIONAMIENTO INDIRECTO
DATWR DW 234Eh, 5 [ OPERA+4]

PALAB DW ? 0 0
0 4
OPERA DD 45678h
5 6
…….
[ OPERA ] 7 8 word
……… ? ? accedido
que escribe
LEA BX, DATWR [ PALAB ] ? ? al AX
MOV SI,2 0 0 DS:[BX+SI]
MOV AX, [BX+SI] [DATWR+2] 0 5
………… [DATWR+1] 2.3
.
.
WORD ACCEDIDO EN DS:[BX+SI] DSx10h
DS: [DATWR + 2] = 0005 h
NUEVO VALOR DE AX = 0005 h
SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
DIRECCIONAMIENTO DIRECTO
DATO3 DB ? CX = 45EA
[ OPERA ] 7 8 Escribe en
……
? ? PALAB
PALAB DW ?
[ PALAB ] ? ?
DS:[PALAB]
……… 0 0
MOV PALAB, CX
. DL = 06
MOV DATO3, DL .
. Escribe en
MOV BH, DATO3 DATO3
………… [DATO3] ? ?
DS:[DATO3]
CX = 45EA h BX = 562B h DX = 9006 h .
.
.
POSICIONES ACCEDIDAS DSx10h
DS:[PALAB] = Word null será sobre-escrita
DS:[DATO3] = byte null será sobre-escrita
Valor escrito en BX = 062B h SESIÓN Nº04
DIRECCIONAMIENTO DE ASSEMBLER
DIRECCIONAMIENTO INDEXADO
DCADE DB “HOLA M”, “U” ,‘N’,‘D’, ‘O’
…… byte
“M” accedido
RESER DB 10 DUP(?) ; reserva 10 bytes que escribe
[ DCADE+4] “ ”
……. AL
“A” DS:[DCADE+2]
……… “L”
MOV SI, 2 [ DCADE+1] “O”
MOV AL , DCADE [SI] [ DCADE ] “H”
MOV RESER [DI] , AL [ DATO3 ] ? ?
.
………… .
.
BYTE ACCEDIDO EN DS:[DCADE+SI] DSx10h
DS: [DCADE+2] = “L” AX=4679h
ASCCI DE LA “L” =76 en hexadecimal=4C h
NUEVO VALOR DE AX = 464C h SESIÓN Nº04
INTERRUPCIONES EN ASSEMBLER

INTERRUPCIONES DE DOS 21h Y BIOS 10h

FUNCION 02h INTERRUPCION 10h


COLOCACION DEL CURSOR MODO TEXTO FUNCION 06h INTERRUPCION 10h
RECORRIDO DE PANTALLA (limpiar área de
MOV AH,02h ; petición para colocar el cursor pantalla)
MOV BH,00 ; Número de página activa 0
MOV AH,06h ; petición para recorrido de pantalla
MOV DH,05 ; Renglón 05
MOV AL,00 ; para recorrido completo
MOV DL,12 ; Columna 12
MOV BH,71h ; Número de atributo fondo (7) y texto (1)
INT 10h ; interrupción que llama al BIOS
MOV CX,0000h ; Renglón 00 y columna 00
MOV DX,184Fh ; Renglón 24 y columna 79
INT 10h ; interrupción que llama al BIOS

SESIÓN Nº04
INTERRUPCIONES EN ASSEMBLER

INTERRUPCIONES DE DOS 21h Y BIOS 10h


FUNCION 0Ah INTERRUPCION 21h
FUNCION 09h INTERRUPCION 21h ENTRADA DESDE TECLADO Y ALMACENAJE EN
DESPLIEGUE DE CARACTERES EN PANTALLA MEMORIA DE UNA CADENA

MENSAJE DB ‘UNIVERSIDAD NACIONAL’, ‘$’ ETIQUETA LABEL BYTE ;inicio de la lista de parámetros
............ MAXIMO DB 20
MOV AH,09h ; Petición para desplegar LONGIT DB ?
LEA DX,MENSAJE ; Carga el desplaz del mensaje NOMBRE DB 20 DUP(?)
INT 21h ; Llama al DOS ............
MOV AH,0Ah ; Petición de la función de entrada

LEA DX,ETIQUETA ; Carga el desplaz de la etiqueta

INT 21h ; Llama al DOS

SESIÓN Nº04
INTERRUPCIONES EN ASSEMBLER

INTERRUPCIONES DE DOS 21h Y BIOS 10h


FUNCION 02h INTERRUPCION 21h
DESPLEGADO DE CARACTER EN PANTALLA
FUNCION 00h INTERRUPCION 10h
ESTABLECE MODO DE VIDEO MOV AH, 02h ; función para desplegar un caracter
MOV DL, Char ; caracter desplegado en pantalla
INT 21h ; Llama al DOS
MOV AH,00h ; función establecer modo de video
Ejemplo:
MOV AL,03 ; Modo texto a color
CADENA DB ‘INGENIERIA DE SISTEMAS’,13
INT 10h ; Llama al BIOS .................

MOV CX, 22
LEA BX, CADENA
MOV AH, 02h
LAZ: MOV DL, [BX+DI]
INT 21h
INC DI SESIÓN Nº04
LOOP LAZ
INTERRUPCIONES EN ASSEMBLER

INTERRUPCIONES DE DOS 21h Y BIOS 10h

FUNCION 05h INTERRUPCION 10h FUNCION 03h INTERRUPCION 10h


SELECCIÓN DE LA PAGINA ACTIVA LEE LA POSICIÓN DEL CURSOR
(para los modos de vídeo 0-3)
MOV AH,03h ; petición para leer la posición de cursor
MOV AH,05h ; petición de página activa MOV BH,00 ; Número de página activa 0
INT 10h ; Llama al BIOS
MOV AL,00 ; Número de página .............................
INT 10h ; Llama al BIOS
devuelve:
CX = Línea inicial y final de Rastreo de cursor (CH,CL)
DX = Renglón y columna actual del cursor (DH, DL)

SESIÓN Nº04

También podría gustarte