Академический Документы
Профессиональный Документы
Культура Документы
INTRODUCCIN AL EMU8086 .
Objetivos especficos
Identificar los principales elementos que conforman el ambiente Integrado de Programacin (IDE)
del programa EMU8086.
Identificar los elementos que conforman un cdigo fuente tpico, escrito con la sintaxis del
lenguaje ensamblador de la familia 8086.
Crear cdigos fuentes usando la sintaxis del lenguaje ensamblador.
Materiales y equipo
Procedimiento
1) Ejecute el programa emulador de microprocesadores EMU8086.
2) En la ventana de bienvenida seleccione la opcin new.
3) En la ventana donde elige el tipo de plantilla selecciones la opcin empty workspace y
luego de clic en OK.
4) Una vez est abierto el IDE y usando la opcin open verifique que en la sub-carpeta inc
(C:\emu8086\inc) existe el archivo IO_BAS.inc, en la opcin tipo seleccione all files (*.*). Si
el archivo no est comunqueselo al docente de laboratorio.
5) Escriba en el IDE el cdigo fuente en lenguaje ensamblador que se muestra a continuacin. Por
favor no digite los comentarios.
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
2
end INICIO
7) Compile el archivo ASM, dando clic en el botn llamado compile . Si se encuentra con algn
mensaje de error corrjalo, si tiene dificultades consulte con su docente de laboratorio. Si no tiene
errores se le pedir que asigne un nombre al archivo EXE, por defecto el programa le asigna el
mismo nombre que el cdigo fuente, pero puede colocarse otro. Para este caso mantenga el
nombre por defecto.
8) Cierre la ventana assembler status (Estado del proceso de compilacin).
Cuntos bytes contiene el archivo ejecutable que se ha creado? __________
9) Emule el archivo EXE, dando clic en el botn llamado emulate. Notar que se abren dos
ventanas, una que muestra el cdigo fuente original (Original Source Code) y la otra es la del
emulador (emulator) que se muestra en la Figura 1.1.
Qu relacin hay entre las variables declaradas en el cdigo fuente y lo que observa en la
ventana de variables?
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
33) Para el caso de la variable frase cambie el nmero de bytes visualizados de 1 a 13 y en pak
de 1 a 51.
34) En esta ventana podr monitorear en tiempo real los cambios en las variables declaradas y ser de
gran ayuda para comprender muchos de los programas que se desarrollen en el laboratorio.
35) Para terminar modifique el cdigo fuente para que aparezca en la pantallas los siguientes textos:
Mi nombre es: .
Que tenga un buen da
36) Cuando este lista la modificacin muestre el resultado al docente de laboratorio. Con esto ltimo
se da por finalizado el procedimiento.
Anlisis de Resultados
2. Existen diferencias entre los formatos de las variables declaradas y los textos que se imprimen en
pantalla? De ser as cules son las diferencias? y a qu se deben?
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
3. Cuando se ejecut el programa paso a paso no todas las lneas del cdigo se ejecutaron de la
misma manera. Agrupe las lneas de instruccin en base a la forma en que se ejecutan.
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
7
Investigacin Complementaria
1) En la variable llamada frase qu funcin cumplen los datos 0Ah y 0Dh?
2) Cul es la relacin de estos datos y el cdigo ASCII?
3) En un compilador de C++ escriba y luego compile el cdigo de C del tutorial, luego compare el
tamao de los archivos fuentes y ejecutables con los obtenidos en esta prctica. Por qu hay
diferencias?
Bibliografa
Objetivos especficos
Materiales y equipo
Procedimiento
1) Ejecute el emulador 8086.
2) Digite el primer programa y guarde el archivo asignndole como nombre su nmero de carnet.
3) Compile el archivo.
4) Use el botn emulate para cargar el archivo ejecutable, pero no lo ejecute.
5) Observe la ventana original source code
Cul lnea de instruccin est resaltada en amarillo? _____________________
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
2
PRIMER PROGRAMA
.model small
.stack
.data
BYTE1 DB 7Ah ;Declara byte (8 bits) en hexadecimal
BYTE2 DB 99 ;Declara byte en decimal
BYTE3 DB 11001111b ;Declara byte en binario
BYTE4 DB 'A' ;Declara byte en formato ASCII
BYTE5 DB ?
BYTE6 DB ?
BYTE7 DB ?
BYTE8 DB ?
.code
mov AX,@data ;Mueve en AX la direccion donde
;esta el segmento de datos
mov DS,AX ;Mueve el contenido de AX a DS
6) En la ventana original source code resalte (haga clic en) en el primero de los datos declarados
BYTE1.
7) Relacione la informacin de la Tabla 1 y la ventana emulator.
8) Resalte cada uno de los datos declarados en el cdigo fuente y complete la informacin de la
Tabla 1.
Determine la direccin de inicio y final del segmento de datos, tanto en formato absoluto como
en segmento:desplazamiento: __________________________________________________________
____________________________________________________________________________________
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
3
BYTE
SEGMENTO DE CDIGO
Instrucciones en
DIRECCIONES DE
lenguaje
MEMORIA
mquina. Instrucciones en
Instrucciones
Cdigos lenguaje
desensambladas
binarios ensamblador
SEGM:DESP ABSOLUTA almacenados en
memoria
0721:0000 07210 B8
0721:0001 07211 20 MOV AX,00720h mov AX,@data
0721:0002 07212 07
MOV DS,AX mov DS,AX
0721:0005 07215 8A
0721:0006 07216 26
0721:0007 07217 00
0721:0008 07218 00
0721:0009 07219 8A
0721:000A 0721A 1E
MOV BL,[00001h] mov BL, BYTE2
0721:000B 0721B 01
0721:000C 0721C 00
07221 8A
07222 16
07223 03
07224 00
0721:0015 07225 88
0721:0016 07226 26
MOV [00004h],AH mov BYTE5, AH
0721:0017 07227 04
0721:0018 07228 00
0721:0019 07229 88
0721:001A 0722A 1E
mov BYTE6, BL
0721:001B 0722B 05
0721:001C 0722C 00
MOV [00007h],DL
0721:0025 07235 B8
0721:0026 07236 00 MOV AX,4C00h mov ax, 4c00h
0721:0027 07237 4C
INT 021h
DIRECCION
PILA O STACK
SEGMENT:DESPLAZ ABSOLUTA
PRIMER DATO
ULTIMO DATO
Tabla 3. Segmento de PILA.
SEGUNDO PROGRAMA
.model small
.stack
.data
BYTE1 DB 0FFh
BYTE2 DB 0AAh
BYTE3 DB 18h
BYTE4 DB 96h
.code
mov AX,@data ;Mueve en AX la direccion donde esta el
mov DS,AX ;Mueve el contenido de AX a DS
mov DX, 110 ;Indica a que puerto se enviaran los datos
29) En la ventana emulator ubique virtual devices y seleccione la opcin simple.exe. Debe
observar una ventana como la que se muestra en la Figura 2.
La direccin de este puerto es 110 (decimal) y es de 8 bits.
Anlisis de Resultados
1. Cuando complet la Tabla 1 el primer dato declarado era 7Ah y al revisar la memoria encontr
tambin 7Ah, pero el segundo dato declarado era 99 y en la memoria no encontr el mismo dato
Por qu ocurre eso?
2. En la Tabla 2 la primera instruccin en lenguaje ensamblador es MOV AX, @DATA pero en las
instrucciones desensambladas se representa como MOV AX, 00720 Por qu ocurre eso?
3. En la Tabla 2 los datos almacenados en memoria para la primera instruccin son los siguientes:
B8, 20 y 07. cmo se relacionan estos cdigos y la lnea de instruccin desensamblada MOV
AX, 00720
4. Al comparar la tercera lnea de instruccin MOV AH, BYTE1 con la respectiva lnea
desensamblada, se sustituye la palabra BYTE1 por un dato entre corchetes Qu significa este
dato?
5. En la Tabla 2 la primera lnea de la columna SEGMENTO:DESPLAZAMIENTO contiene
0721:0000 Cmo se relaciona esta informacin con el contenido de CS:IP en la Tabla 4?
6. En la Tabla 1 la primera lnea de la columna SEGMENTO:DESPLAZAMIENTO contiene
0720:0000 Cmo se relaciona esta informacin con el contenido de DS:DX en la Tabla 4?
7. Cmo se relaciona la informacin en la Tabla 3 con el contenido de SS:SP en la Tabla 4.
8. En el segundo programa por qu necesit cargar el dato 110 en el registro DX para enviar datos
al puerto?
9. Cuando modific el segundo programa por qu fue necesario cambiar el dato en DX de 110 a
0378h?
10. Dibuje un mapa de memoria del micro 8086 tanto en forma absoluta como en
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
9
Investigacin Complementaria
Bibliografa
Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programacin e interfaces, 3 edicin Prentice Hall, Mxico DF, 1997 Biblioteca
UDB 001.6404 B847 1997
UNIVERSIDAD NACIONAL DE INGENIERIA
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I 1
TERCER LABORATORIO
Objetivos especficos
Materiales y equipo
Procedimiento
1) Abra el EMU 8086 y digite el PRIMER PROGRAMA
PRIMER PROGRAMA
.model small
.stack
.data
dato1 db 9Ah ; Dato 8 bits
dato2 dw 2CC2h ; Dato 16 bits
mascara1 db 0F0h ; Mscara 8 bits
mascara2 dw 0FF0h ; Mscara 16 bits
.code
mov ax,@data
mov ds,ax
mov dl, dato1 ;primera parte
mov ah, mascara1
and dl, ah
and cx, bx
and cx, cx
mov ax, 4c00h ;fin del programa
int 21h
END
2) Compile y ejecute el programa paso a paso, monitoreando el registro de banderas (FLAGS) luego de
cada operacin AND. Anote los datos con los que se opera, los resultados y las banderas que se
activan.
____________________________________________________________________________________
____________________________________________________________________________________
4) Ejecute paso a paso el primer bloque. Anote los datos con los que se realizan las operaciones y los
resultados de las mismas, los registros que intervienen en el proceso y el estado de las banderas en
cada paso del proceso.
____________________________________________________________________________________
____________________________________________________________________________________
SEGUNDO PROGRAMA
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
;------primer bloque------
mov dl, 1Ah
mov ax, 2CC2h
xor dl, ah
xor dl, 0FFh
;-----Fin del primer bloque----
;-----inicio segundo bloque----
mov dl, 1Ah
mov ax, 2CC2h
xor dl, ah
not dl
;-----Fin del segundo bloque---
mov ax, 4c00h ;fin del programa
int 21h
End
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
3
5) Ejecute ahora el segundo bloque y anote los datos con los que se opera, los resultados y las banderas
que se activan durante el proceso.
____________________________________________________________________________________
____________________________________________________________________________________
6) Como se ha visto en los programas anteriores, algunas de las banderas se activan del resultado de
una instruccin. Pero tambin algunas banderas se pueden activar o desactivar mediante
instrucciones especficas, sin tomar en cuenta el resultado de alguna operacin. Como un ejemplo
inserte la siguiente modificacin en el SEGUNDO PROGRAMA.
7) Ejecute paso a paso el programa monitoreando simultneamente el estado de las banderas, note
como se activan o desactivan.
9) Ejecute solo las primeras cuatro instrucciones, monitoreando las banderas Cules se activaron?, cul
fue el resultado de la operacin? cmo interpreta el resultado?
____________________________________________________________________________________
____________________________________________________________________________________
10) Ejecute hasta la instruccin TEST y conteste otra vez las preguntas del paso 9 del procedimiento.
____________________________________________________________________________________
____________________________________________________________________________________
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
4
TERCER PROGRAMA
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
End
Anlisis de Resultados
a) Primer programa.
1. Qu objetivos se buscan al usar la mascara1 (F0h) con las tres diferentes instrucciones lgicas?
2. Cuando se ejecuta la primera instruccin AND el bit 7 del resultado termina en estado alto y se
activa la bandera S, en la segunda instruccin AND tambin termina en alto, pero esta vez no se
activa la bandera por qu?
3. Modifique las lneas que contienen la instruccin AND, sustituyndola por la instruccin OR y
Anote los datos con los que se opera, los resultados y las banderas que se activan.
4. Modifique las lneas que contienen la instruccin AND, sustituyndola por la instruccin XOR y
Anote los datos con los que se opera, los resultados y las banderas que se activan.
5. En el programa se declaran datos para hacer las operaciones dnde se guardan estos datos?
b) Segundo programa.
1. Cuando se ejecutan el primer bloque del programa el resultado se almacena en DL, lo mismo
ocurre con el segundo bloque; los dos resultados son idnticos, pero el estado de las banderas no
lo es por qu?
2. Al modificar el programa, tanto los resultados como las banderas terminaron en distintos estados
cules fueron los cambios especficos que observo?
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
5
c) Tercer programa.
1. Cul es la diferencia fundamental que noto a comparar las instrucciones AND y TEST?
2. Qu relacin existe entre los bit que deseamos probar y el valor especfico de la mscara
seleccionada?
Investigacin Complementaria
En el programa se declaran algunos datos que sern operados dnde se almacenan estos
datos?
Escriba un programa que dado un dato almacenado en AL invierta el estado de los bits
impares desde el D5 hasta el D1, borre los bits pares desde el D6 hasta el D2 y coloque
en 1 los bits D7 y D0
Bibliografa
Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programacin e interfaces, tercera edicin Prentice Hall, MxicoDF,1997 Biblioteca
UDB 001.6404 B847 1997.
Puede consultar el material en lnea del EMU8086 sobre los temas de esta actividad. Se
recomiendan: Arithmetic and logic instructions :
http://www.emu8086.com/assembly_language_tutorial_assembler_reference/asm_tutorial_06.html
UNIVERSIDAD NACIONAL DE INGENIERIA
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I 1
CUARTO LABORATORIO
INSTRUCCIONES ARITMTICAS.
Objetivos especficos
Observar el uso de algunas instrucciones aritmticas y las banderas que son afectadas.
Utilizar correctamente los registros del microprocesador al realizar operaciones aritmticas, tanto
de 8 bits como de 16 bits.
Utilizar el dispositivo virtual Led_Display del EMU8086 para ver mejor los resultados de las
operaciones.
Materiales y equipo
Procedimiento
1) Abra el EMU8086
_________________________________________________________________________________
_________________________________________________________________________________
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
2
PRIMER PROGRAMA
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
;---------primer bloque----------------
;--------------------------------------------
mov dx,199 ;carga la direccin del puerto donde est el display
mov ax,0 ; sacamos un 0 por el puerto para limpiarlo
out dx,ax
mov al, byte1 ;suma de 2 nmeros de 1 byte
add al, byte2
mov [011Eh], al ;guarda el resultado
mov al,[011Eh] ;movemos a AL el resultado de la suma
out dx,al; saca el resultado por el puerto para verlo en el display
;en formato decimal
;-----Fin del primer bloque----------
;--------------------------------------------
;------Segundo bloque----------------
mov ax, word1 ;suma de 2 numeros de 2 byte
add ax, word2
mov [011Fh], ax ; guarda el resultado
mov dx,199 ;carga la direccion del puerto donde est el display
mov ax,[011Fh] ;movemos a AX el resultado de la suma
out dx,ax; saca el resultado por el puerto para verlo en el display
; en formato decimal
;--------Fin del segundo bloque------------
mov ax,4c00H ;termina el programa
int 21h
End
4) Antes de ejecutar el programa tome nota del contenido almacenado en las direcciones
011Eh, 011Fh y 0120h en la Tabla 1, tambin del estado de las banderas y seleccione del
men VIRTUAL DEVICES la opcin LED_DISPLAY.EXE
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
3
____________________________________________________________________________________
____________________________________________________________________________________
SEGUNDO PROGRAMA
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
mov ax,0
mov dx,199
out dx,ax
mov ah, 0AAh ;multiplica 2 nmeros de 1 byte
mov al, 0FFh
mov cl, 06 ;dato a modificar
mul cl
mov [011Eh],ax
mov ax,[011Eh]
mov dx,199
out dx,ax
mov ax,4c00H ;termina el programa
int 21h
End
10) Ejecute paso a paso, analizando el proceso. Anote los resultados en la primera fila de la
Tabla 3.
06
MUL
-06
06
IMUL
-06
Tabla3
11) Modifique el dato de CL colocando -06 y ejecute nuevamente el programa. Anote los
resultados en la Tabla 3.
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
5
12) Cambien la instruccin MUL por IMUL y el dato -06 por 06.
14) Cambie el dato por -06, ejecute nuevamente y anote los resultados
16) Realice el mismo procedimiento del SEGUNDO PROGRAMA, pero ahora el dato que ser
cambiado es 05 y la operacin DIV por IDIV. Anote sus resultados en la Tabla 4.
TERCER PROGRAMA
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
mov ax,0
mov al,123 ;divide 2 numeros de 1 byte
mov cl, 05 ;dato a modificar
div cl
mov [011Eh],al
mov ax,0
mov dx,199
out dx,ax
mov al,[011Eh]
out dx,al
mov ax,4c00H ;termina el programa
int 21h
End
05
DIV
-05
05
IDIV
-05
Tabla 4
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
6
Anlisis de Resultados
a) Primer programa
1. Tomando en cuenta los datos particulares de cada operacin explique el porqu de la activacin
o desactivacin de las banderas O, S, Z, C y A.
2. Modifique el cdigo fuente sustituyendo las instrucciones ADD por ADC y emule nuevamente el
programa, repita el paso 4 y 5 y compare con los resultados obtenidos con los obtenidos con
ADD Qu resultados se modificaron?, qu parte no?, por qu cree que se dieron esos cambios
especficos en los resultados?
b) Segundo programa
1. Cmo se especifica en una instruccin de multiplicacin que se desea trabajar con nmeros de
un byte?
2. En qu registros se almacenan los datos y el resultado de una multiplicacin de un byte?
3. Explique porque los resultados de las operaciones cambiaron al usar IMUL en lugar de MUL.
Utilice clculos para fundamentar su explicacin.
c) Tercer programa
1. Cmo se especifica en una instruccin de divisin que se desea trabajar con nmeros de un
byte?
2. En qu registros se almacenan los datos y el resultado de una divisin de un byte?
3. Explique porque los resultados de las operaciones cambiaron al usar IDIV en lugar de DIV. Utilice
clculos para fundamentar su explicacin.
4. Por qu la ltima modificacin del programa gener un error en la ejecucin?
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
7
Investigacin Complementaria
Bibliografa
Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programacin e interfaces, tercera Edicin Prentice Hall, Mxico DF, 1997.
Biblioteca UDB 001.6404 B847 1997
Puede consultar el material en lnea del EMU8086 sobre los temas de esta actividad. Se
recomiendan: Arithmetic and logic instructions ,
http://www.emu8086.com/assembly_language_tutorial_assembler_reference/asm_tutorial_06.html
UNIVERSIDAD NACIONAL DE INGENIERIA
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I 1
QUINTO LABORATORIO
Objetivos especficos
Analizar el uso de algunas instrucciones de control de flujo, haciendo nfasis en las condiciones
(estado de las banderas) que se necesitan para realizar o no el salto.
Aplicar algunas instrucciones de control de flujo en la resolucin de problemas simples como la
realizacin de un lazo repetitivo y la comparacin entre dos datos.
Mostrar la manera de guardar y extraer informacin de la PILA.
Usar la PILA como un dispositivo de almacenamiento temporal de datos.
Analizar la relacin que hay entre la PILA y el registro puntero de pila SP.
Materiales y equipo
Procedimiento
2) Analice el PRIMER PROGRAMA, ayudado del flujo-grama y los comentarios que explican su
funcionamiento.
3) Digite y emule el programa. Antes de ejecutarlo copie, lnea a lnea, el programa desensamblado en
la columna respectiva as como se muestra en el ejemplo.
Cules son las direcciones de las etiquetas INICIO y BUCLE?
____________________________________________________________________________________
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
2
PRIMER PROGRAMA
Programa
Cdigo Fuente
desensamblado
.model small
.stack
.data
mem db 10 DUP ('x') ;Inicializa 10 .
;espacios de .
;memoria con .
;caracter 78h .
.
.code .
inicio: .
.
mov ax, @DATA MOV AX,00720H
mov ds, ax MOV DS,AX
mov al,0FFh ;Dato MOV AL,0FFH
mov bx,000Ah;Contador
bucle:
mov ax,4C00h
int 21h
end
4) Localice la ubicacin (direcciones) de la cadena mem. Anote las direcciones y su contenido en la
Tabla 1.
5) Ejecute paso a paso monitoreando los cambios que se dan en mem. Al final anote el contenido final
en Tabla 1.
6) Ejecute nuevamente el programa, contando las veces que se ejecuta la instruccin mov mem[bx],
al y monitoreando el registro de banderas, sobre todo antes y despus de la operacin de
decremento
Cuntas veces se realiz la instruccin MOV? ______
Qu caus el rompimiento del lazo de repeticin? _______________________
7) Modifique el cdigo de manera que los cambios solo afecten a los elementos de la cadena mem.
Cuando lo logre notifquelo a su docente de laboratorio.
8) Emule el SEGUNDO PROGRAMAtomando nota del contenido inicial de las cadenas fuente y
destino y el intervalo de direcciones donde estn almacenadas.
____________________________________________________________________________________
____________________________________________________________________________________
9) Ejecute paso a paso observando las modificaciones en las cadenas y las banderas. No pierda de vista
el registro contador CX.
____________________________________________________________________________________
____________________________________________________________________________________
11) Ejecute nuevamente el programa y cuente las veces que se almacenan datos en la cadena destino
_______
Cul es la instruccin que hace el salto condicional? _________
Qu caus el rompimiento del lazo de repeticin? _______________________
SEGUNDO PROGRAMA
Cdigo Fuente
.model small
.stack
.data
fuente db 48,49,50,51,52,53,54,55,56,57
destino db 10 DUP (4Dh) ;destino 4Dh = 'M'
.code
inicio:
mov ax, @DATA
mov ds, ax
mov cx,10 ;Contador
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
4
inc si
CX = CX - 1
end
NO
CX = 00h
SI
FIN
12) Ahora analice el TERCER PROGRAMA, note que emplea instrucciones que cargan y extraen datos de
la PILA.
15) Active nuevamente el emulador. Esto se hizo para borrar la memoria del emulador y que no
interfieran los resultados anteriores con el nuevo programa.
17) Visualice el contenido de la PILA (STACK) dando clic en el botn stack , le aparecer una ventana
como la mostrada en la Figura 5.1 (el simbolo > indica cual es exactamente la localidad que se
esta apuntando)
Figura 5.1
____________________________________________________________________________________
____________________________________________________________________________________
TERCER PROGRAMA
Cdigo Fuente
.model small
.stack
.data
.code
inicio:
mov ax, @DATA
mov ds, ax
xor si,si ;Inicializa registro
pushf
inc si ;incrementa SI
cmp si, 02
jc BUCLE ;salte si C = 1
popf ;saca banderas de la PILA
mov al,0 ;Borra AL
adc al,0 ;Carga el acarreo en AL
mov resul[si],al ;ltimo byte del resultado
mov ax,4C00h
int 21h
end
26) Antes de ejecutar JC Se dar el salto o no? __________
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
7
28) Ahora se repetir el bloque aritmtico. Responda nuevamente a las preguntas del punto 22, para la
situacin actual
____________________________________________________________________________________
____________________________________________________________________________________
31) El siguiente bloque involucra al salto condicional otra vez saltar de nuevo? Por qu?
____________________________________________________________________________________
____________________________________________________________________________________
32) Comprubelo.
Anlisis de Resultados
a) Primer programa.
b) Segundo programa.
c) Tercer programa.
1. Qu funcin cumple la instruccin CLC?
2. Qu informacin se gurda en la PILA al ejecutar PUSHF?
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
8
3. Qu relacin hay entre los datos que se al maceran en la PILA y el estado de las banderas,
durante la ejecucin del programa?
4. Por qu es importante para el proceso del programa almacenar datos en la PILA?
5. Qu relacin entre el dato en SP y las instrucciones PUSHF y POPF?
6. Qu ocurrira si las instrucciones PUSHF y POPF del programa se cambian por PUSH y POP
respectivamente?
7. Cmo se relacionan los datos que se almacenan en la PILA y el estado de las banderas? Explique
por lo menos un ejemplo que observo en su programa.
8. Al realizar un salto se almacena o extrae informacin de la PILA?
Investigacin Complementaria
Bibliografa
Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programacin e interfaces, tercera edicin Prentice Hall, Mxico DF, 1997.
Biblioteca UDB 001.6404 B847 1997
Puede consultar el material en lnea del EMU8086 sobre los temas de esta actividad. Se
recomiendan:Program flow control
http://www.emu8086.com/assembly_language_tutorial_assembler_reference/asm_tutorial_07.html
UNIVERSIDAD NACIONAL DE INGENIERIA
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I 1
SEXTO LABORATORIO
EL MACROENSAMBLADOR.
Objetivos especficos
Materiales y equipo
Procedimiento
1) Abra una ventana de DOS, haciendo clic en Inicio, Ejecutar y digitando la palabra cmd.
2) Se abrir una ventana similar a la mostrada en la Figura 1. Esta apuntar a un directorio que puede
variar de mquina a mquina, en el caso de la Figura apunta a C:\WINDOWS, sea cual sea el
directorio al que apunte debemos llegar al subdirectorio donde est el programa MASM y LINK en el
caso de las mquinas del laboratorio de microprocesadores estn en la carpeta llamada MASM50
para ello use el comando CD seguido del directorio que necesite, en este caso digite:
CD C:\MASM50 (\ = ALT+92)
Figura 1.
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
2
3) Digite el comando DIR y verifique que en el subdirectorio se encuentran los archivos: MASM.EXE y
LINK.EXE, que son imprescindibles para desarrollar esta prctica. Si no estn avise inmediatamente a
su docente de laboratorio.
PRIMER PROGRAMA
.MODEL SMALL
.CODE
INICIO:
;------------------------------------------------
;IMPRESION DE UN CARACTER
;------------------------------------------------
mov dl, 01h ;Almacena carcter ASCII
mov ah, 02h ;Dato necesario para la INT 21h
int 21h ;Imprime el carcter en DL
mov ax,4C00h
int 21h
.STACK
7) Usando el comando DIR verifique la existencia de su archivo y anote cuantos bytes contiene.
_______
8) Ahora se va a convertir el cdigo fuente (ASM) en objeto (OBJ) usando el compilador (archivo
MASM), digitando MASM seguido del nombre del programa SIN LA EXTENSION .ASM ejemplo:
MASM BB05555
objeto; puede ser de gran utilidad para localizar errores en el cdigo fuente. Para crearlo digite un
nombre para el archivo (normalmente el mismo del fuente, pero puede ser otro) sin extensin. Por el
momento solo presione ENTER, ms adelante se retomar este punto en el procedimiento.
Cross-reference [NUL.CRF]:
Le pregunta si desea crear el archivo de REFERENCIAS CRUZADAS, que contiene los smbolos usados en
programa, es muy til para analizar programas muy grandes y que se van a combinar en un nico
archivo EXE. Proceda exactamente como en el punto anterior.
12) Para terminar se le indica si se han encontrado errores en el cdigo, de no ser as se ha terminado el
proceso de compilacin.
13) Para comprobarlo use el comando DIR para buscar los archivos con el nombre su nmero de carn
15) Ahora proceder a convertir el cdigo objeto (OBJ) en auto ejecutable (EXE) usando el enlazador
(archivo LINK), escribiendo la lnea: LINK seguido del nombre del programa SIN LA EXTENSION
.OBJ ejemplo: LINK BB05555
As como al compilar, le indica que el nombre por defecto del archivo ejecutable ser el mismo que el
objeto, usted puede cambiarlo si lo desea. Por el momento presione solo ENTER.
19) En este momento debe tener tres archivos que tienen como nombre su nmero de carnet con
extensiones ASM, OBJ y EXE. Verifique su existencia con el comando DIR y compare el tamao de
cada archivo.
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
4
20) Para comprobar que el programa funciona, proceda a ejecutarlo escribiendo: el nombre del
programa en MS-DOS sin la extensin .EXE
21) Deber ver impreso el carcter ASCII 01h que corresponde a la carita feliz.
22) Abra el cdigo fuente (el archivo con extensin .asm) y cambie el dato almacenado en el primer
bloque por el valor ASCII de la inicial de su primer apellido, luego guarde los cambios y regrese al
ambiente DOS.
23) Tomando como gua los pasos anteriores (del 8 en adelante) compile y enlace el nuevo cdigo
fuente.
24) Ejecute el archivo ejecutable para verificar su buen funcionamiento. Si tiene problemas consultar con
su docente de laboratorio.
25) Cuando se detectan errores en el cdigo fuente se puede usar el archivo .LST para corregir el
problema. Para observar el proceso edite el archivo fuente cambiando las tres instrucciones MOV por
MOB. Guarde los cambios y compile.
26) El proceso le reportara 3 errores y las lneas donde se encuentran los problemas, para poder
corregirlos compile nuevamente, pero ahora cuando vea el mensaje Source listing [NUL.LST]:
digite un nombre (puede ser el mismo del cdigo fuente sin extensin) para que se cree el archivo
LST. Tambin cree el archivo CRF.
27) Usando el comando EDIT busque los archivos que se han creado luego del proceso.
28) Abra el archivo .LST y ubique las lneas donde se estn los errores, deben coincidir con las
modificaciones anteriores.
SEGUNDO PROGRAMA
.MODEL SMALL
.CODE
INICIO:
;------------------------------------------------
;IMPRESION DE CARACTERES
;------------------------------------------------
mov dl, 41h ;Almacena carcter ASCII
mov cx, 001Ah
LAZO:
mov ah, 02 ;Dato necesario para INT
int 21h ;Imprime el carcter en DL
inc dl
loop LAZO
.STACK
END INICIO ;Fin del archivo
31) Digite el cdigo fuente y a partir de l siga el proceso hasta crear un EXE.
33) Analice el TERCER PROGRAMA. Note que se est usando una estructura de procedimientos.
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
6
TERCER PROGRAMA
.MODEL SMALL ;Directiva ;-----------------------------------------------------------------------
.CODE ;Directiva ;DECLARACION DE PROCEDIMIENTOS
INICIO: ;-----------------------------------------------------------------------
;inicializacin de registros
mov ax, @DATA prinstrin PROC NEAR
mov ds, ax mov ah, 09
;impresin de mensajes int 21h
mov dX, offset tex1 ret
call prinstrin prinstrin ENDP
mov dX, offset tex2
call prinstrin readkey PROC NEAR
mov ah, 01
;espera al teclado int 21h
call readkey ret
readkey ENDP
;impresin de vocales
mov dx, offset A ;FIN DEL SEGMENTO DE CODIGO
call prinstrin
mov dX, offset tex3
call prinstrin .DATA ;Directiva simplificada
call readkey
mov dx, offset E tex1 db 0Ah, 0Dh, 'Este programa imprime las letras vocales$'
call prinstrin tex2 db 0Ah, 0Dh, 'Presione cualquier tecla para INICIAR$'
mov dX, offset tex3 tex3 db 0Ah, 0Dh, 'Presione cualquier tecla para CONTINUAR$'
call prinstrin tex4 db 0Ah, 0Dh, 'Fin del programa. GRACIAS!!!!!!$'
call readkey
mov dx, offset I A db 0Ah, 0Dh, 09h, 41h, 24h
call prinstrin E db 0Ah, 0Dh, 09h, 45h, 24h
mov dX, offset tex3 I db 0Ah, 0Dh, 09h, 49h, 24h
call prinstrin O db 0Ah, 0Dh, 09h, 4Fh, 24h
call readkey U db 0Ah, 0Dh, 09h, 55h, 24h
mov dx, offset O
call prinstrin ;------------------------------------------------
mov dX, offset tex3 ;FIN DEL SEGMENTO DE DATOS
call prinstrin ;------------------------------------------------
call readkey
mov dx, offset U .STACK ;Directiva simplificada que define
call prinstrin ;el segmento de PILA
mov dX, offset tex4
call prinstrin
END INICIO ;Fin del archivo
mov ax, 4C00h
int 21h
34) Ubique el segmento de datos y note las cadenas estn declaradas de dos maneras diferentes.
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES
LABORATORIOS DE MAQUINAS COMPUTADORAS I
7
35) Auxilindose del cdigo ASCII identifique a que caracteres corresponden los datos: 0Ah, 0Dh, 09h,
41h, 45h, 49h, 4Fh, 55h y 24h
________________________________________________________________________
________________________________________________________________________
37) Guarde los archivos que ha creado en esta prctica, le servirn para la prctica 8, no olvide incluir el
programa del anlisis de resultados.
Anlisis de Resultados
a) Primer programa.
b) Segundo programa.
c) Tercer programa.
PROGRAMA
.MODEL SMALL
.CODE
INICIO:
mov ax, @DATA
mov ds, ax
mov dx, offset texto ;apunta a la cadena
;-------------------------------------------
;IMPRESION DE UNA CADENA
;-------------------------------------------
mov ah, 09 ;Dato necesario para INT
int 21h ;Imprime cadena a la que apunta DX
mov ax, 4C00h ;Necesario para la INT
int 21h ;Retorna el control al SO
.DATA
texto db 'Hola mundo$'
.STACK
END INICIO
Bibliografa
Abel, P. Lenguaje Ensamblador y Programacin para PC IBM y Compatibles, Tercera Edicin Pearson,
Mxico, 1999. Biblioteca UDB: 005.136 A139 1999.
Barry B. Brey. Los microprocesadores Intel, Arquitectura, programacin e interfaces. Editorial Prentice
Hall, Tercera Edicin. Clasificacin UDB: 001.6404 B847 1997.