Sei sulla pagina 1di 5

INSTITUTO TECNOLÓGICO DE MATEHUALA

CUESTIONARIO
Unidad 2 Elementos del Lenguaje
Elaboró:
Castillo Juárez Oscar
Hernández Ortiz Cesar
Juárez Tinajero Luis Eduardo
Pedraza Eguía Simón
Reyna Hernández Juan Antonio

Materia: Lenguaje Ensamblador


Docente: Ing. Martín Luis Ledezma Hernández
Carrera: Ingeniería en Sistemas Computacionales
Grupo: Sexto Semestre
Unidad 2: Elementos del Lenguaje
Semestre: Enero-Junio 2011

Matehuala, S.L.P. Abril 2011


8-1 Explique estos términos: a) dirección corta; b) dirección cercana; c)
dirección lejana
Una operación de salto alcanza una dirección corta por medio de un
desplazamiento de un bite limitado a una distancia de -128 a 127 bytes. Una
operación de salto alcanza una operación cercana por medio de desplazamiento
de una palabra, limitado a una distancia de -32,168 a 32,767 bytes dentro del
mismo segmento. Una dirección lejana puede estar en otro segmento y es
alcanzada por medio de una dirección de segmento y un desplazamiento.

8-2 ¿Cual es número máximo de bytes que una instrucción JMP cercana, un
LOOP y un salto condicional pueden saltar? (b) ¿que características de
código maquina provocan este límite?
Instrucción JMP y LOOP cercana -32,768 a 32,767 distancia de operaciones, sin
embargo una instrucción JMP puede ser de 2 o 3 bites de longitud una operación
en una etiqueta dentro de -128 a +127 bytes es un salto corto. En ensamblador
genera un byte para la operación (EB) y un bite para el operando. El operando
actual como un valor de desplazamiento que la computadora suma al registro IP
cuando se ejecuta el programa. Los limites son 00H hasta FFH o de -128 hasta -
127.
La instrucción LOOP requiere un valor inicial en el registro CX que es cero, la
distancia de salto corto es de -127 hasta +128 bytes, existen dos variaciones de
instrucción LOOP, ambas también decrementan el CX en 1. LOOPE/LOOPZ
continua el ciclo mientras el valor de CX es o la condición de cero esta
establecida, LOOPNE/LOOPNZ continua el ciclo mientras el valor de CX no es
cero y la condición de cero no está establecida.

8-3 una instrucción JMP empieza en una localidad de desplazamiento 0624H.


Determine la dirección de transferencia con base al siguiente código objeto
para el operando JMP:
a) 27H = 597H
b) 6BH=CH
c) C6H=488H

8-4.- Codifique una rutina usando LOOP que calcule la sucesión de


Fibonacci: 1, 1, 2, 3, 5, 8,13…Establezca el límite de 12 vueltas. Ensámblela,
enlácela y utilice DEBUG para rastrear la rutina.
*
.MODEL tiny
.CODE
Inicio: ;Punto de entrada al programa
Mov AX,0 ;AX=0
Mov BX,1 ;BX=1 Estos son los dos primeros elementos 0+1=1
Mov CX,12 ;Repetir 12 veces
Repite:
Mov DX,AX ;DX=AX
Add DX,BX ;DX=AX+BX
Mov AX,BX ;Avanzar AX
Mov BX,DX ;Avanzar BX
Loop Repite ;siguiente número
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END

8.5 Suponga que AX y BX contienen datos con signo y que DX y CX contienen datos
sin signo. Determine las instrucciones CMP (en donde sea necesaria) y de salto
condicional para lo siguiente:
A) ¿el valor de DX excede la de CX?

B) ¿el valor de BX excede e de AX?


C) ¿el CX contiene Cero?
D) ¿existe un desbordamiento?
E) ¿el BX es igual o menor que CX?
F) ¿el DX es igual o menor que el CX?.

8.6 ¿Qué banderas son afectadas y que contendrían en los siguientes


sucesos? Cuando:
A) ¿Ocurrió un desbordamiento? Se activa La bandera Carry Flag(CF) esto
ocurre cuando un resultado aritmético sin signo esta fuera de rango, la bandera
de acarreo es el bit mas significativo, el desbordamiento puede ocurrir cuando: dos
operandos positivos se suman y el resultado es negativo, cuando dos operandos
negativos se suman y el resultado es positivo, el desbordamiento no puede ocurrir
cundo se suman dos operandos con signos opuestos.
B)¿Un resultado es negativo? La bandera Sign Flag(SF) se activa cuando el
resultado es negativo y copia del bit de signo pone la bandera en 1.
C) ¿Un resultado es Cero? Se activa la bandera Zero Flag (ZF) al resultado de
cero.
D) ¿El procedimiento esta en modo de avance paso por paso? La bandera de
Trampa (TF) se encuentra en 1, permite el avance del procedimiento paso a paso
esto bajo control del usuario.
E) ¿Una transferencia de cadena se hace de derecha a izquierda? Se activa
la bandera de dirección con valor de 1 pasando la cadena de derecha a izquierda.

8-7.- Refiérase a la figura 8-3. Si el procedimiento B10 no contiene un RET,


¿Cuál sería el efecto sobre la ejecución del programa?
Si B 10 no termina con una instrucción RET, las instrucciones se ejecutaran
pasando B10 e irán directamente a C10.De hecho, si C10 no contiene un RET el
programa ejecutaría pasando el final de C10, todas las instrucciones (si hay) que
estuvieran hay, con resultados impredecibles.

8-8.- ¿Cuál es la diferencia entre la codificación de un operando PROC con


FAR y con NEAR?
En la forma en que le indica al sistema que el punto de entrada para la ejecución
está lejos o cerca.

8-9.- ¿Cuáles son las formas en que un programa puede iniciar la ejecución
de un procedimiento?
A través de las operaciones CALL y RET
La instrucción CALL transfiere el control a un procedimiento llamado, y la
instrucción RET regresa del procedimiento llamado al procedimiento original que
hizo la llamada.RET debe ser la última instrucción en un procedimiento llamado.

8-10.-En un programa .EXE, A10 llama a B10 llama a C10 y C10 llama a D10.
Como resultado de estas llamadas, ¿Cuántas direcciones contiene la pila?
Son 4 direcciones

8-11Suponga que el BL contiene 1110 0011 y que la localidad llamada


BOONO contiene 0111 1001. Determine el efecto sobre el BL para lo
siguiente:
A) XOR BL, BOONO.
0111 1001
XOR 1110 0011
1001 1010
B) AND BL, BOONO.
0111 1001
AND 1110 0011
0110 0001
C) OR BL, BOONO.
0111 1001
OR 1110 0011
1111 1011
D) XOR BL, 1111 1111B.
1111 1111
XOR 1110 0011
0001 1100
E) AND BL, 0000 0000B.
0000 0000
AND 1110 0011
0000 0000

8-12.- Corrija el programa de la figura 8-4 como sigue: Defina el contenido de


TITLEX como letras mayúsculas y codifique las instrucciones que conviertan
mayúsculas a minúsculas.
TITLE POSCASE (COM) Cambio de mayúsculas a minúsculas
.MODEL SMALL
.CODE
ORG 100H
BEGIN: JMP MAIN
;----------------------------------------------------
TITLEX DB 'CHANGE TI UPPERCASE LETTERS'
;----------------------------------------------------
MAIN PROC NEAR
LEA BX, TITLEX+1 ;Primer carácter a cambiar
MOV CX, 26 ;No de carácteres a cambiar
B20:
MOV AH, [BX] ;Carácter de TITLEX
CMP AH, 61H ;Es
JB B30 ; tetra
CMP AH, 7AH ; mayúscula
JA B30 ; ¿letra?
AND AH, 11001111B ; si convertirla
MOV [BX], AH ;Restaurar en TITLEX
B30:
INC BX ;Establecer para siguiente carácter
LOOP B20 ;Iterar 26 veces
MOV AX, 4C00H ;Hecho -- salida
INT 21H
MAIN ENDP
END BEGIN

8-13
8-14
8-15