Subido por Rodolfo Ramirez

EMULE8086 22

Anuncio
ACTIVIDADES SEMANA 18 al 22 DE MAYO 2020
INSTRUCCIONES. Realiza correctamente las siguientes actividades y deberás subirlas a más tardar
el día 18 de mayo 2020 hasta las 12:00 de la noche.
Realiza correctamente la siguiente practica y contesta la actividad que aparece al final del
documento. Guarda la actividad con el nombre de “EMULE8086_22.pdf” en esta misma carpeta.
PRÁCTICA 4: Manejo de Instrucciones lógicas y el registro de
banderas
DESCRIPCIÓN:
La presente práctica comprueba el funcionamiento de las instrucciones lógicas básicas, mediante
la programación en lenguaje ensamblador.
OBJETIVO:
Programar en lenguaje ensamblador, empleando las instrucciones lógicas. AND, OR, XOR (OR
exclusiva) y NOT (complemento).
INTRODUCCIÓN:
Las llamadas instrucciones lógicas, operan sobre cada uno de los bits de una palabra. Estas funciones
son las conocidas como AND, OR, XOR (OR exclusiva) y NOT (complemento), así como las
instrucciones de desplazamiento circular. Se utilizan para realizar manipulaciones del álgebra
booleana en las variables. También se ocupan para poner a 1 o 0, bits específicos de una palabra y
para comprobar o comparar bits.
Las instrucciones lógicas son frecuentemente usadas como máscaras en los programas: XOR es
frecuentemente utilizada en programas de gráficas para borrar un punto previamente dibujado en
la pantalla y AND se utiliza para filtrar solamente ciertos bits de un byte dado. Otra aplicación para
las funciones lógicas comunes está en la simulación de circuitos lógicos sencillos de hardware.
El registro de banderas es un registro de 16 bits, usados como banderas. Cada uno de los bits señala
un evento dentro del procesador; cuando el bit tiene un valor de 0, el evento no ocurrió (falso);
cuando tiene un valor de 1, el evento ocurrió (verdadero). Hay nueve indicadores de un bit en este
registro. Los cuatro bits más significativos están indefinidos, mientras que hay tres bits con valores
determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno.
15
14
13
12
11
10
9
8
7
6
O
D
I
T
S
Z
5
4
A
3
2
P
1
0
C
Registro de banderas del microprocesador 8086.
Aunque el registro de banderas es de 16 bits sólo hay nueve banderas: O, D, I, T, S, Z, A, P, C. Los
otros 7 bits no son usados.
MATERIAL Y EQUIPO A UTILIZAR:
1. Computadora con el Software Emu8086.
2. Software para diseño de diagramas de flujo (DFD u otros).
DESARROLLO:
La presente práctica consta de 6 puntos, las cuales deberán desarrollarse por parte del alumno
(CONTESTE LAS ACTIVIDADES 1 Y 2 QUE ACONTINJUACIÓN SOLICITA):
1. Investigue en la ayuda del Emu8086 la sintaxis de las instrucciones: AND, OR, XOR y NOT
y anótalo aquí
AND:
Logical AND between all bits of two operands. Result is stored in
operand1.
These rules apply:
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0
Example:
MOV AL, 'a'
; AL = 01100001b
AND AL, 11011111b ; AL = 01000001b ('A')
RET
CZSOP
0 r r 0 r
OR:
Logical OR between all bits of two operands. Result is stored in
first operand.
These rules apply:
1 OR 1 = 1
1 OR 0 = 1
0 OR 1 = 1
0 OR 0 = 0
Example:
MOV AL, 'A'
; AL = 01000001b
OR AL, 00100000b ; AL = 01100001b ('a')
RET
CZSOPA
0 r r 0 r ?
XOR:
Logical XOR (Exclusive OR) between all bits of two operands.
Result is stored in first operand.
These rules apply:
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
Example:
MOV AL, 00000111b
XOR AL, 00000010b ; AL = 00000101b
RET
CZSOPA
0 r r 0 r ?
NOT:
Invert each bit of the operand.
Algorithm:


if bit is 1 turn it to 0.
if bit is 0 turn it to 1.
Example:
MOV AL, 00011011b
NOT AL ; AL = 11100100b
RET
CZS OPA
unchanged
2. Realice diagrama de flujo y código para cada una de las instrucciones: AND, OR, XOR y
NOT. Y anótalo aqui
AND:
Inicio
AL= 01100001b
AL= AL & AL
Fin
OR:
Inicio
AL= 01100001b
AL= AL OR AL
Fin
XOR:
Inicio
AL= 00000111b
AL= AL XOR AL
Fin
NOT:
Inicio
AL= 00011011b
AL= AL NOT AL
Fin
Emule el programa.
3. Ejecute paso a paso, analice detenidamente el programa, comprendiendo cada una de las
sentencias presentadas (en caso de tener dudas, consulte la bibliografía citada, para
conocer el significado de las instrucciones utilizadas).
4.
Guarde cada uno de los programas de acuerdo a NAME.
5.
Conteste cada uno de los incisos que se presentan al final de los programas.
A continuación, se presenta una propuesta del programa el cual deberá ser comprobado de forma
práctica por parte del alumno.
Programa 4.1
NAME "AND"
.model small
.stack
Inicio
.data
.code
AL= 01100001b
INICIO:
mov ax,@data
AL= AL & AL
mov ds,ax
mov ax,0
Fin
mov al, 01100001b ;
and al, 11011111b ; 01000001b
FIN:
int 21h
End
Programa 4.2
NAME "OR"
.model small
.stack
Inicio
.data
.code
AL= 01100001b
INICIO:
mov ax,@data
AL= AL OR AL
mov ds,ax
mov ax,0
Fin
mov al, 01100001b ;
or al, 11011111b ; 01100001b
FIN:
int 21h
End
Programa 4.3
NAME " AND 8 y 16 bits"
Inicio
.model small
.stack
DL=DATO1
AH=MASCARA1
.data
mem db 10 DUP ('x') ;Inicializa 10
;espacios de memoria con caracter 78h
.code
DL=DL & AH
inicio:
mov ax, @DATA
DX=DATO2
AH=MASCARA2
mov ds, ax
mov al,0FFh ;Dato
mov bx,000Ah;Contador
CX=CX & CX
bucle:
mov mem[bx],al ;copia dato ;en mem
Fin
dec bx ;Decrementa BX
jnz BUCLE ;Repite si la ;bandera Z= 0
mov ax,4C00h
int 21h
end
1. Compile y ejecute el programa paso a paso, monitoreando el registro de banderas (FLAGS).
Anote los datos con los que se opera, los resultados y las banderas que se activan.
PF=1: este indicador se establece en 1 cuando hay un número par de un bit en el resultado.
ZF=1: se establece en 1 cuando el resultado es cero.
Se tiene el siguiente código en lenguaje ensamblador, perteneciente a un microprocesador de
la familia 80x86, que comprende algunas de las instrucciones lógicas elementales, que hacen
diversas manipulaciones con los bits de los registros utilizados.
NAME "Operaciones lógicas con procedimientos"
; Programa que ilustra las operaciones lógicas: AND / OR / XOR / NOT
stack segment para stack
db
64 dup ('mystack ')
stack
ends
mydata
segment para 'data'
in1 db
10111010b
in2 db
11111100b
in3 db
00010100b
in4 db
00010011b
ans db
?
mydata
ends
mycode segment para 'code' ;define segmento código para masm
myproc
proc
far
;procedimiento se llama myproc
assume cs:mycode, ds:mydata, ss:stack
push
ds
;guardar posición de reg. ds
sub
ax,ax
;pone un cero en ax
push
ax
;guarda cero en pila, tambien
mov
ax,mydata
;pone posición de dato en ax
mov
ds,ax
;lo pone en registro ds
;ejemplo de sintesis de puertas lógicas
mov
al,in1
;carga primera entrada enal
not
al
;invierte bits de al
mov
ah,in2
;carga segunda entrada en ah
or
al,ah
;or las dos
mov
bl,in3
;carga tercera entrada en bl
and
bl,in4
;y en los dos
xor
al,bl
;salidas de puertas ex-or
mov
ans,al
;guarda resultado en ans
;ejemplo completo de sintesis de puerta
ret
;devuelve control a dos
myproc
endp
;fin del procedimiento llamado myproc
mycode
ends
;fin del segmento código llamado mycode
end myproc
;fin del programa completo
CONCLUSIONES:
Contesta las siguientes preguntas conforme a los programas que corriste en EMULE 8086
a)
b)
c)
d)
¿Cuál es el resultado del registro AL, después de la sentencia NOT AL? BA
¿Cuál es el resultado del registro AL, después de la sentencia OR Al, AH? FC
¿Cuál es el resultado del registro BL, después de la sentencia AND BL, IN4? 14
¿Cuál es el resultado del registro BL, después de la sentencia XOR AL, BL? 10
REFERENCIAS
Requerida

Estructura de computadores: programación del procesador MIPS y su ensamblador.
Álvarez Bermejo, J. A. 2009.

Assembler tutorials. Incluido en el programa Emu8086.
Sugerida

Lenguaje ensamblador para computadoras basadas en INTEL. Irvine, K. R. 2008.
Descargar