You are on page 1of 7

Laboratorio N 02:

Introduccin al ensamblador 80x86


Alumno(a): ...................................................

Nota:

Cdigo: ......................

1. OBJETIVOS:
Conocer las llamadas al sistemas principales y las instrucciones bsicas del
lenguaje ensamblador para los procesadores 80x86.
Conocer los procedimientos para ensamblar programas desarrollados en el
lenguaje ensamblador.
Conocer los procedimientos para el manejo bsico de dispositivos de
entrada/salida.
Adquirir destreza en el desarrollo de aplicaciones en Lenguaje Ensamblador.
2. REQUERIMIENTO DE SOFTWARE
Simulador de Lenguaje ensamblador para procesadores 80x86: Emu8086
versin 4.07.
3. REVISIN TERICA: Funciones principales de la llamada al sistema INT 21H
El sistema operativo tiene codificadas un conjunto funciones de servicios para el
manejo bsico de entradas y salidas..
a) Leer carcter de teclado con eco: 01h
Se requiere:
y se ejecuta con

AH = 01h
INT 21h

Respuesta: cdigo del carcter en AL

b) Leer carcter de teclado sin eco: 07h


Se requiere:
y se ejecuta con

AH = 07h
INT 21h

Respuesta: cdigo del carcter en AL

c) Funcin de impresin de caracteres en pantalla: 02h


Se requiere:
y se ejecuta con

AH = 02h
INT 21h

cdigo de carcter en DL

d) Funcin de impresin de caracter en impresora: 05h


Se requiere:
Y se ejecuta con

AH = 05h
INT 21h

cdigo de carcter en DL

e) Funcin de impresin de cadenas en pantalla: 09h

Page 1

Ing. Rafael Garca Chinguel

Se requiere:
Y se ejecuta con

AH = 09h
INT 21h

direccin de comienzo de cadena en DS : DX


Nota: la cadena debe terminar con $.

f) Funcin de lectura de cadenas por teclado: 0Ah


Se requiere:
AH = 0Ah
Direccin de rea de recepcin o buffer apuntado por DS:DX:
- DS:DX, debe contener N+1, N nmero mximo de caracteres a ser ledos.
Al ejecutarse INT 21h:
- A partir de la direccin DS:(DX+2), se registran consecutivamente los ASCII
de los caracteres digitados hasta un mximo de N, adicionalmente el cdigo de
retorno de carro (ENTER cuyo ASCI es 0Dh) en lugar de N+1.
- Se contabiliza slo el nmero de caracteres ingresados (No de Enter) y el
total se almacena en la direccin DS:(DX +1).
Ejemplo:
Cdigo ejemplo para ingresar 10 caracteres como mximo:
MOV DX, 150h
; buffer empieza en DS:DX = DS:0150
MOV BYTE [0150], 10
; nmero mximo de caracteres no debe ser mayor que 255
MOV AH, 0Ah
; funcin de lectura de cadena de caracteres
INT 21h
; Ejecucin
Si se digita la siguiente cadena: 123 4 [ENTER], se tendr como respuesta:
DS: 0150

0151

0152

0153

0154

0155

0156

0157

0A

05

31

32

33

20

34

0D

05

Space

Enter

Dato

Rpta

4. INFOME PREVIO
a)

Leer detenidamente toda la gua de prctica.

b)

Revisar la informacin de apoyo proporcionado.

c)

Digitar los programas ejemplo y almacenarlos en diferentes archivos de


texto. El da de la prctica deber presentar en formato electrnico.

Page 2

Ing. Rafael Garca Chinguel

5. DESARROLLO DE LA PRCTICA
Mediante el uso del Software simulador Emu80x86 v4.07, edite, ensamble y
simule la ejecucin de los programas ejemplo:
5.1

Ejemplo para imprimir en pantalla


declaracin formal de segmentos
PILA
PILA
DATOS
MENSAJE

DATOS
CODIGO
INICIO:

CODIGO
END

una cadena de caracteres utilizando

SEGMENT ; PARA LA PILA


DW 128 DUP (0)
ENDS
SEGMENT ; PARA LOS DATOS
DB
10,13
DB
"BIENVENIDOS AL CURSO ARQ DE PC'S - PERU",10,13
DB
"==================================","$"
ENDS
SEGMENT ; PARA LAS INSTRUCCIONES
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
MOV AX, DATOS
MOV DS, AX
;PARA IMPRIMIR LA CADENA "MENSAJE" POR PANTALLA
MOV DX, OFFSET MENSAJE (LEA DX, MENSAJE)
MOV AH, 09H
INT
21H
MOV AX, 4C00H
INT
21H
ENDS
INICIO

Anote sus observaciones y conclusiones


..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
5.2

Ejemplo para imprimir en pantalla una cadena de caracteres utilizando


directivas para declarar segmentos
.MODEL
.STACK
.DATA
MENSAJE

SMALL
128
DB 10,13
DB "BIENVENIDOS AL CURSO ARQ de PC`S - PERU",10,13
DB "===================================",10,10,13
DB
FELIZ Y VENTUROSO NUEVO MILENIO ..!!$"

Ing. Rafael Garca Chinguel

.CODE
INICIO:

END

MOV AX, @DATA


MOV DS, AX
; FUNCION PARA IMPRIMIR LA CADENA "MENSAJE"
LEA
DX, MENSAJE
MOV AH, 09H
INT
21H
MOV AX, 4C00H
INT
21H
INICIO

Anote sus observaciones y conclusiones


..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
5.3

Ejemplo para imprimir en pantalla una cadena de caracteres utilizando


directivas para declarar segmentos
.MODEL
.STACK
.DATA
MENSAJE

.CODE
.STARTUP

SMALL
128
DB
DB
DB
DB

10,13
"BIENVENIDOS AL CURSO ARQ DE PC'S",10,13
"==================================",10,10,13
"
IT'S WONDERFUL...!!$"

; directiva para inicializar DS


;PARA IMPRIMIR LA CADENA "MENSAJE"
LEA
DX, MENSAJE
MOV AH, 09H
INT
21H
.EXIT 00 ; directiva para devolver el control al S.O.

END
Anote sus observaciones y conclusiones
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................

Ing. Rafael Garca Chinguel

5.4

Ejemplo para capturar teclas por el teclado con eco


.MODEL
.STACK
.DATA
MENSAJE

ACIERTO
.CODE
.STARTUP

SMALL
128
DB
DB
DB
DB
DB

10,13
"CAPTURANDO LETRAS POR TECLADO",10,13
"=============================",10,10,13,
"PULSE UNA TECLA PARA CONTINUAR ...",10,10,13,"$"
10,13,"ACERTASTE CON NUESTRA LETRA CLAVE$"

;PARA IMPRIMIR LA CADENA "MENSAJE" POR PANTALLA


LEA
DX, MENSAJE ; MOV DX, OFFSET MENSAJE
MOV AH, 09H
INT
21H
;PARA INTERCEPTAR Y VISUALIZAR CARACTERES

DEL

TECLADO
MOV
INT
CMP
JNE
LEA
MOV
INT
JMP
FIN:
.EXIT

AH, 01H ; Funcion leer caracter de teclado con eco


21H
; Rpta: ASCII del caracter en AL
AL, "i" ; Compara con nuestra letra clave
FIN
DX, ACIERTO
AH, 9
21H
FIN
00

END
Anote sus observaciones y conclusiones
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
5.5

Ejemplo para capturar teclas por el teclado sin eco


.MODEL
.STACK
.DATA
MENSAJE

Page 5

SMALL
128
DB
DB
DB
DB

10,13
"CAPTURANDO LETRAS POR TECLADO",10,13
"=============================",10,10,13,
"PULSE VARIAS TECLAS PARA CONTINUAR ... TERMINA
CON <ENTER>",10,10,13,"$"

Ing. Rafael Garca Chinguel

CADENA

DB

BUFF
.CODE
.STARTUP

DB

10,10,13,"LOS CARACTERES QUE INGRESASTE SON


LOS SIGUIENTES:",10,10,13,"$"
20 DUP (' '),'$'
;BUFFER PARA CADENA

LEA
DX, MENSAJE
MOV AH, 9
INT
21H
LEA
BX, BUFF ;POSICION DE BUFFER EN MEMORIA
;SEGMENTO REAL PARA INTERCEPTAR Y VISUALIZAR CARACTERES DEL
;TECLADO
MOV AH, 07H
;PARAMETRO PARA LEER UN CARCTER
SIN ECO
MOV CX, 00H
;INICIALIZA CONTADOR CON CERO
OTRO:
INT
21H
;VISUALIZA UN CARACTER
CMP
AL, 0DH
;ES UN RETORNO DE CARRO
JE
NOMAS
;NO MAS CAPTURA
MOV [BX],AL
;TRANSFIERE CARACTER A MEMORIA
CMP
CX, 19
;SE HAN ESCRITO YA 80 CARACTERES
JE
NOMAS
;SI ES SI DEJAR ESTA RUTINA
INC
CX
;INCREMENTA CONTADOR DE
CARACTERES
INC
BX
;POSIC. DE MEMORIA PARA SIG.
CARACTER
JMP
OTRO
;OBTENER OTRO CARACTER
;RUTINA PARA VISUALIZAR UNA CADENA DE CARACTERES
;PREVIAMENTE ALMACENADA Y NO MAS
NOMAS:
LEA
DX, CADENA
MOV AH, 09
INT
21H
LEA
DX, BUFF
;VISUALIZA CADENA DE CARACTERES
INT
21H
;INTERRUPCION DE DOS
.EXIT 00
END
Anote sus observaciones y conclusiones
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................

Page 6

Ing. Rafael Garca Chinguel

5.6

Ejemplo para leer e imprimir cadenas de caracteres


.MODEL
.STACK
.DATA
MENSAJE
NOMBRE
.CODE
.STARTUP

SMALL
128
DB
DB

"ESCRIBA SU NOMBRE : $"


40H DUP (?)
; PARA LA LECTURA DE LA CADENA

LEA
MOV
INT
MOV
MOV
MOV

DX, MENSAJE ; IMPRIME MENSAJE


AH, 09
21H
DX, OFFSET NOMBRE ;DIRECCION DE NOMBRE
SI, DX
BYTE PTR[SI], 31H
;MAXIMO NUMERO DE
;CARACTERES A LEER 31H
MOV AH, 0AH
; LEE CARACTERES A PARTIR DE DS:DX+2
INT
21H
MOV AH, 02
MOV DL, 10
; CAMBIO DE LINEA
INT
21H
MOV DL, 13
; RETORNO DE CARRO
INT
21H
; IMPRIME CADENA LEIDA A PARTIR DE NOMBRE+2 CON "$" AL FINAL
LEA
DX, NOMBRE
ADD
DX, 2
MOV BL, BYTE PTR[SI+1]
;N DE CARACTERES LEIDOS
MOV BH, 0
MOV BYTE PTR[SI+BX+2],"$"
MOV AH, 9
INT
21H
.EXIT 00
END
Anote sus observaciones y conclusiones
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
6. BIBLIOGRAFA
........................................................................................................................................................
........................................................................................................................................................

Page 7

Ing. Rafael Garca Chinguel

You might also like