Autoevas U3, U4 Flashcards

(114 cards)

1
Q

Programar en ensamblador requiere los siguientes pasos: El código fuente es la entrada del enlazador, el cual verifica la sintaxis y lo traduce a código máquina formando un módulo objeto. Posteriormente, un compilador traduce todas las referencias relativas a direcciones absolutas y termina generando el ejecutable.

A

Falso

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Un programa en lenguaje ensamblador para la arquitectura x86 correrá sin problemas en una arquitectura ARM.

A

Falso

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

El lenguaje ensamblador permite un control directo de la CPU y otros elementos de la computadora.

A

Verdadero

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Herramienta que se utiliza para compilar y enlazar un programa.

A

GNU Compiler Collection

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Ejemplo de casos en los que se utiliza el lenguaje ensamblador.

A

Para utilización y aprovechamiento de dispositivos y recursos del sistema

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Secciones principales en que se divide un programa en ensamblador.

A

Datos y código

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Tamaño en bits de las instrucciones en ensamblador en la arquitectura ARM.

A

32 bits

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Son expresiones que aparecen en el módulo fuente e indican al compilador que realice determinadas tareas en el proceso de compilación.

A

Directiva

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Es un conjunto de sentencias en ensamblador (directivas e instrucciones) que pueden aparecer varias veces en un programa con algunas modificaciones (opcionales).

A

Macro

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Es una entidad que aporta un valor numérico, que puede expresarse en distintas bases o incluso a través de una cadena.

A

Dato

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Cada archivo fuente debe tener un punto de inicio y por defecto en el ensamblador GCC este punto es la etiqueta “main:”.

A

Verdadero

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

En el depurador, el comando list nos mostrará el código del programa.

A

Verdadero

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Comando para ejecutar un programa dentro del depurador.

A

r

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Comando para mostrar información sobre los puntos de interrupción.

A

info b

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Para utilizar el depurador se debe compilar el programa utilizando el parámetro -g para que se agregue información de depuración.

A

Verdadero

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

La única utilidad de depuración a su disposición es el uso de puntos de interrupción y la capacidad de recorrer los comandos uno por uno permitiendo ver su programa en acción, paso a paso.

A

Falso

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Formas en que se calcula la dirección de memoria para recuperar o almacenar datos.

A

Modos de direccionamiento

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

En la arquitectura ARM los accesos a memoria se hacen mediante instrucciones específicas LDR y STR.

A

Verdadero

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Cantidad de bits que se pueden utilizar en el direccionamiento por registro.

A

4

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Instrucción que guarda el valor de R2 en la dirección contenida en R1 más 12 bytes.

A

STR R2, [R1, #+12]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Cuáles registros pueden ser usados en el modo de direccionamiento registro indirecto?

A

Los registros de propósito general (R0 a R15)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

El programador puede hacer nuevos modos de direccionamiento.

A

Falso

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

La unidad mínima en que se divide la memoria en ARM.

A

Byte

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Cuál es el mayor valor hexadecimal que se puede mover a cuatro ubicaciones consecutivas en la memoria de datos?

A

0xFFFFFFFF

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿En qué registro pone el resultado la siguiente instrucción? “LDR R6, [R3]”.
R6
26
Instrucciones para cargar el valor desde las ubicaciones de memoria 0x20-0x23 en el registro R4.
MOV R1, #0x20 LDR R4, [R1]
27
Instrucción para almacenar el contenido de R2 en la ubicación de memoria señalada por R8.
STR R2, [R8]
28
¿Qué acción se realiza en las siguientes 3 instrucciones? MOV R1, #0x20 MOV R2, #0x95 STRB R2,[R1].
Almacenar en un espacio de un byte, el valor 0x95 en la ubicación de la memoria con la dirección 0x20.
29
Cuando se utiliza el GNU Compiler Collection, el compilador de C invocará el enlazador para vincular el archivo con la biblioteca estándar de C, que proporciona funciones como printf y scanf.
Verdadero
30
El comando SWI también se conoce a menudo como SVR o llamada de supervisor.
Verdadero
31
Registro que contiene la dirección inicial de la cadena de caracteres para escribir una secuencia en pantalla.
R1
32
Registro que determina el flujo de salida, 1 para indicar que será el monitor.
R0
33
Registro que tendrá la cantidad de caracteres que se escribirán.
R2
34
Registro que será el número de Syscall, es decir igual a 4.
R7
35
¿Cuál es la explicación después de ejecutar el siguiente bloque de código? MOV R2, #0x4F MOV R4, #0xFFFFFFB1 ADDS R2, R4, R2.
0x4F + 0xFFFFFFB1 = 0x00000000 El resultado es mayor que 32 bits hay un acarreo del bit más significativo y los restantes bits son todos ceros por lo que C=1 y Z=1
36
¿Por qué la bandera Z se establece en 0 en el siguiente código? MOV R2, #0x4F MOV R4, #0xB1 ADDS R2, R4, R2.
0x4F + 0xB1 = 0x100 El resultado es menor que 32 bits y diferente de cero por lo que C=0 y Z=0
37
¿Cuál es la diferencia entre las instrucciones ADDS y ADD?
La instrucción ADDS actualiza los bits del registro CPSR y ADD no actualiza dicho registro.
38
Elija la forma en que la CPU resta 0x05 de 0x43.
0x05 se pasa a complemento a dos y luego se suma a 0x43
39
Si C=1, R2 = 0x95 y R3 = 0x4F antes de la ejecución de "SBC r2, r2, r3", ¿cuál será el contenido de R2 después de la resta?
R2 = R2 – R3 –1 + C = 0x95 – 0x4F – 1 + 1 = 0x46
40
La ‘S’ al final de la instrucción SUBS indica que no se actualizan las banderas de estado.
Falso
41
¿Cuál será el valor de R4 después de ejecutar el siguiente bloque de instrucciones? MOV R1, #10; MOV R2, #4; MOV R3, #20; MLA R4, R1, R2, R3.
60
42
Si R1=0xFFFFFFFF ¿Qué instrucción se debería utilizar para multiplicar R1 por el mismo?
UMULL R3, R4, R1, R1
43
En la multiplicación sin signo “MUL R1, R2, R4” si R4 = 0xFFFFFFFF ¿Qué valor puede tener R2 para que no haya perdida de bits en la operación?
1
44
La instrucción MUL se utiliza para multiplicar números cuyo producto ocupe más de 32 bits.
Falso
45
En la siguiente instrucción “UMULL R3, R4, R1, R2” ¿Cuál registro contendrá los 32 bits menos significativos del resultado de la multiplicación?
R3
46
¿Cuál es el valor de R2 después de ejecutar el siguiente código? MOV R0, #0x97; MOV R1, #0xf0; AND R2, R0, R1.
1 0 0 1 0 0 0 0
47
Usando los valores 0x4FCA y 0xC237. ¿Cuál es el resultado al aplicar la instrucción AND?
0x4202
48
Usando los valores 0x4FCA y 0xC237. ¿Cuál es el resultado al aplicar la instrucción ORR?
0xCFFF
49
Usando los valores 0x4FCA y 0xC237. ¿Cuál es el resultado al aplicar la instrucción EOR?
0x8DFD
50
Aplicando la instrucción AND con los operandos 0xFFFFFFFF y 0, el resultado será:
Todos los bits en ceros
51
Para colocar todos los bits de un operando en 1, ¿Con qué otro operando se debe utilizar con la instrucción ORR?
Todos los bits en uno
52
Aplicar el operador OR exclusivo de un número con él mismo, dará como resultado:
Todos los bits en cero
53
¿Qué instrucción pondrá en 0 el tercer bit de un número?
BIC R5, R5, #0x8
54
Las instrucciones que usan el sufijo EQ o NE se ejecutarán evaluando la bandera:
Z
55
Después de ejecutar la instrucción ADD, ¿Bajo qué condición el valor de la bandera Z se pondrá en 1?
El valor de la bandera Z no será modificado
56
Después de ejecutar la instrucción ADDS, ¿Bajo qué condición el valor de la bandera Z se pondrá en 1?
Cuando el resultado sea igual a cero
57
¿Qué acción realiza las siguientes instrucciones? CMP R10, R5 MOVHI R10,#0.
SI R10 > R5 entonces R10=0
58
Pocas instrucciones en la arquitectura ARM tienen la característica de ejecución condicional.
Falso
59
MOVVC es una instrucción válida.
Verdadero
60
Los códigos de condición actúan sobre el estado de las banderas del registro CPSR.
Verdadero
61
Las instrucciones condicionales se ejecutan evaluando los bits de control del registro CPSR.
Falso
62
Las instrucciones que usan el sufijo HI solo se ejecutarán si se establece el indicador de acarreo (C=1) y el indicador de cero está limpio (Z=0).
Verdadero
63
¿Cuál es el límite físico al que puede ocurrir un salto o bifurcación?
32 MB
64
En la arquitectura ARM los nemónicos JSR(Jump SubRoutine) y RTS(ReTurn from Subroutine) se utilizan para saltar a una subrutina y para retornar respectivamente.
Falso
65
En la instrucción “BEQ NEXT”, ¿Cuál es la bandera que se verifica?
Bandera Z del registro de estado
66
La instrucción “BNE BACK” hace su decisión basada en la última instrucción que afectó la bandera Z.
Verdadero
67
El nemónico BNE significa:
Branch if not equal
68
Si los valores almacenados en los registros son: R1 = 2, R2 = 5. Indique el valor del R0 después de ejecutar el siguiente trozo de código. CMP R1, R2 MOVE R0, #1 MOVLT R0, #2 MOVGT R0, #3 MOVGE R0, #4.
2
69
Elija el equivalente en lenguaje C del siguiente código en ensamblador. CMP R2, R3 MOVGE R0, #1 MOVLT R0, #2.
if (r2 < r3) { r0 = 2; } else { r0 = 1; }
70
Dado el siguiente bloque de código en ensamblador, determine qué hace. CMP R1, R2; LDRE R0, R1; LDRLT R0, R2; LDRGT R0, R1.
Coloca el R0 el número mayor
71
Cuando se realiza un desplazamiento a la izquierda, el bit más significativo se descarta del dato y entra en la bandera de acarreo y el hueco hecho por el bit menos significativo al desplazarse se llena con un 0.
Verdadero
72
Desplazar n bits a la derecha es equivalente a multiplicar un número por 2^n.
Falso
73
Si el valor almacenado en R4 = 3, ¿Cuál es el resultado de la siguiente instrucción? ADD R5, R4, R4, LSL #2.
15
74
Elija el resultado de desplazar 2 bits a la izquierda del número 00010001.
01000100
75
Desplazar n bits a la izquierda es equivalente a multiplicar un número por 2.
Falso
76
Para el siguiente número con signo 00000011, si se realiza rotamiento a la derecha de un bit el resultado será:
10000001
77
Para el siguiente número con signo 10100011, si se realiza un desplazamiento aritmético de un bit a la derecha el resultado será:
11010001
78
En el desplazamiento lógico se preserva el bit de signo.
Falso
79
Para el siguiente número con signo 00000011, si se realiza rotamiento a la derecha de un bit ¿Qué valor tendrá el bit de acarreo:
1
80
Para el siguiente número con signo 10000011, si se realiza un desplazamiento aritmético de un bit a la derecha el resultado será:
11000001
81
“BNE BACK” realiza la decisión basado en la última instrucción que afectó las banderas.
Verdadero
82
Los sufijos “EQ” y “NE” son los únicos con los cuales se pueden realizar ciclos.
Falso
83
En la instrucción “BEQ NEXT”, ¿Cuál es la bandera de estado que se verifica que esté activa?
Z
84
El nemónico BNE representa:
Saltar si no es igual
85
Cantidad máxima que puede repetirse un ciclo utilizando un solo registro:
2^32–1
86
Selecciones la estructura repetitiva que representa el siguiente código en ensamblador. Loop: CMP R0, #5 BHI end_loop // Cuerpo del ciclo ADD R0, R0, #1 B Loop End_loop:
for
87
¿A qué estructura de lenguaje de alto nivel equivale el siguiente trozo de código en ensamblador? Loop: // Cuerpo del ciclo CMP R0, #5 BLT Loop
Do while
88
¿A qué estructura de lenguaje de alto nivel equivale el siguiente trozo de código en ensamblador? Loop: CMP R0, #5 BLT end_loop // Cuerpo del ciclo ADD R0, R0, #1 B Loop End_loop:
While
89
La estructura Repeat-Until no se puede representar en ensamblador.
Falso
90
En ensamblador el nombre de un arreglo contiene la dirección base de dicho arreglo.
Verdadero
91
¿De qué forma se implementaría en ensamblador un arreglo de 20 elementos de tipo entero?
a: .skip 80
92
Para acceder a un arreglo en ensamblador necesitamos conocer su dirección base.
Verdadero
93
Un arreglo es una secuencia de elementos de tipos posiblemente diferentes.
Falso
94
Una estructura es una secuencia de elementos del mismo tipo.
Falso
95
Si R1 contiene la dirección base de un arreglo de números enteros y R4= 3 ¿En qué elemento del arreglo está guardando la siguiente instrucción?: STR R2, [R1,+R4,LSL #2].
a[3]
96
En el modo de direccionamiento sin actualización se guarda la dirección del elemento actual en lugar de guardar la dirección base del arreglo.
Falso
97
Si R1 contiene la dirección base de un arreglo de números enteros ¿En qué elemento del arreglo está guardando la siguiente instrucción?: STR R2, [R1, #+8].
a[2]
98
Después de ejecutar la instrucción STR R2, [R1, #+8], el valor de R1 se modifica.
Falso
99
Cuando se utiliza un modo de indexado utilizando un valor inmediato, ¿Cuántos bits se pueden utilizar para el valor inmediato?
12
100
¿Qué acción realiza la instrucción STR R1, [R2], +R3?
*R2 = R1 ; luego R2=R2+R3
101
En el modo postindexado, primero se modifica la dirección del operando y luego se utiliza en la instrucción.
Falso
102
¿Qué acción realiza la instrucción LDR R2, [R1, #+8]!?
R1 = R1 + 8 luego R2 = *R1
103
¿Qué acción realiza la instrucción STR R3, [R2],#+8?
*r2 = r3 y luego r2 = r2 + 8
104
Si R1 apunta al inicio de un arreglo de enteros de 32 bits y R4 = 3 ¿A qué posición del arreglo apuntará R1 después de realizar la siguiente instrucción? STR R2, [R1],+R4,LSL #2.
a[3]
105
El uso de subrutinas permite reducir el código duplicado dentro de un programa.
Verdadero
106
Si una función requiere 7 parámetros se utiliza la pila para proporcionar los primeros 4.
Falso
107
Dentro de la subrutina debemos preservar los valores de los registros R0 – R3.
Falso
108
En ensamblador se hace distinción entre los conceptos de subrutina, procedimiento y función.
Falso
109
Según el estándar AAPCS, los registros que se pueden utilizar para el paso de parámetros son:
R0 - R3
110
Para sacar elementos de la pila tenemos la operación pop, que primero extrae el elemento de la pila y luego incrementa el puntero.
Verdadero
111
Se denomina pila de programa a aquella zona de memoria, organizada de forma FIFO, que el programa emplea principalmente para el almacenamiento temporal de datos.
Falso
112
Registro que se utiliza para apuntar a la parte superior de la pila y se denomina puntero de pila.
SP
113
En la operación push primero decrementamos en una palabra el registro SP y luego escribimos dicho elemento en la posición de memoria apuntada por SP.
Verdadero
114
La parte inferior de la pila es la ubicación de la memoria donde los datos se envían y se quitan por el extremo contrario.
Falso