Você está na página 1de 218

Despues de cmp A, B Instruccion Expresion (Branch if) Funcion

(A == B) nat., ent. beq Dir. EQual Si Z==1, PC = Dir.


(A != B) nat., ent. bne Dir. Not Equal Si Z==0, PC = Dir.
(A > B) naturales bhi Dir. HIgher Si C==1 & Z==0, PC = Dir.
(A < B) naturales blo Dir. LOwer Si C==0, PC = Dir.
(A >= B) naturales bhs Dir. Higher or Same Si C==1, PC = Dir.
(A <= B) naturales bls Dir. Lower or Same Si C==0 | Z==1, PC = Dir.
(A > B) enteros bgt Dir. Great Than Si N==V & Z==0, PC = Dir.
(A < B) enteros blt Dir. Less Than Si N!=V, PC = Dir.
(A >= B) enteros bge Dir. Great or Equal Si N==V, PC = Dir.
(A <= B) enteros ble Dir. Less or Equal Si N!=V | Z==1, PC = Dir.






Cmo se implementa la instruccin v[0] = temp; si suponemos que el primer parmetro se pasa por el
registro r0 y el segundo parmetro por r1? str r3, [r0] @; r3 es temp

Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer parmetro se pasa por el
registro r0, el segundo parmetro por r1, y las variables locales i y temp se ubican en los registros r2 y r3,
respectivamente? ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer parmetro se pasa por el
registro r0 y el segundo parmetro por r1? sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp
?
Cmo se implementa la instruccin suma += matriz[j][i]; si suponemos que los parmetros se pasan por
los r0 y r1, mientras que las variables locales i, j, suma se implementan en los registros r2, r3 y r4,
respectivamente? add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los parmetros se pasan por
los r0 y r1, mientras que las variables locales i, j, suma se implementan en los registros r2, r3 y r4,
respectivamente? add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer parmetro se pasa por el
registro r0, el segundo parmetro por r1, y las variables locales i y temp se ubican en los registros r2 y r3,
respectivamente? ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer parmetro se pasa por el
registro r0 y el segundo parmetro por r1? ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3,
[r1]




















Suponiendo que.
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones push {r0, r1, r4, r5} y
pop {r0, r4, r1, r5}? r0 = 0x00000000; r1 = 0x00000001
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones push {r5, r4} y pop
{r0, r1}?
r0 = 0x00FE37A1; r1 = 0xFFFFFFFE

Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador: v1: .byte 8
.align 2
Cul ser la siguiente direccin de ensamblado si v1 se almacena en 0x10034? 0x10038

Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador: v3: .word 32
Cmo se puede cargar el contenido de memoria de v3 en el registro r0? ldr r1, =v1 / ldr r0, [r1]

Suponiendo que r13 = 0x07DC y r14 = 0x84AC, Cul es el valor del r13 despus de ejecutar la instruccin
push {r0-r2, lr}?r13 = 0x07CC
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v6: .byte 1, 2, 3, 4, 5, 6
.align 1
Cul ser la siguiente direccin de ensamblado si v6 se almacena en 0x10060? 0x10066

Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v3: .hword 0x0800
.align 2
Cul ser la siguiente direccin de ensamblado si v3 se almacena en 0x10040? 0x10044

Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v4: .space 10
.align 2
Cul ser la siguiente direccin de ensamblado si v4 se almacena en 0x10050? 0x1005C

Suponiendo que tenemos el siguiente trozo de programa en
lenguaje mquina:
Qu instruccin corresponde a una instruccin del tipo ldr
r1, =v1? ldr r1, [pc, #16]



Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido pop {r0, r1}? r0 = 0x509AE246; r1 = 0xF0B57D8B
Cal ser el contenido pop {r0, r1,r4-r7}? r4=0x35CD0523=0X00012FAC
Cal ser el contenido push{r0,r4-r5} M[0x07E8]=0x00000; M[0X07EC]=0x000001

Suponiendo que r0 contiene un nmero entero Qu instruccin podemos utilizar para dividir el contenido de
r0 por 16? mov r0, r0, asr #
Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la instruccin mov r1, r0, lsl
#4? 0x4FA0 1230
Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la instruccin mov r1, r0,
ror #4? 0x384F A012
0x8000 ldr r1, [pc, #16]
0x8004 ldr r1, [r0]
0x8008 ldr r1, [r0, r2]
0x800C ldr r1, [r0, r2, lsl #3]
0x8010 b 0x8010
0x8014 (0x0001 0034)
Suponiendo que r0 = 0x0000 0023 y r1 = 0x800A 3FF9 Cul de las siguientes instrucciones saltar despus
de ejecutar cmp r0, r1? bgt
Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la instruccin mov r1, r0, lsl
#4? 0x4FA0 1230
Suponiendo que se han declarado las constantes Base (dir. base), NC (nm. columnas), NF (nm. filas) y T
(tamao elementos), cul es la frmula para calcular la direccin de memoria de un elemento (i, j) de una
matriz almacenada por filas? dir(i, j) = Base + (i * NC + j) * T
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de una matriz de tipo int
(r0), el nmero de columnas (r1), el nmero de filas (r2), el ndice i (r3) y el ndice j (r4), cmo se puede
implementar en lenguaje mquina la instruccin k = matriz[i][j];, donde k se tiene que guardar en el
registro r6? mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]
Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la instruccin mov r1, r0,
ror #4? 0x384F A012

Suponiendo que un programa ha ejecutado 500 instrucciones de lenguaje mquina, de las cuales 400 han
gastado 1 ciclo mquina, 80 han gastado 3 ciclos mquina y 20 han gastado 4 ciclos mquina, cul es el
tiempo de ejecucin si el procesador trabaja a 2 GHz de frecuencia? 360 nanosegundos
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar and r2, r1, r0, lsl #2? r2 = 8
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar orr r2, r1, r0, lsr #2? r2 = 11
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar eor r2, r1, r0, asr #1? r2 = 9
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de la instruccin orr r2, r1, r0? r2 = 14
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de la instruccin eor r2, r1, r0? r2 = 12
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar tst r1, r0, ror #1? Flag Z = 0
Suponiendo que los contenidos de r0 i r1 sean 20 i 40 respectivamente Cul es el resultado de la instruccin
sub r2, r1, r0, lsr #2? r2 = 35
Suponiendo que los contenidos de r0 i r1 sean 1 i 4 respectivamente.Cul es el resultado de la instruccin add
r2, r0, r1, lsl #2? r2 =17
Suponiendo que los contenidos de r0 i r1 sean 1 i 4 respectivamente.Cul es el resultado de la instruccin sub
r2, r0, r1, lsr #2? r2 =4


Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador: v1: .byte 8
Cmo se puede cargar la direccin de memoria de v1 en el registro r0? ldr r0, =v1
Cmo se puede cargar el contenido de memoria de v1 en el registro r0? ldr r1, =v1 / ldrb r0, [r1]

Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador: v3 .hword 0x0800
.align2
Cul ser la siguiente direccin de ensamblado si v3 se almacena en 0x10040? 0x10044

Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v6: .byte 1, 2, 3, 4, 5, 6
.align 1
Cul ser la siguiente direccin de ensamblado si v6 se almacena en 0x10060? 0x10066

Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v5: .byte 1, 2, 3, 4, 5
.align 1
Cul ser la siguiente direccin de ensamblado si v5 se almacena en 0x10060? 0x10066

Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador: v2:
.hword 16
Cmo se puede grabar el contenido del registro r0 en la posicin de memoria de v2? ldr r1, =v1 / strh r0,
[r1]

Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de una matriz de tipo
short (r0), el nmero de columnas (r1), el nmero de filas (r2), el ndice i (r3) y el ndice j (r4), cmo se
puede implementar en lenguaje mquina la instruccin k = matriz[i][j];, donde k se tiene que guardar en
el registro r6? mul r5, r3, r1 / add r5, r4/ ldrh r6, [r0, r5, lsl #1]
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034, cuando se ejecuta una
instruccin del tipo ldr r1, =v1, dnde localiza el procesador la direccin de memoria 0x10034 para
cargarla en el registro r1? en memoria, dentro de la seccin de instrucciones
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034, cuando se codifica una
instruccin del tipo ldr r1, =v1, qu tipo de direccionamiento a memoria se utiliza para cargar la direccin
de la variable? relativo a pc
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034, cuando el programa
ensamblador traduce una instruccin del tipo ldr r1, =v1, qu tipo de instruccin codifica en lenguaje
mquina? ldr r1, [pc, #desp] (dnde desp es el desplazamiento hasta un posicin del programa)
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034, cuando se codifica una
instruccin del tipo ldr r1, =v1, cuntos bits de memoria se utilizan para guardar dicha posicin de
memoria? 32

Suponiendo que tenemos la siguiente declaracin en lenguaje C: int matrix[][] = {{2, -5, 90}, {-12, 82, 0},
{-4, 850, -100}};, y que la variable global matrix se empieza a guardar en la direccin 0x10034, En que
direccin se almacenar el valor 0? 0x10048

Si un operando inmediato de una instruccin ARMv4 define los campos IR = 0110 e IN = 00101101, Cul
s el valor resultante (todo en binario)? 00000010 11010000 00000000 00000000
Si un operando inmediato de una instruccin ARMv4 define los campos IR = 1110 e IN = 0001111, Cul s
el valor resultante (todo en binario)? 00000000 00000000 00001111 00000000
Cuntos..?

Cuntos registros de lenguaje mquina del ARMv4 se pueden usar como operandos de las instrucciones
aritmticas? 16
Cantos bits tiene una instruccin de lenguaje mquina de un procesador ARMv4 (en modo ARM)? 32
Cuntos bits del registro r0 se modifican con la instruccin ldrh r0, [r1, r2, lsl #2]? 32
Cuntos bits contienen cada registro del ARMv4? 32
De cuntos bits disponen las instrucciones de un procesador ARMv4 para codificar el identificador de un
registro de lenguaje mquina (en modo ARM)? 4 (en modo THUMB)?16
Cuntos bits se reservan en una instruccin ARMv4 para codificar un operando inmediato? 12
Cuntos bytes puede insertar el programa ensamblador como respuesta a una directiva .align 2? 0, 1, 2 o 3
Cuntos bytes puede insertar el programa ensamblador como respuesta a una directiva .align 1? 0 o
Cuntos bytes puede capturar de memoria simultneamente un procesador ARMv4 en un slo acceso? 4
Cuntos registros de lenguaje mquina para almacenar datos en general dispone el procesador ARMv4? 13
Cuntas posiciones de memoria puede direccionar un sistema programable basado en ARMv4? 2 elevado a
32

Qu.....??

Qu tipo de informacin pueden contener los registros de lenguaje mquina del ARMv4?datos y
direcciones
Qu tipo de instrucciones generan siempre un secuenciamiento explcito? de salto incondicional
Qu directiva se utiliza para reservar espacio de memoria para una variable no inicializada? .space n (n =
nmero de bytes a reservar)
Qu directiva sirve para definir una variable global inicializada de tipo int o 32 bits? .word
Qu directiva sirve para definir una variable global inicializada de 8 bits? byte
Qu directiva sirve para definir una variable global inicializada de tipo shorto 16 bits? hword
Qu directiva sirve para definir una variable global inicializada de tipo char? .byte
Qu registro del ARMv4 hace las funciones de puntero de pila (stack pointer)? r13
Qu registro del ARMv4 hace las funciones de contador de programa (program counter)?r15
Qu registro tiene que guardarse a la pila en la primera instruccin push de una rutina para permitir el
retorno correctamente? el registro 14 (lr)
Qu registros hay que restaurar al final de una rutina? todos los que se modifican excepto los registro que
retornan resultado
Qu instrucciones de salto condicional se pueden utilizar despus de una instruccin tst? beq y bne
Qu instruccin de lenguaje mquina se utiliza para invocar una rutina? bl
Qu instruccin podemos utilizar para multiplicar el contenido de r0 por 16? mov r0, r0, lsl #4
Qu instrucciones de salto condicional se pueden utilizar despus de una instruccin tst? beq y bne
Qu registro del procesador se encarga de memorizar la direccin de la instruccin de lenguaje mquina a
ejecutar? el r15 (pc)
Qu registro tiene que recuperar de la pila la direccin de retorno en la ltima instruccin pop de una
rutina? el registro 15 (pc)
Qu son los smbolos del lenguaje ensamblador? Los nombres de las variables y las etiquetas de salto
Qu bits del registro r0 se graban en memoria con la instruccin strh r0, [r1, r2, lsl #2]? los 16 de menos
peso

A qu nivel est definida una sentencia como bne .Lbucle? nivel de lenguaje ensamblador
A qu nivel est definida una instruccin como bne 0x8008? nivel de lenguaje mquina

De..

Del banco de 16 registros de lenguaje mquina del procesador ARMv4, cuntos tienen un propsito
especfico? 3
De los 12 bits que se reservan en una instruccin ARMv4 para codificar el operando inmediato Cuntos se
utilizan para indicar el desplazamiento del patrn que configura los bits a 1 en el nmero final? 4
De los tipos de bus que componen un sistema programable, cul de ellos se encarga de transferir datos entre
el procesador y la memoria? bus de datos
De los tipos de bus que componen un sistema programable, cul de ellos se encarga de indicar las posiciones
de memoria donde se encuentran los datos del programa? bus de direcciones
De los elementos que componen un procesador, cul de ellos est implementado bsicamente como un
autmata? unidad de control
De los elementos que componen un procesador, cul de ellos controla el contenido del bus de direcciones?
unidad de clculo de direcciones
De los elementos que componen un procesador, cul de ellos se encarga de almacenar temporalmente
valores para realizar clculos? Registros
De los elementos que componen un procesador, cul de ellos se encarga de realizar clculos que requieren
las instrucciones de lenguaje mquina? unidad aritmtico-lgica
De los elementos que componen un procesador, cul de ellos se encarga de calcular las posiciones de
memoria donde se encuentran los datos del programa? unidad de clculo de direcciones
De los elementos que componen un sistema programable, cul de ellos se encarga de transferir informacin
con el exterior? controladores de entrada/salida
De los tipos de bus que componen un sistema programable, cul de ellos se encarga de transferir datos entre
el procesador y los controladores de entrada/salida? bus de datos



En..

En ARMv4, de cantos bits es el valor derivado de un operando inmediato (despus de realizar el
desplazamiento pertinente)? 32
En ARMv4, hacia dnde se deplaza el patrn de bits a 1 de un operando inmediato?hacia la derecha
En el proceso de ensamblado, qu patrn se puede aplicar a las etiquetas de salto? una declaracin,
mltiples referencias de salto
En qu seccin se deben ubicar las etiquetas de salto? .text
En qu seccin se deben ubicar las variables globales no inicializadas? .bss
En qu seccin se deben ubicar las variables globales inicializadas? .data
En qu seccin se deben ubicar las instrucciones de lenguaje maquina? .text
En lenguaje ensamblador GAS, Cmo se puede definir que una etiqueta de salto es accesible desde otros
mdulos (ficheros) del programa? con la directiva .global
En lenguaje ensamblador GAS para ARMv4, cmo se especifican los valores inmediatos de las
instrucciones de lenguaje mquina? con el prefijo #
En un programa escrito en lenguaje mquina del ARMv4, con el conjunto propio de instrucciones thumb (no
arm), cmo son las direcciones asociadas a las etiquetas de salto? mltiples de 2
En lenguaje ensamblador Qu es lo que define un smbolo del programa como una etiqueta de salto? el
sufijo :
En lenguaje ensamblador GAS para ARMv4, cules son los tipos de valores que pueden ir como valores
inmediatos de las instrucciones de lenguaje mquina, es decir, detrs de un carcter #? valores en cualquier
base
En un desplazamiento de un registro a la derecha con el operardor asr, qu valor se introduce por el bit de
ms peso del registro? 0 si el nmero es positivo, 1 si es negativo lsr siempre 0
En una rotacin de un registro a la derecha con el operardor ror, qu valores se introducen por el bit de ms
peso del registro? los bits de menor peso que se desplazan
En lenguaje ensamblador GAS, Cmo se puede definir que una etiqueta de salto es accesible desde otros
mdulos (ficheros) del programa? con la directiva .global

Dado..

1.-Dado el siguiente contenido de una porcin de la memoria:

Cul es el word que se encuentra en la posicin 0x10034, con una
ordenacin Little Endian? 0xE3AC6000
Cul es el half word que se encuentra en la posicin 0x10034, con una
ordenacin Big Endian? 0x0060


2.-Dado el siguiente programa escrito en lenguaje mquina:


Ciclos
Cuntos ciclos mquina se necesitan para ejecutar las
instrucciones desde 0x8000 hasta 0x8014 (no
inclusive), suponiendo que, en general, una instruccin
diferente de un salto necesita 1 ciclo, una instruccin
de salto con secuenciamiento explcito necesita 3
ciclos, y una instruccin de salto con secuenciamiento
implcito necesita 4 ciclos?
Cuntas instrucciones se ejecutan desde 0x8000 hasta
que se llega a 0x8018? 18



3.-Dado el siguiente contenido de memoria y de
algunos registros de lenguaje mquina:
0x1003F 0x8B
0x10040 0x7D r2 0x00004
0x10041 0xB5 r3 0x10040
0x10042 0xF0 r4 0x00001
0X10043 0x23
0X10044 0x05
Cul es el resultado de la instruccin ldsh r0, [r3, r2, ror r4]? r0 = 0x000023F0
Cul es el resultado de la instruccin strb r2, [r3, r4, lsl #1]? M[0x10042] = 0x04;

4.- Dado el siguiente fragmento de un programa escrito en lenguaje mquina:
0x80A4 bl 0x81FC
0x80A8 Qu valor se guardar en el registro lr (r14)? 0x80A8

5.- Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x10034 0xCA
0x10035 0x00 r2 0x00004
0x10036 0x08 r3 0x10034
0x10037 0xFD r4 0x00001
0X10038 0x12
Cul es el resultado de la instruccin ldsb r0, [r3, #3]? r0 = 0xFFFFFFFD
Cul es el resultado de la instruccin ldrh r0, [r3, r2]? r0 = 0x00007D12

0x10032 0xD2
0x10032 0x41
0x10033 0x7F
0x10034 0x00
0x10035 0x60
0x10036 0xAC
0x10036 0xE3
Por convenio, Cmo se tienen que nombrar las etiquetas de salto locales a una seccin de cdigo escrito en
ensamblador GAS? empezando por .L
Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le corresponde al
smbolo .Lbucle? 0x8008
Dnde guarda la direccin de retorno una instruccin de llamada a rutina bl? en el registro 14 (lr)
Cundo hay que aadir el sufijo : a una etiqueta de salto? cuando se declara la etiqueta
Dados los dos campos IR e IN que definen un operando inmediato en una instruccin de lenguaje mquina de
ARMv4, Cul es la operacin que realiza el procesador para obtener el valor inmediato correspondiente? IN
rotado IR*2 bits a la derecha

Cul??

Cul es el significado del flag Z? la operacin anterior ha resultado igual a cero Flag C acarreo
Cul es el significado del flag N? la operacin anterior ha resultado negativa
Flag V desbordamiento
Cul tiene que ser siempre la ltima instruccin de una rutina? Pop
Cul instruccion efectua un salto condicional? Beq
Cul instruccion efectua un salto incondicional? Bl
Cul es la instruccin para saltar cuando dos nmeros naturales sn iguales? Beq
Cul es la instruccin para saltar cuando un nmero natural es mayor o igual que otro? Bhs
Cul es la instruccin para saltar cuando un nmero natural es menor o igual que otro? Bls
Cul es la instruccin para saltar cuando un nmero natural es mayor estricto que otro? Bhi
Cul es la instruccin para saltar cuando un nmero natural es menor o estricto que otro? Blo
Cul es la instruccin para saltar cuando un nmero entero es mayor estricto que otro? Bgt
Cul es la instruccin para saltar cuando un nmero entero es menor estricto que otro? blt
Cul es la instruccin para saltar cuando un nmero entero es menor o igual que otro? Ble
Cul es la instruccin para saltar cuando un nmero entero es mayor o igual que otro? Bge

Cul de las siguientes instrucciones sirve para cargar un byte de memoria en un registro de lenguaje
mquina? Ldrb
Cul de las siguientes instrucciones sirve para grabar el valor entero de un registro de lenguaje mquina en
un byte de memoria? strb
Cul de las siguients instruccions sirve para graba el contenido de un registro de lenguaje mquina en un half-
word de memoria? Strh
Cul de las siguientes instrucciones sirve para cargar un byte de memoria que representa un valor entero en
un registro de lenguaje mquina? ldsb
Cul de las siguientes instrucciones sirve para cargar un word de memoria en un registro de lenguaje
mquina? ldr
Cul de las siguientes instrucciones sirve para cargar un half-word de memoria en un registro de lenguaje
mquina? Ldrh
Cul de las siguientes instrucciones es capaz de multiplicar el contenido de r0 por -3? sub r0, r0, lsl #1
Cul de los siguientes pares de instrucciones deja la pila en un estado inconsistente? push {r4-r6, r8, r10} /
pop {r4-r5, r8, r10}
Cul es el secuenciamiento explcito de un programa en lenguaje mquina? el que ejecuta la instruccin de
la posicin de memoria que indica una instruccin de salto
Cul es el nmero de bits mnimo que puede capturar de memoria un procesador ARMv4 en un slo acceso?
8
Cul es el nmero de bytes mnimo que puede capturar de memoria un procesador ARMv4 en un slo
acceso? 1
Cul de las siguientes lneas de cdigo no es una directiva de ensamblador? _start:
Cul tiene que ser el nombre de la etiqueta de inicio de un programa escrito en ensamblador GAS? _start:
Cul es el rango mximo de los nmeros naturales que puede manejar intrnsecamente un procesador
ARMv4? de 0 a 4294967295
Cul de los siguientes operadores se emplea para desplazar el contenido de un registro cierto nmero de bits
a la izquierda? Lsl
Cul de los siguientes operadores se emplea para rotar el contenido de un registro cierto nmero de bits a la
derecha, realimentando los bits que salen por la izquierda? Ror
Cul de los siguientes operadores se emplea para desplazar el contenido de un registro cierto nmero de bits
a la derecha, suponiendo que el valor a desplazar es un entero Ca2? Asr
Cul es el secuenciamiento implcito de un programa en lenguaje mquina? el que ejecuta la instruccin
siguiente en memoria a la instruccin actual
Cul de los siguientes nmeros no se puede codificar directamente como un operando inmediato de una
instruccin ARM?51

Como se traduce?? (in short)

Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int matrix[][] = {{2, -5, 90}, {-12,
82, 0}, {-4, 850, -100}};? matrix: .word 2, -5, 90, -12, 82, 0, -4, 850, -100
Cmo se traduce en ensamblador la declaracin en lenguaje C short vct[] = { 0, -1, 2, -3, 4000};? vct:
.hword 0, -1, 2, -3, 4000
La llamada en C func1(a, &b);, suponiendo que son de tipo int = ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl
func1
La llamada en C b = func2(a);, suponiendo que la variable a es de tipo int, que la variable c es de tipo
char,ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r2, =b / strb r1, [r2]

El acceso en C v[0] = i;, suponiendo el vector v es de tipo char= strb r0, [r1]
El acceso en C v[1] = i;, suponiendo el vector v es de tipo short= strh r0, [r1, #2]
El acceso en C v[i] = 0;, suponiendo el vector v es de tipo char = mov r2, #0 / strb r2, [r1, r0]
El acceso en C v[1] = i;, suponiendo el vector v es de tipo char = strb r0, [r1, #1]
El acceso en C v[i] = 1;, suponiendo el vector v es de tipo int, = mov r2, #1 / str r2, [r1, r0, lsl #2]

La instruccin en C c = a*2 - b;= sub r2, r0, lsl #1 / add r2, r1
La instruccin en C c *= a + b; = add r3, r0, r1 / mul r2, r2, r3
La instruccin en C c = a*a + b; = mul r2, r0, r0 / add r2, r1
La instruccin en C c = a ^ b; = eor r2, r0, r1
La instruccin en C c = a | b; = orr r2, r0, r1
La instruccin en C c = a & b; = and r2, r0, r1
La instruccin en C a = a << b; = mov r0, r0, lsl r1
La instruccin en C b += a*2; = add r1, r0, lsl #1
La instruccin en C a++; = ldr r1, =a / ldr r0, [r1] / add r0, #1 / str r0, [r1]
La instruccin en C a = ~a;= ldr r1, =a / ldr r0, [r1] / mvn r0, r0 / str r0, [r1]

La estructura en C if ((a > 0) && (b < a)) = cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:
La estructura en C if (a < 0) {...}, = cmp r0, #0 / bge .Lfinif / / .Lfinif:
La estructura en C if (a <= 10) {...} = cmp r0, #10 / bhi .Lfinif / / .Lfinif:
La estructura en C if (a == 0) {...}= cmp r0, #0 / bne .Lfinif / / .Lfinif:
La estructura en C if (a >= 0) {...}= cmp r0, #0 / blt .Lfinif / / .Lfinif:
La estructura en C if (a > 10) {...}= cmp r0, #10 / bls .Lfinif / / .Lfinif:
La estructura en C i = 0; do {..} while (i < 10) = mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo
La estructura en C i = 0; while (i < 10) {...} = mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b
.Lwhile / .Lfinwhile:
La estructura en C if (a < 10) a++; else {...} = cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: /
/ .Lfinif:
La estructura en C for (i = 0; i < 10; i++) {...} = mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / blo
.Lfor
La estructura en C for (i = 0; i < j; i++) {...}= mov r0, #0 / cmp r0, r1 / bge .Lfinfor / .Lfor: / / add r0,
#1 / cmp r0, r1 / bls .Lfor / .Lfinfor:
La estructura en C if ((a > 0) || (b < a)) {...}= cmp r0, #0 / bgt .Lif/cmp r1, r0 /blt .Lif/b .Lfinif / .Lif:
//.Lfinif:
La estructura en C if ((a > 0) && (b < a)) {...}= cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / /
.Lfinif
La estructura en C if (a != 0) {...}= cmp r0, #0 / beq .Lfinif / / .Lfinif:
La estructura en C if (a & 0x10) {...}= tst r0, #0x10 / bne .Lfinif / / .Lfinif

Cmo....????

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos que los parmetros se
pasan por los r0 y r1, mientras que las variables locales i, j, temp se implementan en los registros r2, r3 y
r4, respectivamente? mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]
Cmo se traduce una variable global inicializada definida en ensamblador a lenguaje mquina? como una
direccin de memoria ms un dato en memoria
Cmo se traduce una etiqueta de salto definida en ensamblador a lenguaje mquina? como una direccin
de memoria
Cmo se traduce en lenguaje ensamblador a lenguaje maquina? No tiene una traduccion directa
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C unsigned char c = C;? c: .byte
C
Cmo se especifica un valor binario en lenguaje ensamblador GAS? con el prefijo 0b
Cmo se especifica un valor octal en lenguaje ensamblador GAS? con el prefijo 0
Cmo se especifica un valor decimal en lenguaje ensamblador GAS? escribiendo el nmero directamente
Cmo se guarda en el sistema de ficheros del ordenador un programa en lenguaje mquina? como un
fichero de cdigos binarios
Cmo se puede alinear la memoria a hword? align 1
Cmo se puede alinear la memoria a word?
Cmo consigue el procesador efectuar un secuenciamiento implcito? sumando 4 al pc 7
Cmo se consigue el retorno de una rutina con las instrucciones push de inicio i pop de fin? salvando el
registro lr y recuperando su contenido en el pc
Cmo se organiza la memoria de un sistema programable basado en ARMv4? como un vector de bytes
Cmo se llenan los bits altos del registro r0 con una instruccin ldrh r0, [r1, #2]? los 16 bits altos a 0
Cmo se llenan los bits altos del registro r0 con una instruccin ldsh r0, [r1, #2]? los 16 bits altos al valor
del signo del nmero que se est cargando
Como mximo, de cuntos campos identificadores de registro disponen las instruccin de un procesador
ARMv4 (en modo ARM)? 4
Cmo se puede cargar en r1 el contenido de r0 complementado bit a bit (los 0 pasan a 1 y viceversa)? mvn
r1, r0
Cmo se almacena la informacin en la memoria de un computador? como nmeros
Cmo se modifica el registro sp despus de ejecutar una instruccin pop {r0-r3, lr}? sp = sp + 20
Cmo se marca un comentario en lenguaje ensamblador GAS? empezando el comentario con un carcter
@

Cul de las siguientes instrucciones sirve para grabar el contenido de un registro de
lenguaje mquina en un byte de memoria?
Trieu una resposta.

b. strb

Cul es la instruccin para saltar cuando un nmero natural es mayor o igual que otro?
Trieu una resposta.

a. bhs

Suponiendo que un programa ha ejecutado 500 instrucciones de lenguaje mquina, de
las cuales 400 han gastado 1 ciclo mquina, 80 han gastado 3 ciclos mquina y 20
han gastado 4 ciclos mquina, cul es el tiempo de ejecucin si el procesador trabaja
a 1 GHz de frecuencia?
Trieu una resposta.

a. 720 nanosegundos

Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #5
0x8004 mov r1, #2
0x8008 cmp r0, r1
0x800C bhi 0x8014
0x8010 mov r1, r1,
lsl #1
0x8014 cmp r1, r0
0x8018 bhi 0x8008
0x801C b 0x801C
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x801C (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto y diferente de una multiplicacin necesita 1 ciclo, una instruccin de salto con
secuenciamiento explcito necesita 3 ciclos, y una instruccin de salto con
secuenciamiento implcito necesita 4 ciclos?
Trieu una resposta.

c. 11

Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la
instruccin mov r1, r0, lsr #4?

c. 0x084F A012

Qu tipo de instrucciones pueden generar un secuenciamiento explcito?
Trieu una resposta.

c. de salto

Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v2: .byte 16
.align 1
Cul ser la siguiente direccin de ensamblado si v2 se almacena en 0x10038?
Trieu una resposta.

c. 0x10040

En lenguaje ensamblador GAS para ARMv4, cules son los tipos de valores que
pueden ir como valores inmediatos de las instrucciones de lenguaje mquina, es decir,
detrs de un carcter #?
Trieu una resposta.

a. valores en cualquier base

Qu registros hay que salvar al inicio de una rutina?

b. todos los que se modifican ms el registro lr, excepto los registro que retornan
resultados
En qu seccin se deben ubicar las etiquetas de salto?
Trieu una resposta.

a. .text

Dado el siguiente programa escrito en lenguaje ensamblador:
_start: mov r0, #3
mov r1, #1
.Lbucle: add r0, r1
add r1, #1
cmp r0, #12
blo .Lbucle
.Lstop: b .Lstop

Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le
corresponde al smbolo .Lbucle?
Trieu una resposta.

a. 0x8008

Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?

d. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]

Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]

Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?

b. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:

Cmo se traduce a lenguaje mquina la instruccin en C b += a*2;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. add r1, r0, lsl #1

A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

b. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp

A partir de la siguiente funcin implementada en C:
Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]

Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

c. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1

Qu bits del registro r0 se graban en memoria con la instruccin strh r0, [r1, r2, lsl
#2]?
Trieu una resposta.

b. los 16 de menos peso

Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x1003F 0x8B
0x10040 0x7D r2 0x00004
0x10041 0xB5 r3 0x10040
0x10042 0xF0 r4 0x00001
0X10043 0x23
0X10044 0x05
Cul es el resultado de la instruccin strh r2, [r3]?

d. M[0x10040] = 0x04; M[0x10041] = 0x00

Dados los dos campos IR e IN que definen un operando inmediato en una instruccin
de lenguaje mquina de ARMv4, Cul es la operacin que realiza el procesador para
obtener el valor inmediato correspondiente?

d. IN rotado IR*2 bits a la derecha

Cul es el resultado de la instruccin mull r5, r4, r2, r0?
Trieu una resposta.

d. r5:r4 = r2 * r0

Cul es el secuenciamiento implcito de un programa en lenguaje mquina?
Trieu una resposta.

a. el que ejecuta la instruccin siguiente en memoria a la instruccin actual

Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r0, r1, r4, r5} y pop {r0, r4, r1, r5}?
Trieu una resposta.

d. r0 = 0x00000000; r1 = 0x00000001

Qu registros hay que restaurar al final de una rutina?
Trieu una resposta.

b. todos los que se modifican excepto los registro que retornan resultados

En qu seccin se deben ubicar las etiquetas de salto?
Trieu una resposta.

a. .text

Suponiendo que tenemos el siguiente trozo de programa en lenguaje mquina:
0x8000 ldr r1, [pc, #16]
0x8004 ldr r1, [r0]
0x8008 ldr r1, [r0, r2]
0x800C ldr r1, [r0, r2, lsl
#3]
0x8010 b 0x8010
0x8014 (0x0001 0034)

qu instruccin corresponde a una instruccin del tipo ldr r1, =v1?
Trieu una resposta.

a. ldr r1, [pc, #16]

Cmo se marca un comentario en lenguaje ensamblador GAS?
Trieu una resposta.

d. empezando el comentario con un carcter @

A qu nivel est definida una instruccin como bne 0x8008?
Trieu una resposta.

3. a nivel de lenguaje mquina

Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < 10; i++) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / blo .Lfor

Cmo se traduce a lenguaje mquina el acceso en C v[i] = 0;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

d. mov r2, #0 / strb r2, [r1, r0]

Cmo se traduce a lenguaje mquina la instruccin en C c = a ^ b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. eor r2, r0, r1

Cmo se traduce a lenguaje mquina el acceso en C v[1] = i;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

c. strb r0, [r1, #1]

A partir de la siguiente funcin implementada en C:
Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

c. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1

Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

b. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / bl func2 / strb r1, [r2]

Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

c. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1

En un desplazamiento de un registro a la derecha con el operardor lsr, qu valor se
introduce por el bit de ms peso del registro?

c. siempre 0

Cul es la instruccin para saltar cuando un nmero natural es mayor o igual que otro?
Trieu una resposta.

b. bhs

Como mximo, de cuntos campos identificadores de registro disponen las
instruccin de un procesador ARMv4 (en modo ARM)?

a. 4

Cul de las siguientes instrucciones sirve para cargar un byte de memoria en un
registro de lenguaje mquina?

a. ldrb

Suponiendo que r0 contiene un nmero entero Qu instruccin podemos utilizar para
dividir el contenido de r0 por 16?

d. mov r0, r0, asr #

Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de la instruccin tst r1, r0?
Trieu una resposta.

c. Flag Z = 0

Por convenio, Cmo se tienen que nombrar las etiquetas de salto locales a una seccin
de cdigo escrito en ensamblador GAS?

c. empezando por .L

En el proceso de ensamblado, qu patrn se puede aplicar a las etiquetas de salto?

b. una declaracin, mltiples referencias de salto

Qu directiva sirve para definir una variable global inicializada de 16 bits?
Trieu una resposta.

b. .hword

Qu registro tiene que guardarse a la pila en la primera instruccin push de una rutina
para permitir el retorno correctamente?

a. el registro 14 (lr)

Qu directiva sirve para definir una variable global inicializada de tipo char?
Trieu una resposta.

c. .byte

Cmo se traduce a lenguaje mquina la instruccin en C a++;, suponiendo que el
valor de la variable a (de tipo int) no est asignado a ningn registro?

b. ldr r1, =a / ldr r0, [r1] / add r0, #1 / str r0, [r1]

Cmo se traduce a lenguaje mquina la instruccin en C c = a | b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?

d. orr r2, r0, r1

Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?

b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]

Cmo se traduce a lenguaje mquina la estructura en C if (a < 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?

c. cmp r0, #0 / bge .Lfinif / / .Lfinif:

A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[0] = temp; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

d. str r3, [r0] @; r3 es temp

A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[i*num_files + j] = 0; si suponemos que
los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j se
implementan en los registros r2 y r3, respectivamente?

d. mul r5, r2, r1 / add r5, r3 / mov r4, #0 / str r4, [r0, r5, lsl #2]

Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?

b. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / bl func2 / strb r1, [r2]


c. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2] / bl func2

Punts: 1
Cantos bits tiene una instruccin de lenguaje mquina de un procesador ARMv4 (en
modo ARM)?
Trieu una resposta.

a. 32


b. 8


c. 4


d. 16

Correcta
Punts d'aquesta tramesa: 1/1.
Question 2
Punts: 1
Cul de las siguientes instrucciones sirve para cargar un word de memoria en un
registro de lenguaje mquina?
Trieu una resposta.

a. str


b. strb


c. ldrb


d. ldr

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cul es el significado del flag V?
Trieu una resposta.

a. la operacin anterior ha resultado igual a cero


b. la operacin anterior ha resultado negativa


c. la operacin anterior ha provocado acarreo


d. la operacin anterior ha provocado desbordamiento

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
De los 12 bits que se reservan en una instruccin ARMv4 para codificar el operando
inmediato Cuntos se utilizan para indicar el patrn que configura los bits a 1 en el
nmero final?
Trieu una resposta.

a. 4


b. 8


c. 12


d. 6

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
En una rotacin de un registro a la derecha con el operardor ror, qu valores se
introducen por el bit de ms peso del registro?
Trieu una resposta.

a. siempre 1


b. los bits de menor peso que se desplazan


c. siempre 0


d. 0 si el nmero es positivo, 1 si es negativo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
De los elementos que componen un procesador, cul de ellos maneja el bus de
control?
Trieu una resposta.

a. registros


b. unidad de clculo de direcciones


c. unidad aritmtico-lgica


d. unidad de control

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se guarda en el sistema de ficheros del ordenador un programa escrito en
lenguaje ensamblador?
Trieu una resposta.

a. como un fichero de cdigos binarios


b. como ceros y unos


c. como un fichero de lenguaje mquina


d. como un fichero de texto

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v3: .word 32

Cmo se puede cargar el contenido de memoria de v3 en el registro r0?
Trieu una resposta.

a. ldr r0, =v1 / ldr r0, r1


b. ldr r1, =v1 / ldr r0, [r1]


c. mov r0, =v1


d. ldr r0, =v1 / ldr r1, [r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Qu registros hay que salvar al inicio de una rutina?
Trieu una resposta.

a. todos los que se modifican ms el registro lr


b. todos los que se modifican ms el registro lr, excepto los registro que retornan
resultados

c. todos


d. todos los que se modifican

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Qu directiva sirve para definir una variable global inicializada de 8 bits?
Trieu una resposta.

a. .word


b. .hword


c. .byte


d. .space 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se traduce una variable global inicializada definida en ensamblador a lenguaje
mquina?
Trieu una resposta.

a. como una instruccin


b. como una direccin de memoria


c. como un dato en memoria


d. como una direccin de memoria ms un dato en memoria

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a | b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. orr r2, r0, r1


b. and r2, r0, r1


c. or r2, r0, r1


d. eor r2, r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < 10; i++) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. .Lfor: / mov r0, #0 / / add r0, #1 / cmp r0, #10 / blo .Lfor


b. .Lfor: / mov r0, #0 / / add r0, #1 / cmp r0, #10 / bhs .Lfor


c. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / blo .Lfor


d. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / bhs .Lfor

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if ((a > 0) && (b < a)) {...},
suponiendo que las variables a y b (de tipo int) estn asignadas a los registros r0 y
r1, respectivamente?
Trieu una resposta.

a. cmp r0, #0 / ble .Lif / cmp r1, r0 / bge .Lfinif / b .Lfinif / .Lif: / / .Lfinif:


b. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:


c. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lif / b .Lfinif / .Lif: / / .Lfinif:


d. cmp r0, #0 / ble .Lif / cmp r1, r0 / bge .Lif / b .Lfinif / .Lif: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a > 10) {...}, suponiendo
que el valor de la variable a (de tipo unsigned int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #10 / blt .Lfinif / / .Lfinif:


b. cmp r0, #10 / bls .Lfinif / / .Lfinif:


c. cmp r0, #10 / blo .Lfinif / / .Lfinif:


d. cmp r0, #10 / ble .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. cmp r0, r1 / bge .Lelse / mov r2, #a


b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]


Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[0] = temp; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / ldr r3, [r2] / str r3, [r0]


b. ldr r2, =temp / ldr r3, [r2] / str r3, [r0, r1, lsl #2]


c. strb r3, [r0] @; r3 es temp


d. str r3, [r0] @; r3 es temp

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


b. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


c. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp


d. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]

Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar orr r2, r1, r0, lsr
#2?
Trieu una resposta.

a. r2 = 13


b. r2 = 10


c. r2 = 12


d. r2 = 11

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de realizar
clculos que requieren las instrucciones de lenguaje mquina?
Trieu una resposta.

a. registros


b. unidad de clculo de direcciones


c. unidad de control


d. unidad aritmtico-lgica

Correcta
Punts d'aquesta tramesa: 1/1.
Question 3
Punts: 1
Cul es el resultado de la instruccin mul r4, r2, r0?
Trieu una resposta.

a. r4 = r2 * 2 elevado a r0


b. r4 = r2 * r0


c. r0 = r2 * r4


d. r2 = r0 * r4

Correcta
Punts d'aquesta tramesa: 1/1.
Question 4
Punts: 1
Cul de los siguientes pares de instrucciones deja la pila en un estado inconsistente?
Trieu una resposta.

a. push {r4-r6, r12} / pop {r4-r7}


b. push {r4-r6, r8, r10} / pop {r4-r5, r8, r10}


c. push {r4-r6, lr} / pop {r4-r6, pc}


d. push {r0, r1} / pop {r1, r0}

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 5
Punts: 1
Cuntos bits del registro r0 se modifican con la instruccin ldrh r0, [r1, r2, lsl #2]?
Trieu una resposta.

a. 16


b. 4


c. 8


d. 32

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 6
Punts: 1
Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x1003F 0x8B
0x10040 0x7D r2 0x00004
0x10041 0xB5 r3 0x10040
0x10042 0xF0 r4 0x00001
0X10043 0x23
0X10044 0x05
Cul es el resultado de la instruccin strh r2, [r3]?
Trieu una resposta.

a. M[0x10040] = 0x04; M[0x10041] = 0x00


b. M[0x1003F] = 0x04; M[0x10040] = 0x00


c. M[0x10040] = 0x04; M[0x10041] = 0xFF;


d. M[0x10040] = 0x04; M[0x10041] = 0x00; M[0x10042] = 0x00; M[0x10043] =
0x00;
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se puede alinear la memoria a word?
Trieu una resposta.

a. .align 1


b. .align 4


c. .align 2


d. .align 3

Correcta
Punts d'aquesta tramesa: 1/1.
Question 8
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v2: .hword 16


Cmo se puede grabar el contenido del registro r0 en la posicin de memoria de v2?
Trieu una resposta.

a. ldr r1, =v1 / str r0, [r1]


b. ldr r1, =v1 / strb r0, [r1]


c. ldrh r1, =v1 / str r0, [r1]


d. ldr r1, =v1 / strh r0, [r1]

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 9
Punts: 1
En el proceso de ensamblado, qu patrn se puede aplicar a las etiquetas de salto?
Trieu una resposta.

a. mltiples declaraciones, mltiples referencias de salto


b. una declaracin, mltiples referencias de salto


c. mltiples declaraciones, una referencia de salto


d. una declaracin, una referencia de salto

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 10
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando el programa ensamblador traduce una instruccin del tipo ldr r1, =v1, qu
tipo de instruccin codifica en lenguaje mquina?
Trieu una resposta.

a. ldr r1, [pc, #desp] (dnde desp es el desplazamiento hasta un posicin del
programa)

b. ldr r1, 0x10034


c. ldr r1, [0x10034]


d. mov r1, #0x10034

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
A qu nivel est definido el cdigo hexadecimal de una instruccin de lenguaje
mquina como 0x1AFF FFFC?
Trieu una resposta.

a. a nivel de lenguaje mquina


b. a nivel de lenguaje ensamblador


c. a alto nivel


d. a nivel de cdigo mquina

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 12
Punts: 1
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

a. mul r5, r4, r1 / add r5, r3 / ldr r6, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]


c. mul r5, r3, r1 / add r5, r1 / ldr r6, [r0, r5, lsl #2]


d. mul r5, r3, r2 / add r5, r4 / ldr r6, [r0, r5, lsl #2]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a*2 - b;, suponiendo
que las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. sub r2, r1, r0, lsl #1


b. sub r2, r0, lsl #1 / add r2, r1


c. mov r0, lsl #1 / sub r2, r0, r1


d. mov r0, lsl #1 / sub r2, r1, r0

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lfinwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lwhile / / b .Lfinwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

d. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lwhile / / b .Lwhile / .Lfinwhile:


Correcta
Punts d'aquesta tramesa: 1/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a > 10) {...}, suponiendo
que el valor de la variable a (de tipo unsigned int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #10 / blt .Lfinif / / .Lfinif:


b. cmp r0, #10 / ble .Lfinif / / .Lfinif:


c. cmp r0, #10 / bls .Lfinif / / .Lfinif:


d. cmp r0, #10 / blo .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[i*num_files + j] = 0; si suponemos que
los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j se
implementan en los registros r2 y r3, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / mov r4, #0 / str r4, [r0, r5, lsl #2]


b. mul r5, r2, r1 / add r5, r3, lsl #2 / mov r4, #0 / str r4, [r0, r5]


c. mul r5, r2, r1 / add r5, r3 / mov r4, #0, lsl #2 / str r4, [r0, r5]


d. mul r5, r2, r1, lsl #2 / add r5, r3 / mov r4, #0 / str r4, [r0, r5]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. cmp r0, #10 / bge .Lelse / mov r1, #a


b. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]


c. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a


d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a

Correcta
Punts d'aquesta tramesa: 1/1.
Question 18
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. mov r0, [a] / ldr r1, &b / bl func1


b. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1


c. mov r0, a / ldr r1, =b / bl func1


d. ldr r0, [a] / ldr r1, &b / bl func1

Correcta
Punts d'aquesta tramesa: 1/1.
Punts: 1
Cuntos bits se reservan en una instruccin ARMv4 para codificar un operando
inmediato?
Trieu una resposta.

a. 12


b. 32


c. 8


d. 16

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la
instruccin mov r1, r0, lsl #4?
Trieu una resposta.

a. 0x4FA0 1230


b. 0x084F A012


c. 0x384F A012


d. 0xF84F A012

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 3
Punts: 1
Dado el siguiente contenido de una porcin de la memoria:
0x10032 0xD2
0x10032 0x41
0x10033 0x7F
0x10034 0x00
0x10035 0x60
0x10036 0xAC
0x10036 0xE3

Cul es el word que se encuentra en la posicin 0x10034, con una ordenacin Big
Endian?
Trieu una resposta.

a. 0x00


b. 0x0060ACE3


c. 0x0060


d. 0x0060AC

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cmo se llenan los bits altos del registro r0 con una instruccin ldsh r0, [r1, #2]?
Trieu una resposta.

a. los 16 bits altos a 1


b. los 16 bits altos al valor del signo del nmero que se est cargando


c. los 24 bits altos a 0


d. los 16 bits altos a 0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Cul es la instruccin para saltar cuando un nmero natural es menor estricto que otro?
Trieu una resposta.

a. bls


b. ble


c. blo


d. blt

Correcta
Punts d'aquesta tramesa: 1/1.
Question 6
Punts: 1
Suponiendo que r0 = 0x0000 0023 y r1 = 0x800A 3FF9 Cul de las siguientes
instrucciones saltar despus de ejecutar cmp r0, r1?
Trieu una resposta.

a. beq


b. bhs


c. bhi


d. bgt

Correcta
Punts d'aquesta tramesa: 1/1.
Question 7
Punts: 1
Qu instruccin de lenguaje mquina se utiliza para invocar una rutina?
Trieu una resposta.

a. bl


b. br


c. beq


d. b

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 8
Punts: 1
Cmo se especifica un valor binario en lenguaje ensamblador GAS?
Trieu una resposta.

a. escribiendo el nmero directamente


b. con el prefijo 0b


c. con el sufijo b'


d. con el prefijo 0x

Correcta
Punts d'aquesta tramesa: 1/1.
Question 9
Punts: 1
Qu directiva sirve para definir una variable global inicializada de tipo short?
Trieu una resposta.

a. .hword


b. .byte


c. .short


d. .word

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 10
Punts: 1
Dado el siguiente programa escrito en lenguaje ensamblador:
_start: mov r0, #3
mov r1, #1
.Lbucle: add r0, r1
add r1, #1
cmp r0, #12
blo .Lbucle
.Lstop: b .Lstop

Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le
corresponde al smbolo .Lbucle?
Trieu una resposta.

a. 0x8008


b. 0x8003


c. 0x8002


d. 0x8004

Correcta
Punts d'aquesta tramesa: 1/1.
Question 11
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando el programa ensamblador traduce una instruccin del tipo ldr r1, =v1, qu
tipo de instruccin codifica en lenguaje mquina?
Trieu una resposta.

a. ldr r1, 0x10034


b. mov r1, #0x10034


c. ldr r1, [0x10034]


d. ldr r1, [pc, #desp] (dnde desp es el desplazamiento hasta un posicin del
programa)
Correcta
Punts d'aquesta tramesa: 1/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < 10; i++) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. .Lfor: / mov r0, #0 / / add r0, #1 / cmp r0, #10 / bhs .Lfor


b. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / bhs .Lfor


c. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / blo .Lfor


d. .Lfor: / mov r0, #0 / / add r0, #1 / cmp r0, #10 / blo .Lfor

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < j; i++) {...},
suponiendo que las variables i y j (de tipo int) se asignen a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, r1 / bls .Lfor


b. mov r0, #0 / cmp r0, r1 / bge .Lfinfor / .Lfor: / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

c. mov r0, #0 / cmp r0, r1 / .Lfor: / bge .Lfinfor / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

d. mov r0, #0 / .Lfor: / cmp r0, r1 / bge .Lfinfor / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:
Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a++;, suponiendo que el
valor de la variable a (de tipo int) est asignado al registro r0?
Trieu una resposta.

a. add #1, r0


b. add r0, #1


c. add 1, r0


d. add r0, 1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a & 0x10) {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #0x10 / bne .Lfinif / / .Lfinif:


b. cmp r0, #0x10 / beq .Lfinif / / .Lfinif:


c. tst r0, #0x10 / bne .Lfinif / / .Lfinif:


d. tst r0, #0x10 / beq .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer
parmetro se pasa por el registro r0, el segundo parmetro por r1, y las variables locales
i y temp se ubican en los registros r2 y r3, respectivamente?

Trieu una resposta.

a. ldr r4, [r0, r2, lsl #2] / sub r2, #1 / str r4, [r0, r2, lsl #2]


b. ldr r4, [r0, r2, lsl #2] / sub r3, r2, #1 / str r4, [r0, r3, lsl #2]


c. ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


d. ldr r4, [r0, r3, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[i*num_files + j] = 0; si suponemos que
los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j se
implementan en los registros r2 y r3, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / mov r4, #0, lsl #2 / str r4, [r0, r5]


b. mul r5, r2, r1, lsl #2 / add r5, r3 / mov r4, #0 / str r4, [r0, r5]


c. mul r5, r2, r1 / add r5, r3 / mov r4, #0 / str r4, [r0, r5, lsl #2]


d. mul r5, r2, r1 / add r5, r3, lsl #2 / mov r4, #0 / str r4, [r0, r5]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


b. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap


c. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap


d. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap

Punts: 1
Qu tipo de instrucciones pueden generar un secuenciamiento explcito?
Trieu una resposta.

a. de salto


b. de comparacin


c. de carga de informacin de memoria


d. aritmticas y lgicas

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de r4 y r5 despus de ejecutar una instruccin pop {r0, r1, r4-
r7}?
Trieu una resposta.

a. r4 = 0x509AE246; r5 = 0xF0B57D8B


b. r4 = 0x0800CACB; r5 = 0xFFFFFFFE


c. r4 = 0x35CD0523; r5 = 0x000127AC


d. r4 = 0x00000000; r5 = 0x0800CACB

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cul es la instruccin para saltar cuando dos nmeros naturales sn diferentes?
Trieu una resposta.

a. bne


b. beq


c. ble


d. bhi

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul de las siguientes instrucciones sirve para grabar el contenido de un registro de
lenguaje mquina en un half-word de memoria?
Trieu una resposta.

a. str


b. ldr


c. strh


d. ldrh

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Cul de las siguientes instrucciones es capaz de multiplicar el contenido de r0 por -3?
Trieu una resposta.

a. sub r0, r0, lsl #4


b. sub r0, r0, lsl #3


c. sub r0, r0, lsl #1


d. sub r0, r0, lsl #2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r1 y r5 despus de ejecutar las instrucciones
push {r0-r5} y pop {r1-r6}?
Trieu una resposta.

a. r1 = 0x00FE37A1; r5 = 0xFFFFFFFE


b. r1 = 0x00000000; r5 = 0x00000001


c. r1 = 0x00000001; r5 = 0xFFFFFFFE


d. r1 = 0x00000000; r5 = 0x00FE37A1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se define la direccin de inicio de una rutina?
Trieu una resposta.

a. con una instruccin de llamada a rutina bl


b. con una etiqueta de salto


c. con una directiva .routine


d. con una directiva .global

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se marca un comentario en lenguaje ensamblador GAS?
Trieu una resposta.

a. empezando el comentario con un carcter @


b. en color verde


c. empezando el comentario con un carcter ;


d. empezando el comentario con dos caracteres /

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Qu son los smbolos del lenguaje ensamblador?
Trieu una resposta.

a. los cdigos binarios de las instrucciones de lenguaje mquina


b. los nombres de las variables y las etiquetas de salto


c. los valores inmediatos


d. los comentarios

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se guarda en el sistema de ficheros del ordenador un programa escrito en
lenguaje ensamblador?
Trieu una resposta.

a. como ceros y unos


b. como un fichero de cdigos binarios


c. como un fichero de texto


d. como un fichero de lenguaje mquina

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se traduce una etiqueta de salto definida en ensamblador a lenguaje mquina?
Trieu una resposta.

a. como un dato en memoria


b. como una direccin de memoria


c. como una instruccin


d. como una direccin de memoria ms un dato en memoria

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if ((a > 0) && (b < a)) {...},
suponiendo que las variables a y b (de tipo int) estn asignadas a los registros r0 y
r1, respectivamente?
Trieu una resposta.

a. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:


b. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lif / b .Lfinif / .Lif: / / .Lfinif:


c. cmp r0, #0 / ble .Lif / cmp r1, r0 / bge .Lfinif / b .Lfinif / .Lif: / / .Lfinif:


d. cmp r0, #0 / ble .Lif / cmp r1, r0 / bge .Lif / b .Lfinif / .Lif: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Suponiendo que se han declarado las constantes Base (dir. base), NC (nm. columnas),
NF (nm. filas) y T (tamao elementos), cul es la frmula para calcular la direccin
de memoria de un elemento (i, j) de una matriz almacenada por filas?
Trieu una resposta.

a. dir(i, j) = Base + (i * NC + j)


b. dir(i, j) = Base + (i * NF + j)


c. dir(i, j) = Base + (i * NF + j) * T


d. dir(i, j) = Base + (i * NC + j) * T

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[1] = i;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. strb r0, [r1]


b. mov r2, #1 / strb r2, [r1, r0]


c. strb r0, [r1, #1]


d. strb #1, [r1, r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a++;, suponiendo que el
valor de la variable a (de tipo int) est asignado al registro r0?
Trieu una resposta.

a. add r0, #1


b. add r0, 1


c. add 1, r0


d. add #1, r0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]


b. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]


c. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]


d. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer
parmetro se pasa por el registro r0, el segundo parmetro por r1, y las variables locales
i y temp se ubican en los registros r2 y r3, respectivamente?

Trieu una resposta.

a. ldr r4, [r0, r2, lsl #2] / sub r2, #1 / str r4, [r0, r2, lsl #2]


b. ldr r4, [r0, r3, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


c. ldr r4, [r0, r2, lsl #2] / sub r3, r2, #1 / str r4, [r0, r3, lsl #2]


d. ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r1, =b / ldr r1, [r1] / bl func1


b. ldr r0, a / ldr r1, =b / bl func1


c. ldr r0, =a / ldr r1, =b / ldr r1, [r0] / bl func1


d. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Suponiendo que r0 contiene un nmero natural Qu instruccin podemos utilizar para
dividir el contenido de r0 por 16?
Trieu una resposta.

a. mov r0, r0, lsr #16


b. mov r0, r0, lsl #4


c. mov r0, r0, lsr #4


d. mov r0, r0, lsl #16

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar orr r2, r1, r0, lsr
#2?
Trieu una resposta.

a. r2 = 11


b. r2 = 12


c. r2 = 13


d. r2 = 10

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r5, r4} y pop {r0, r1}?
Trieu una resposta.

a. r0 = 0x00FE37A1; r1 = 0xFFFFFFFE


b. r0 = 0xFFFFFFFE; r1 = 0x00FE37A1


c. r0 = 0x00000000; r1 = 0x00000001


d. r0 = 0xFFFFFFFE; r1 = 0x00000000

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x1003F 0x8B
0x10040 0x7D r2 0x00004
0x10041 0xB5 r3 0x10040
0x10042 0xF0 r4 0x00001
0X10043 0x23
0X10044 0x05
Cul es el resultado de la instruccin strb r2, [r3, r4, lsl #1]?
Trieu una resposta.

a. M[0x10042] = 0x04;


b. M[0x1003F] = 0x04;


c. M[0x10040] = 0x04;


d. M[0x10041] = 0x04;

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de r0 y r1 despus de ejecutar una instruccin pop {r1, r0}?
Trieu una resposta.

a. r0 = 0xC37D12FD; r1 = 0x509AE246


b. r0 = 0x509AE246; r1 = 0xF0B57D8B


c. r0 = 0xF0B57D8B; r1 = 0x509AE246


d. r0 = 0x509AE246; r1 = 0xC37D12FD

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #3
0x8004 mov r1, #1
0x8008 add r0, r1
0x800C add r1, #1
0x8010 cmp r0, #12
0x8014 blo 0x8008
0x8018 b 0x8018
Cuntas instrucciones se ejecutan desde 0x8000 hasta que se llega a 0x8018?
Trieu una resposta.

a. 38


b. 18


c. 7


d. 6

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se traduce una etiqueta de salto definida en ensamblador a lenguaje mquina?
Trieu una resposta.

a. como una instruccin


b. como una direccin de memoria ms un dato en memoria


c. como una direccin de memoria


d. como un dato en memoria

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Qu registros hay que restaurar al final de una rutina?
Trieu una resposta.

a. todos los que pasan parmetros


b. todos los que se modifican


c. todos los que se modifican excepto los registro que retornan resultados


d. todos

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
En qu base se pueden expresar los nmeros negativos con el smbolo - en el
lenguaje ensamblador GAS?
Trieu una resposta.

a. slo en base 10


b. en base 10 y en base 16 (hexadecimal)


c. en cualquier base


d. en base 10 y en base 8 (octal)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
En qu seccin se deben ubicar las instrucciones de lenguaje mquina?
Trieu una resposta.

a. .bss


b. .var


c. .text


d. .data

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que tenemos el siguiente trozo de programa en lenguaje mquina:
0x8000 ldr r1, [pc, #16]
0x8004 ldr r1, [r0]
0x8008 ldr r1, [r0, r2]
0x800C ldr r1, [r0, r2, lsl
#3]
0x8010 b 0x8010
0x8014 (0x0001 0034)

qu instruccin corresponde a una instruccin del tipo ldr r1, =v1?
Trieu una resposta.

a. ldr r1, [pc, #16]


b. ldr r1, [r0]


c. ldr r1, [r0, r2, lsl #3]


d. ldr r1, [r0, r2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Suponiendo que se han declarado las constantes Base (dir. base), NC (nm. columnas),
NF (nm. filas) y T (tamao elementos), cul es la frmula para calcular la direccin
de memoria de un elemento (i, j) de una matriz almacenada por filas?
Trieu una resposta.

a. dir(i, j) = Base + (i * NC + j) * T


b. dir(i, j) = Base + (i * NF + j) * T


c. dir(i, j) = Base + (j * NF + i) * T


d. dir(i, j) = Base + (j * NC + i) * T

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhi .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / bls .Ldo


c. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


d. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lelse / .Lelse: / / .Lfinif:


b. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


c. cmp r0, #10 / bhs .Lfinif / add r0, #1 / .Lelse: / / .Lfinif:


d. cmp r0, #10 / bhs .Lfinif / add r0, #1 / b .Lelse / .Lelse: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / / cmp r0, #10 / bhs .Lwhile


b. mov r0, #0 / .Lwhile: / / cmp r0, #10 / blo .Lwhile


c. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile / .Lfinwhile:



d. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[j][i]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[0] = temp; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. str r3, [r0] @; r3 es temp


b. ldr r2, =temp / ldr r3, [r2] / str r3, [r0]


c. strb r3, [r0] @; r3 es temp


d. ldr r2, =temp / ldr r3, [r2] / str r3, [r0, r1, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp


b. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


c. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


d. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Cmo se llenan los bits altos del registro r0 con una instruccin ldrh r0, [r1, #2]?
Trieu una resposta.

a. los 16 bits altos a 0


b. los 24 bits altos a 0


c. los 16 bits altos a 1


d. los 16 bits altos al valor del signo del nmero que se est cargando

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de la instruccin orr r2, r1, r0?
Trieu una resposta.

a. r2 = 14


b. r2 = 12


c. r2 = 15


d. r2 = 2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #5
0x8004 mov r1, #2
0x8008 cmp r0, r1
0x800C bls 0x8018
0x8010 add r1, #1
0x8014 b 0x8008
0x8018 b 0x8018
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x8018 (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto necesita 1 ciclo, una instruccin de salto con secuenciamiento explcito
necesita 3 ciclos, y una instruccin de salto con secuenciamiento implcito necesita 4
ciclos?
Trieu una resposta.

a. 26


b. 33


c. 27


d. 29

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul de las siguientes instrucciones sirve para grabar el valor entero de un registro de
lenguaje mquina en un byte de memoria?
Trieu una resposta.

a. strh


b. stsb


c. str


d. strb

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que r0 = 0x0000 0023 y r1 = 0x800A 3FF9 Cul de las siguientes
instrucciones saltar despus de ejecutar cmp r0, r1?
Trieu una resposta.

a. bhi


b. bgt


c. beq


d. bhs

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Qu tipo de informacin almacena la memoria de un sistema programable?
Trieu una resposta.

a. instrucciones de programa


b. instrucciones y datos de programa


c. seales del exterior del sistema


d. datos de programa

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
En lenguaje ensamblador GAS para ARMv4, cmo se especifican los valores
inmediatos de las instrucciones de lenguaje mquina?
Trieu una resposta.

a. con el prefijo 0x


b. entre comillas


c. con el prefijo #


d. entre parntesis

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se traduce una etiqueta de salto definida en ensamblador a lenguaje mquina?
Trieu una resposta.

a. como una direccin de memoria ms un dato en memoria


b. como una instruccin


c. como un dato en memoria


d. como una direccin de memoria

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Cmo se consigue el retorno de una rutina con las instrucciones push de inicio i pop
de fin?
Trieu una resposta.

a. salvando el pc y recuperando su contenido en el registro lr


b. salvando el contenido de los registros que contienen parmetros de la rutina


c. salvando el registro lr y recuperando su contenido en el pc


d. salvando y restaurando los registros que se modifican dentro de la rutina

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v6: .byte 1, 2, 3, 4, 5,
6
.align 1
Cul ser la siguiente direccin de ensamblado si v6 se almacena en 0x10060?
Trieu una resposta.

a. 0x10067


b. 0x10068


c. 0x10070


d. 0x10066

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Dado el siguiente programa escrito en lenguaje ensamblador:
_start: mov r0, #3
mov r1, #1
.Lbucle: add r0, r1
add r1, #1
cmp r0, #12
blo .Lbucle
.Lstop: b .Lstop

Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le
corresponde al smbolo .Lbucle?
Trieu una resposta.

a. 0x8008


b. 0x8003


c. 0x8002


d. 0x8004

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / / cmp r0, #10 / blo .Lwhile


d. mov r0, #0 / .Lwhile: / / cmp r0, #10 / bhs .Lwhile

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / bls .Lfinwhile / / b .Lwhile / .Lfinwhile:



c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhi .Lfinwhile / / b .Lwhile / .Lfinwhile:



d. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile /
.Lfinwhile:
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if ((a > 0) && (b < a)) {...},
suponiendo que las variables a y b (de tipo int) estn asignadas a los registros r0 y
r1, respectivamente?
Trieu una resposta.

a. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / ble .Lfinif / / .Lfinif:


b. cmp r0, #0 / bge .Lfinif / cmp r1, r0 / ble .Lfinif / / .Lfinif:


c. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:


d. cmp r0, #0 / bge .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


b. .Ldo: / mov r0, #0 / / cmp r0, #10 / blo .Ldo


c. mov r0, #0 / / cmp r0, #10 / .Ldo: / blo .Ldo


d. mov r0, #0 / / .Ldo: / cmp r0, #10 / blo .Ldo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2] / bl func2


b. bl func2 / ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


c. ldr r0, =a / bl func2 / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


d. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / bl func2 / strb r1, [r2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]


c. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]


d. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r2, =b / strb r1, [r2]


b. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r1, =b / strb r1, [r1]


c. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r2, =b / str r1, [r2]


d. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r1, =b / str r1, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Cul de las siguientes instrucciones sirve para cargar un byte de memoria que
representa un valor entero en un registro de lenguaje mquina?
Trieu una resposta.

a. ldr


b. ldrh


c. ldsb


d. ldrb

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 2
Punts: 1
Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la
instruccin mov r1, r0, lsl #4?
Trieu una resposta.

a. 0xF84F A012


b. 0x384F A012


c. 0x084F A012


d. 0x4FA0 1230

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 3
Punts: 1
Cuntos registros de lenguaje mquina del ARMv4 se pueden usar como operandos
de las instrucciones aritmticas?
Trieu una resposta.

a. 18


b. 16


c. 13


d. 8

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 4
Punts: 1
Como mximo, de cuntos campos identificadores de registro disponen las
instruccin de un procesador ARMv4 (en modo ARM)?
Trieu una resposta.

a. 16


b. 1


c. 2


d. 4

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 5
Punts: 1
Cmo se llenan los bits altos del registro r0 con una instruccin ldsh r0, [r1, #2]?
Trieu una resposta.

a. los 24 bits altos a 0


b. los 16 bits altos a 1


c. los 16 bits altos al valor del signo del nmero que se est cargando


d. los 16 bits altos a 0

Incorrecta
Punts d'aquesta tramesa: -0.67/1.
Question 6
Punts: 1
Qu instruccin podemos utilizar para multiplicar el contenido de r0 por 16?
Trieu una resposta.

a. mov r0, r0, lsl #16


b. mov r0, r0, lsr #4


c. mov r0, r0, lsl #4


d. mul r0, r0, #16

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 7
Punts: 1
En qu seccin se deben ubicar las instrucciones de lenguaje mquina?
Trieu una resposta.

a. .var


b. .text


c. .data


d. .bss

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 8
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v1: .byte 8

Cmo se puede cargar la direccin de memoria de v1 en el registro r0?
Trieu una resposta.

a. ldr r0, v1


b. mov r0, v1


c. ldr r0, [v1]


d. ldr r0, =v1

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 9
Punts: 1
Qu directiva se utiliza para reservar espacio de memoria para una variable no
inicializada?
Trieu una resposta.

a. .word n (n = nmero de words a reservar)


b. .space n (n = nmero de bytes a reservar)


c. .byte n (n = nmero de bytes a reservar)


d. .bss n (n = nmero de words a reservar)

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 10
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C unsigned char
c = C;?
Trieu una resposta.

a. c: .unsigned char C


b. c: .byte C


c. c: .unsigned byte C


d. c .byte C

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 11
Punts: 1
Cmo se especifica un valor binario en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el sufijo b'


b. escribiendo el nmero directamente


c. con el prefijo 0b


d. con el prefijo 0x

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a ^ b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. orr r2, r0, r1


b. or r2, r0, r1


c. eor r2, r0, r1


d. and r2, r0, r1

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a*a + b;, suponiendo
que las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. mul r2, r0, r0 / add r2, r1


b. mul r0, r0, r0 / add r2, r0, r1


c. add r2, r1, r0, lsl #2


d. mul r3, r0, r0 / add r1, r2, r3

Correcta
Punts d'aquesta tramesa: 1/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / / cmp r0, #10 / .Ldo: / blo .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


c. .Ldo: / mov r0, #0 / / cmp r0, #10 / blo .Ldo


d. mov r0, #0 / / .Ldo: / cmp r0, #10 / blo .Ldo

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / bhi .Lelse / add r0, #1 / b .Lfinif: / .Lelse: / / .Lfinif:


b. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


c. cmp r0, #10 / bls .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


d. cmp r0, #10 / blo .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r1, =b / str r1, [r1]


b. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r2, =b / str r1, [r2]


c. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r2, =b / strb r1, [r2]


d. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r1, =b / strb r1, [r1]

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 17
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / bl func2 / strb r1, [r2]


b. bl func2 / ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


c. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2] / bl func2


d. ldr r0, =a / bl func2 / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Punts: 1
Cul de las siguientes instrucciones efecta un salto condicional?
Trieu una resposta.

a. beq


b. b


c. cmp


d. bl

Correcta
Punts d'aquesta tramesa: 1/1.
Question 2
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de las posiciones de memoria 0x07E8 y 0X07EC despus de
ejecutar una instruccin push {r0, r1, r4-r5}?
Trieu una resposta.

a. M[0x07E8] = 0x00000000; M[0x07EC] = 0x00000001


b. M[0x07E8] = 0x00000000; M[0x07EC] = 0xFFFFFFFE


c. M[0x07E8] = 0xFFFFFFFE; M[0x07EC] = 0x00FE37A1


d. M[0x07E8] = 0x00FE37A1; M[0x07EC] = 0xFFFFFFFE

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Qu registro del procesador se encarga de memorizar la direccin de la instruccin
de lenguaje mquina a ejecutar?
Trieu una resposta.

a. el r13 (sp)


b. el r0


c. el r15 (pc)


d. el r14 (lr)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
De los elementos que componen un procesador, cul de ellos maneja el bus de
control?
Trieu una resposta.

a. unidad de clculo de direcciones


b. unidad de control


c. unidad aritmtico-lgica


d. registros

Correcta
Punts d'aquesta tramesa: 1/1.
Question 5
Punts: 1
Cul de las siguientes instrucciones sirve para cargar un word de memoria en un
registro de lenguaje mquina?
Trieu una resposta.

a. ldr


b. str


c. strb


d. ldrb

Correcta
Punts d'aquesta tramesa: 1/1.
Question 6
Punts: 1
Cul de las siguientes instrucciones es capaz de multiplicar el contenido de r0 por -3?
Trieu una resposta.

a. sub r0, r0, lsl #4


b. sub r0, r0, lsl #3


c. sub r0, r0, lsl #1


d. sub r0, r0, lsl #2

Correcta
Punts d'aquesta tramesa: 1/1.
Question 7
Punts: 1
Dado el siguiente programa escrito en lenguaje ensamblador:
_start: mov r0, #3
mov r1, #1
.Lbucle: add r0, r1
add r1, #1
cmp r0, #12
blo .Lbucle
.Lstop: b .Lstop

Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le
corresponde al smbolo .Lbucle?
Trieu una resposta.

a. 0x8008


b. 0x8004


c. 0x8003


d. 0x8002

Correcta
Punts d'aquesta tramesa: 1/1.
Question 8
Punts: 1
A qu nivel est definida una instruccin como bne 0x8008?
Trieu una resposta.

1. a nivel de lenguaje ensamblador


2. a alto nivel


3. a nivel de lenguaje mquina


4. a nivel de cdigo mquina

Correcta
Punts d'aquesta tramesa: 1/1.
Question 9
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v1: .byte 8
.align 2
Cul ser la siguiente direccin de ensamblado si v1 se almacena en 0x10034?
Trieu una resposta.

a. 0x10036


b. 0x10037


c. 0x10035


d. 0x10038

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Qu directiva se utiliza para reservar espacio de memoria para una variable no
inicializada?
Trieu una resposta.

a. .word n (n = nmero de words a reservar)


b. .byte n (n = nmero de bytes a reservar)


c. .space n (n = nmero de bytes a reservar)


d. .bss n (n = nmero de words a reservar)

Correcta
Punts d'aquesta tramesa: 1/1.
Question 11
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v3: .word 32

Cmo se puede cargar el contenido de memoria de v3 en el registro r0?
Trieu una resposta.

a. ldr r1, =v1 / ldr r0, [r1]


b. mov r0, =v1


c. ldr r0, =v1 / ldr r1, [r0]


d. ldr r0, =v1 / ldr r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo


c. mov r0, #0 / .Ldo: / cmp r0, #10 / bhs .Lfindo / / b .Ldo / .Lfindo:


d. mov r0, #0 / .Ldo: / cmp r0, #10 / blo .Lfindo / / b .Ldo / .Lfindo:

Correcta
Punts d'aquesta tramesa: 1/1.
Question 13
Punts: 1
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #4]


b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5]


c. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #1]


d. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C b += a*2;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. add r1, r0, lsr #1


b. add r1, r0, lsl #2


c. add r1, r0, lsl #1


d. add r1, r0, lsr #2

Correcta
Punts d'aquesta tramesa: 1/1.
Question 15
Punts: 1
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

a. mul r5, r3, r2 / add r5, r4 / ldr r6, [r0, r5, lsl #2]


b. mul r5, r4, r1 / add r5, r3 / ldr r6, [r0, r5, lsl #2]


c. mul r5, r3, r1 / add r5, r1 / ldr r6, [r0, r5, lsl #2]


d. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a


b. cmp r0, #10 / bge .Lelse / mov r1, #a


c. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a


d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer
parmetro se pasa por el registro r0, el segundo parmetro por r1, y las variables locales
i y temp se ubican en los registros r2 y r3, respectivamente?

Trieu una resposta.

a. ldr r4, [r0, r2, lsl #2] / sub r2, #1 / str r4, [r0, r2, lsl #2]


b. ldr r4, [r0, r2, lsl #2] / sub r3, r2, #1 / str r4, [r0, r3, lsl #2]


c. ldr r4, [r0, r3, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


d. ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Punts: 1
Cul es la instruccin para saltar cuando un nmero natural es menor o igual que otro?
Trieu una resposta.

a. ble


b. blt


c. blo


d. bls

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cmo se modifica el registro sp despus de ejecutar una instruccin push {r0-r3,
lr}?
Trieu una resposta.

a. sp = sp - 20


b. sp = sp - 5


c. sp = sp + 12


d. sp = sp + 24

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #3
0x8004 mov r1, #1
0x8008 add r0, r1
0x800C add r1, #1
0x8010 cmp r0, #12
0x8014 blo 0x8008
0x8018 b 0x8018
Cuntas instrucciones se ejecutan desde 0x8000 hasta que se llega a 0x8018?
Trieu una resposta.

a. 38


b. 18


c. 7


d. 6

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul de los siguientes operadores se emplea para desplazar el contenido de un
registro cierto nmero de bits a la derecha, suponiendo que el valor a desplazar es un
entero Ca2?
Trieu una resposta.

a. lsr


b. asr


c. ror


d. lsl

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que los contenidos de r0 i r1 sean 20 i 40 respectivamente Cul es el
resultado de la instruccin sub r2, r1, r0, lsr #2?
Trieu una resposta.

a. r2 = 35


b. r2 = 0


c. r2 = 30


d. r2 = 20

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Qu tipo de informacin almacena la memoria de un sistema programable?
Trieu una resposta.

a. datos de programa


b. instrucciones de programa


c. seales del exterior del sistema


d. instrucciones y datos de programa

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Qu son los smbolos del lenguaje ensamblador?
Trieu una resposta.

a. los cdigos binarios de las instrucciones de lenguaje mquina


b. los nombres de las variables y las etiquetas de salto


c. los valores inmediatos


d. los comentarios

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v4: .space 10
.align 2
Cul ser la siguiente direccin de ensamblado si v4 se almacena en 0x10050?
Trieu una resposta.

a. 0x10052


b. 0x1005A


c. 0x1005C


d. 0x10050

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Qu directiva sirve para definir una variable global inicializada de tipo char?
Trieu una resposta.

a. .byte


b. .hword


c. .word


d. .char

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se especifica un valor octal en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el prefijo 0


b. escribiendo el nmero directamente


c. con el sufijo o'


d. con el prefijo o

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que tenemos la siguiente declaracin en lenguaje C: int matrix[][] = {{2, -
5, 90}, {-12, 82, 0}, {-4, 850, -100}};, y que la variable global matrix se empieza a
guardar en la direccin 0x10034, En que direccin se almacenar el valor 0?
Trieu una resposta.

a. 0x10054


b. 0x10039


c. 0x10040


d. 0x10048

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a == 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / bge .Lfinif / / .Lfinif:


b. cmp r0, #0 / bne .Lfinif / / .Lfinif:


c. cmp r0, #0 / beq .Lfinif / / .Lfinif:


d. cmp r0, #0 / ble .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / bge .Lfinif / / .Lfinif:


b. cmp r0, #0 / bne .Lfinif / / .Lfinif:


c. cmp r0, #0 / ble .Lfinif / / .Lfinif:


d. cmp r0, #0 / bgt .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[0] = i;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. strb #0, [r1, r0]


b. strb r0, [r1]


c. str r0, [r1, #0]


d. mov r2, #0 / strb r2, [r1, r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Suponiendo que se han declarado las constantes Base (dir. base), NC (nm. columnas),
NF (nm. filas) y T (tamao elementos), cul es la frmula para calcular la direccin
de memoria de un elemento (i, j) de una matriz almacenada por filas?
Trieu una resposta.

a. dir(i, j) = Base + (i * NF + j) * T


b. dir(i, j) = Base + (i * NC + j) * T


c. dir(i, j) = Base + (j * NC + i) * T


d. dir(i, j) = Base + (j * NF + i) * T

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer
parmetro se pasa por el registro r0, el segundo parmetro por r1, y las variables locales
i y temp se ubican en los registros r2 y r3, respectivamente?

Trieu una resposta.

a. ldr r4, [r0, r2, lsl #2] / sub r3, r2, #1 / str r4, [r0, r3, lsl #2]


b. ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


c. ldr r4, [r0, r3, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


d. ldr r4, [r0, r2, lsl #2] / sub r2, #1 / str r4, [r0, r2, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[i*num_files + j] = 0; si suponemos que
los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j se
implementan en los registros r2 y r3, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3, lsl #2 / mov r4, #0 / str r4, [r0, r5]


b. mul r5, r2, r1 / add r5, r3 / mov r4, #0 / str r4, [r0, r5, lsl #2]


c. mul r5, r2, r1 / add r5, r3 / mov r4, #0, lsl #2 / str r4, [r0, r5]


d. mul r5, r2, r1, lsl #2 / add r5, r3 / mov r4, #0 / str r4, [r0, r5]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1


b. ldr r0, =a / ldr r1, =b / ldr r1, [r1] / bl func1


c. ldr r0, a / ldr r1, =b / bl func1


d. ldr r0, =a / ldr r1, =b / ldr r1, [r0] / bl func1

Punts: 1
En un desplazamiento de un registro a la derecha con el operardor lsr, qu valor se
introduce por el bit de ms peso del registro?
Trieu una resposta.

a. siempre 0


b. 0 si el nmero es positivo, 1 si es negativo


c. 1 si el nmero es positivo, 0 si es negativo


d. siempre 1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Qu registro del procesador se encarga de memorizar la direccin de la instruccin
de lenguaje mquina a ejecutar?
Trieu una resposta.

a. el r14 (lr)


b. el r0


c. el r13 (sp)


d. el r15 (pc)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cul de las siguientes instrucciones es capaz de multiplicar el contenido de r0 por 5?
Trieu una resposta.

a. add r0, r0, lsl #2


b. add r0, r0, lsl #3


c. add r0, r0, lsl #5


d. add r0, r0, lsl #4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de realizar
clculos que requieren las instrucciones de lenguaje mquina?
Trieu una resposta.

a. registros


b. unidad aritmtico-lgica


c. unidad de clculo de direcciones


d. unidad de control

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
De los elementos que componen un sistema programable, cul de ellos se encarga
de ejecutar la instrucciones de lenguaje mquina?
Trieu una resposta.

a. procesador


b. buses


c. controladores de entrada/salida


d. memoria

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
De los tipos de bus que componen un sistema programable, cul de ellos se encarga
de controlar el sentido de la transferencia de datos entre la memoria y el procesador?
Trieu una resposta.

a. bus de direcciones


b. bus de datos


c. bus de control


d. bus de entrada/salida

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
En lenguaje ensamblador GAS, Cmo se puede definir que una etiqueta de salto es
accesible desde otros mdulos (ficheros) del programa?
Trieu una resposta.

a. empezando por un punto


b. con la directiva .local


c. con la directiva .global


d. empezando por .L

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando se codifica una instruccin del tipo ldr r1, =v1, cuntos bits de memoria se
utilizan para guardar dicha posicin de memoria?
Trieu una resposta.

a. 12


b. 20


c. 16


d. 32

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Cmo se puede alinear la memoria a hword?
Trieu una resposta.

a. .align 1


b. .align 3


c. ..align 4


d. .align 2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se marca un comentario en lenguaje ensamblador GAS?
Trieu una resposta.

a. empezando el comentario con un carcter @


b. empezando el comentario con un carcter ;


c. en color verde


d. empezando el comentario con dos caracteres /

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando el programa ensamblador traduce una instruccin del tipo ldr r1, =v1, qu
tipo de instruccin codifica en lenguaje mquina?
Trieu una resposta.

a. mov r1, #0x10034


b. ldr r1, 0x10034


c. ldr r1, [0x10034]


d. ldr r1, [pc, #desp] (dnde desp es el desplazamiento hasta un posicin del
programa)
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #1]


b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]


c. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #4]


d. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / cmp r0, #10 / bhs .Lfindo / / b .Ldo / .Lfindo:


b. mov r0, #0 / .Ldo: / cmp r0, #10 / blo .Lfindo / / b .Ldo / .Lfindo:


c. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


d. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C b += a*2;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. add r1, r0, lsl #1


b. add r1, r0, lsr #1


c. add r1, r0, lsl #2


d. add r1, r0, lsr #2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[0] = i;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. str r0, [r1, #0]


b. strb r0, [r1]


c. strb #0, [r1, r0]


d. mov r2, #0 / strb r2, [r1, r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]



b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


d. cmp r0, r1 / bge .Lelse / mov r2, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer
parmetro se pasa por el registro r0, el segundo parmetro por r1, y las variables locales
i y temp se ubican en los registros r2 y r3, respectivamente?

Trieu una resposta.

a. ldr r4, [r0, r2, lsl #2] / sub r3, r2, #1 / str r4, [r0, r3, lsl #2]


b. ldr r4, [r0, r2, lsl #2] / sub r2, #1 / str r4, [r0, r2, lsl #2]


c. ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


d. ldr r4, [r0, r3, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a


b. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]


c. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a


d. cmp r0, #10 / bge .Lelse / mov r1, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
En ARMv4, de cantos bits es el valor derivado de un operando inmediato (despus
de realizar el desplazamiento pertinente)?
Trieu una resposta.

a. 8


b. 12


c. 16


d. 32

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar and r2, r1, r0, lsl
#2?
Trieu una resposta.

a. r2 = 8


b. r2 = 6


c. r2 = 2


d. r2 = 4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Dado el siguiente contenido de una porcin de la memoria:
0x10032 0x41
0x10033 0x7F
0x10034 0x00
0x10035 0x60
0x10036 0xAC
0x10037 0xE3

Cul es el half word que se encuentra en la posicin 0x10034, con una ordenacin
Big Endian?
Trieu una resposta.

a. 0x00


b. 0x6000ACE3


c. 0x0060


d. 0x007F

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Suponiendo que r13 = 0x07DC y r14 = 0x84AC, Cul es el valor del r13 despus de
ejecutar la instruccin push {r0-r2, lr}?
Trieu una resposta.

a. r13 = 0x07DC


b. r13 = 0x07D9


c. r13 = 0x07CC


d. r13 = 0x84AC

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
De los elementos que componen un sistema programable, cul de ellos se encarga
de ejecutar la instrucciones de lenguaje mquina?
Trieu una resposta.

a. memoria


b. procesador


c. buses


d. controladores de entrada/salida

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cmo se organiza la memoria de un sistema programable basado en ARMv4?
Trieu una resposta.

a. como un vector de half-words


b. como un vector de words


c. como un vector de bits


d. como un vector de bytes

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cuntos bytes puede insertar el programa ensamblador como respuesta a una directiva
.align 2?
Trieu una resposta.

a. siempre 2


b. siempre 4


c. 0, 1, 2 o 3


d. 1 o 2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se puede alinear la memoria a hword?
Trieu una resposta.

a. .align 2


b. .align 1


c. ..align 4


d. .align 3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v1: .byte 8

Cmo se puede cargar la direccin de memoria de v1 en el registro r0?
Trieu una resposta.

a. mov r0, v1


b. ldr r0, =v1


c. ldr r0, [v1]


d. ldr r0, v1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
En lenguaje ensamblador GAS para ARMv4, cmo se especifican los valores
inmediatos de las instrucciones de lenguaje mquina?
Trieu una resposta.

a. entre parntesis


b. con el prefijo 0x


c. con el prefijo #


d. entre comillas

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
A qu nivel est definido el cdigo hexadecimal de una instruccin de lenguaje
mquina como 0x1AFF FFFC?
Trieu una resposta.

a. a nivel de lenguaje ensamblador


b. a nivel de cdigo mquina


c. a alto nivel


d. a nivel de lenguaje mquina

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a >= 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / ble .Lfinif / / .Lfinif:


b. cmp r0, #0 / bne .Lfinif / / .Lfinif:


c. cmp r0, #0 / blt .Lfinif / / .Lfinif:


d. cmp r0, #0 / bge .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / bls .Ldo


c. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo


d. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhi .Ldo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[i] = 1;, suponiendo el vector
v es de tipo int, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. mov r2, #1 / str r2, [r1, r0]


b. mov r2, #1 / str r2, [r1, r0, lsl #1]


c. mov r2, #1 / str r2, [r1, r0, lsl #2]


d. mov r2, #1 / str r2, [r1, r0, lsl #4]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


b. mov r0, #0 / / cmp r0, #10 / .Ldo: / blo .Ldo


c. mov r0, #0 / / .Ldo: / cmp r0, #10 / blo .Ldo


d. .Ldo: / mov r0, #0 / / cmp r0, #10 / blo .Ldo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. cmp r0, #10 / bge .Lelse / mov r1, #a


b. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a


c. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]


d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / bl func2 / strb r1, [r2]


b. ldr r0, =a / bl func2 / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


c. bl func2 / ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


d. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2] / bl func2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. cmp r0, r1 / bge .Lelse / mov r2, #a


b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]



d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de calcular
las posiciones de memoria donde se encuentran los datos del programa?
Trieu una resposta.

a. registros


b. unidad de clculo de direcciones


c. unidad de control


d. unidad aritmtico-lgica

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
De los elementos que componen un procesador, cul de ellos controla el contenido
del bus de direcciones?
Trieu una resposta.

a. unidad aritmtico-lgica


b. unidad de clculo de direcciones


c. unidad de control


d. registros

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
En ARMv4, de cantos bits es el valor derivado de un operando inmediato (despus
de realizar el desplazamiento pertinente)?
Trieu una resposta.

a. 16


b. 12


c. 32


d. 8

Correcta
Punts d'aquesta tramesa: 1/1.
Question 4
Punts: 1
1.6.2 Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #3
0x8004 mov r1, #1
0x8008 add r0, r1
0x800C cmp r0, #12
0x8010 blo 0x8008
0x8014 b 0x8014
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x8014 (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto necesita 1 ciclo, una instruccin de salto con secuenciamiento explcito
necesita 3 ciclos, y una instruccin de salto con secuenciamiento implcito necesita 4
ciclos?
Trieu una resposta.

a. 26


b. 37


c. 48


d. 53

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
En ARMv4, hacia dnde se deplaza el patrn de bits a 1 de un operando inmediato?
Trieu una resposta.

a. hacia la derecha


b. hacia la izquierda o hacia la derecha, segn la instruccin de lenguaje mquina



c. no se desplazan


d. hacia la izquierda

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cmo se llenan los bits altos del registro r0 con una instruccin ldrh r0, [r1, #2]?
Trieu una resposta.

a. los 16 bits altos al valor del signo del nmero que se est cargando


b. los 16 bits altos a 0


c. los 16 bits altos a 1


d. los 24 bits altos a 0

Correcta
Punts d'aquesta tramesa: 1/1.
Question 7
Punts: 1
Qu registro tiene que guardarse a la pila en la primera instruccin push de una rutina
para permitir el retorno correctamente?
Trieu una resposta.

a. el registro 15 (pc)


b. el registro 14 (lr)


c. el registro 13 (sp)


d. el registro 0

Correcta
Punts d'aquesta tramesa: 1/1.
Question 8
Punts: 1
Dado el siguiente programa escrito en lenguaje ensamblador:
_start: mov r0, #3
mov r1, #1
.Lbucle: add r0, r1
add r1, #1
cmp r0, #12
blo .Lbucle
.Lstop: b .Lstop

Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le
corresponde al smbolo .Lbucle?
Trieu una resposta.

a. 0x8008


b. 0x8004


c. 0x8002


d. 0x8003

Correcta
Punts d'aquesta tramesa: 1/1.
Question 9
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v1: .byte 8

Cmo se puede cargar la direccin de memoria de v1 en el registro r0?
Trieu una resposta.

a. ldr r0, [v1]


b. ldr r0, v1


c. mov r0, v1


d. ldr r0, =v1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cundo hay que aadir el sufijo : a una etiqueta de salto?
Trieu una resposta.

a. cuando se referencia la etiqueta (por ejemplo, en una instruccin de salto)


b. siempre que dicha etiqueta aparezca en el programa


c. cuando la etiqueta es global


d. cuando se declara la etiqueta

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se puede alinear la memoria a hword?
Trieu una resposta.

a. ..align 4


b. .align 3


c. .align 1


d. .align 2

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


c. mov r0, #0 / .Ldo: / cmp r0, #10 / bhs .Lfindo / / b .Ldo / .Lfindo:


d. mov r0, #0 / .Ldo: / cmp r0, #10 / blo .Lfindo / / b .Ldo / .Lfindo:

Correcta
Punts d'aquesta tramesa: 1/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a = a << b;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r0, r1, lsl r0


b. mov r0, r1, lsl r1


c. mov r1, r0, lsl r1


d. mov r0, r0, lsl r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c *= a + b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. mul r2, r0, r1


b. add r0, r0, r1 / mul r2, r2, r0


c. mul r2, r1, r0, lsl #1


d. add r3, r0, r1 / mul r2, r2, r3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a*2 - b;, suponiendo
que las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. sub r2, r1, r0, lsl #1


b. sub r2, r0, lsl #1 / add r2, r1


c. mov r0, lsl #1 / sub r2, r1, r0


d. mov r0, lsl #1 / sub r2, r0, r1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[i*num_files + j] = 0; si suponemos que
los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j se
implementan en los registros r2 y r3, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3, lsl #2 / mov r4, #0 / str r4, [r0, r5]


b. mul r5, r2, r1 / add r5, r3 / mov r4, #0, lsl #2 / str r4, [r0, r5]


c. mul r5, r2, r1, lsl #2 / add r5, r3 / mov r4, #0 / str r4, [r0, r5]


d. mul r5, r2, r1 / add r5, r3 / mov r4, #0 / str r4, [r0, r5, lsl #2]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]



b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


c. cmp r0, r1 / bge .Lelse / mov r2, #a


d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a


Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]


b. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


c. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


d. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp

Correcta
Punts d'aquesta tramesa: 1/1.
Punts: 1
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r5, r4} y pop {r0, r1}?
Trieu una resposta.

a. r0 = 0xFFFFFFFE; r1 = 0x00FE37A1


b. r0 = 0x00FE37A1; r1 = 0xFFFFFFFE


c. r0 = 0xFFFFFFFE; r1 = 0x00000000


d. r0 = 0x00000000; r1 = 0x00000001

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de
controlar el proceso de ejecucin de las instrucciones de lenguaje mquina?
Trieu una resposta.

a. unidad de clculo de direcciones


b. registros


c. unidad de control


d. unidad aritmtico-lgica

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cul de las siguientes instrucciones sirve para grabar un registro de lenguaje mquina
en un word de memoria?
Trieu una resposta.

a. ldr


b. strb


c. str


d. ldrb

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
De los elementos que componen un procesador, cul de ellos controla el contenido
del bus de direcciones?
Trieu una resposta.

a. registros


b. unidad aritmtico-lgica


c. unidad de control


d. unidad de clculo de direcciones

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Qu tipo de instrucciones generan siempre un secuenciamiento explcito?
Trieu una resposta.

a. de salto condicional


b. de salto condicional o incondicional


c. de comparacin


d. de salto incondicional

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Suponiendo que r13 = 0x07DC y r14 = 0x84AC, Cul es el valor del r13 despus de
ejecutar la instruccin push {r0-r2, lr}?
Trieu una resposta.

a. r13 = 0x07CC


b. r13 = 0x84AC


c. r13 = 0x07DC


d. r13 = 0x07D9

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int c =
0x500;?
Trieu una resposta.

a. i: .hword 500


b. i: .hword 0x500


c. i: .word 500


d. i: .word 0x500

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se puede alinear la memoria a hword?
Trieu una resposta.

a. .align 1


b. ..align 4


c. .align 2


d. .align 3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
En un programa escrito en lenguaje mquina del ARMv4, con el conjunto propio de
instrucciones thumb (no arm), cmo son las direcciones asociadas a las etiquetas de
salto?
Trieu una resposta.

a. puede ser cualquier posicin de memoria de la seccin .text


b. mltiples de 4


c. mltiples de 2


d. mltiples de 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v3: .word 32

Cmo se puede cargar el contenido de memoria de v3 en el registro r0?
Trieu una resposta.

a. mov r0, =v1


b. ldr r0, =v1 / ldr r1, [r0]


c. ldr r1, =v1 / ldr r0, [r1]


d. ldr r0, =v1 / ldr r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cuntos bytes puede insertar el programa ensamblador como respuesta a una directiva
.align 1?
Trieu una resposta.

a. siempre 2


b. 0, 1 o 2


c. siempre 1


d. 0 o 1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a ^ b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. and r2, r0, r1


b. eor r2, r0, r1


c. or r2, r0, r1


d. orr r2, r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a >= 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / bne .Lfinif / / .Lfinif:


b. cmp r0, #0 / ble .Lfinif / / .Lfinif:


c. cmp r0, #0 / bge .Lfinif / / .Lfinif:


d. cmp r0, #0 / blt .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a & b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. orr r2, r0, r1


b. and r2, r0, r1


c. or r2, r0, r1


d. eor r2, r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a*2 - b;, suponiendo
que las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. mov r0, lsl #1 / sub r2, r0, r1


b. sub r2, r1, r0, lsl #1


c. mov r0, lsl #1 / sub r2, r1, r0


d. sub r2, r0, lsl #1 / add r2, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r2, =b / str r1, [r2]


b. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r2, =b / strb r1, [r2]


c. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r1, =b / strb r1, [r1]


d. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r1, =b / str r1, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[j][i]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]


b. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]


c. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]


d. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]

Punts: 1
Cuntos bits se reservan en una instruccin ARMv4 para codificar un operando
inmediato?
Trieu una resposta.

a. 12


b. 16


c. 32


d. 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
De los elementos que componen un procesador, cul de ellos maneja el bus de
control?
Trieu una resposta.

a. unidad de control


b. unidad de clculo de direcciones


c. registros


d. unidad aritmtico-lgica

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cul de las siguientes instrucciones es capaz de multiplicar el contenido de r0 por 5?
Trieu una resposta.

a. add r0, r0, lsl #2


b. add r0, r0, lsl #5


c. add r0, r0, lsl #4


d. add r0, r0, lsl #3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Dado el siguiente contenido de una porcin de la memoria:
0x10032 0xD2
0x10032 0x41
0x10033 0x7F
0x10034 0x00
0x10035 0x60
0x10036 0xAC
0x10036 0xE3

Cul es el word que se encuentra en la posicin 0x10034, con una ordenacin Big
Endian?
Trieu una resposta.

a. 0x0060AC


b. 0x0060ACE3


c. 0x0060


d. 0x00

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que los contenidos de r0 i r1 sean 1 i 4 respectivamente Cul es el
resultado de la instruccin sub r2, r1, r0, lsr #2?
Trieu una resposta.

a. r2 = 0


b. r2 = 4


c. r2 = 2


d. r2 = 3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x10034 0xCA
0x10035 0x00 r2 0x00004
0x10036 0x08 r3 0x10034
0x10037 0xFD r4 0x00001
0X10038 0x12
Cul es el resultado de la instruccin ldsb r0, [r3, #3]?
Trieu una resposta.

a. r0 = 0xFD


b. r0 = 0x00000008


c. r0 = 0xFFFFFFFD


d. r0 = 0xFFFFCA

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
En qu seccin se deben ubicar las variables globales no inicializadas?
Trieu una resposta.

a. .bss


b. .text


c. .data


d. .var

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v6: .byte 1, 2, 3, 4, 5,
6
.align 1
Cul ser la siguiente direccin de ensamblado si v6 se almacena en 0x10060?
Trieu una resposta.

a. 0x10067


b. 0x10068


c. 0x10070


d. 0x10066

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Cmo se especifica un valor octal en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el prefijo o


b. con el sufijo o'


c. escribiendo el nmero directamente


d. con el prefijo 0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
En lenguaje ensamblador GAS para ARMv4, cmo se especifican los valores
inmediatos de las instrucciones de lenguaje mquina?
Trieu una resposta.

a. entre parntesis


b. entre comillas


c. con el prefijo 0x


d. con el prefijo #

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se especifica un valor hexadecimal en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el sufijo H'


b. con el sufijo 0X


c. con el prefijo 0x


d. escribiendo el nmero directamente

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a != 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / beq .Lfinif / / .Lfinif:


b. cmp r0, #0 / bne .Lfinif / / .Lfinif:


c. cmp r0, #0 / bge .Lfinif / / .Lfinif:


d. cmp r0, #0 / ble .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < 10; i++) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lfor: / add r0, #1 / / cmp r0, #10 / blo .Lfor


b. mov r0, #0 / .Lfor: / add r0, #1 / cmp r0, #10 / / blo .Lfor


c. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / blo .Lfor


d. mov r0, #0 / .Lfor: / add r0, #1 / cmp r0, #10 / blo .Lfor /

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo short (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r4 / ldrh r6, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #1]


c. mul r5, r3, r2 / add r5, r4 / ldr r6, [r0, r5, lsl #2]


d. mul r5, r3, r1 / add r5, r4 / ldrh r6, [r0, r5, lsl #1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


c. mov r0, #0 / .Ldo: / cmp r0, #10 / blo .Lfindo / / b .Ldo / .Lfindo:


d. mov r0, #0 / .Ldo: / cmp r0, #10 / bhs .Lfindo / / b .Ldo / .Lfindo:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2] / bl func2


b. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / bl func2 / strb r1, [r2]


c. ldr r0, =a / bl func2 / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


d. bl func2 / ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp


b. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]


c. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


d. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. cmp r0, #10 / bge .Lelse / mov r1, #a


b. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]


c. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a


d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Heu entrat com VISO ARBONES IGNASI (Sortida)
2010-2011 FONAMENTS DE COMPUTADORS (172340
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #5
0x8004 mov r1, #2
0x8008 add r2, r0,
r1
0x800C cmp r2, #12
0x8010 bhi 0x801C
0x8014 mov r1, r1,
lsl #1
0x8018 b 0x8008
0x801C b 0x801C
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x801C (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto necesita 1 ciclo, una instruccin de salto con secuenciamiento explcito
necesita 3 ciclos, y una instruccin de salto con secuenciamiento implcito necesita 4
ciclos?
Trieu una resposta.

a. 31


b. 35


c. 27


d. 22

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cul de los siguientes operadores se emplea para desplazar el contenido de un
registro cierto nmero de bits a la derecha, suponiendo que el valor a desplazar es un
entero Ca2?
Trieu una resposta.

a. lsr


b. asr


c. ror


d. lsl

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cuntos bits del registro r0 se modifican con la instruccin ldrh r0, [r1, r2, lsl #2]?
Trieu una resposta.

a. 16


b. 8


c. 4


d. 32

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul de las siguientes instrucciones sirve para cargar un word de memoria en un
registro de lenguaje mquina?
Trieu una resposta.

a. str


b. strb


c. ldrb


d. ldr

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de realizar
clculos que requieren las instrucciones de lenguaje mquina?
Trieu una resposta.

a. unidad de control


b. unidad de clculo de direcciones


c. registros


d. unidad aritmtico-lgica

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cmo consigue el procesador efectuar un secuenciamiento explcito?
Trieu una resposta.

a. cargando la direccin del salto en el p


b. reseteando (poniendo a 0) el pc


c. sumando 1 al pc


d. sumando 4 al pc

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se especifica un valor binario en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el prefijo 0x


b. con el sufijo b'


c. escribiendo el nmero directamente


d. con el prefijo 0b

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se define la direccin de inicio de una rutina?
Trieu una resposta.

a. con una directiva .global


b. con una instruccin de llamada a rutina bl


c. con una directiva .routine


d. con una etiqueta de salto

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Cmo se traduce una directiva de ensamblador a lenguaje mquina?
Trieu una resposta.

a. como un dato en memoria


b. como una direccin de memoria


c. no tiene una traduccin directa


d. como una instruccin

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se consigue el retorno de una rutina con las instrucciones push de inicio i pop
de fin?
Trieu una resposta.

a. salvando y restaurando los registros que se modifican dentro de la rutina


b. salvando el registro lr y recuperando su contenido en el pc


c. salvando el contenido de los registros que contienen parmetros de la rutina


d. salvando el pc y recuperando su contenido en el registro lr

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cul tiene que ser siempre la ltima instruccin de una rutina?
Trieu una resposta.

a. push


b. func1:


c. pop


d. bl

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < j; i++) {...},
suponiendo que las variables i y j (de tipo int) se asignen a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r0, #0 / cmp r0, r1 / bge .Lfinfor / .Lfor: / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

b. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, r1 / bls .Lfor


c. mov r0, #0 / cmp r0, r1 / .Lfor: / bge .Lfinfor / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

d. mov r0, #0 / .Lfor: / cmp r0, r1 / bge .Lfinfor / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a == 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / bne .Lfinif / / .Lfinif:


b. cmp r0, #0 / ble .Lfinif / / .Lfinif:


c. cmp r0, #0 / bge .Lfinif / / .Lfinif:


d. cmp r0, #0 / beq .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a >= 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / ble .Lfinif / / .Lfinif:


b. cmp r0, #0 / bne .Lfinif / / .Lfinif:


c. cmp r0, #0 / blt .Lfinif / / .Lfinif:


d. cmp r0, #0 / bge .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if ((a > 0) || (b < a)) {...},
suponiendo que las variables a y b (de tipo int) estn asignadas a los registros r0 y
r1, respectivamente?
Trieu una resposta.

a. cmp r0, #0 / bgt .Lif / cmp r1, r0 / blt .Lif / b .Lfinif / .Lif: / / .Lfinif:


b. cmp r0, #0 / bgt .Lif / cmp r1, r0 / blt .Lfinif / b .Lfinif / .Lif: / / .Lfinif:


c. cmp r0, #0 / bgt .Lfinif / cmp r1, r0 / blt .Lfinif / / .Lfinif:


d. cmp r0, #0 / bgt .Lfinif / cmp r1, r0 / blt .Lif / b .Lfinif / .Lif: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. mov r0, [a] / ldr r1, &b / bl func1


b. ldr r0, [a] / ldr r1, &b / bl func1


c. mov r0, a / ldr r1, =b / bl func1


d. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1


b. ldr r0, =a / ldr r1, =b / ldr r1, [r1] / bl func1


c. ldr r0, a / ldr r1, =b / bl func1


d. ldr r0, =a / ldr r1, =b / ldr r1, [r0] / bl func1

Incorrecta
Punts d'aquesta tramesa: 0/1.
1
Punts: 1
Suponiendo que r13 = 0x07DC y r14 = 0x84AC, Cul es el valor del r13 despus de
ejecutar la instruccin push {r0-r2, lr}?
Trieu una resposta.

a. r13 = 0x07CC


b. r13 = 0x84AC


c. r13 = 0x07D9


d. r13 = 0x07DC

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar eor r2, r1, r0, asr
#1?
Trieu una resposta.

a. r2 = 9


b. r2 = 11


c. r2 = 10


d. r2 = 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cul es el resultado de la instruccin mull r5, r4, r2, r0?
Trieu una resposta.

a. r5 = r0 * r4 / r2


b. r5 = r0 * r2 * r4


c. r4:r5 = r2 * r0


d. r5:r4 = r2 * r0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul de las siguientes instrucciones es capaz de multiplicar el contenido de r0 por 5?
Trieu una resposta.

a. add r0, r0, lsl #2


b. add r0, r0, lsl #5


c. add r0, r0, lsl #3


d. add r0, r0, lsl #4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Qu tipo de instrucciones generan siempre un secuenciamiento explcito?
Trieu una resposta.

a. de comparacin


b. de salto incondicional


c. de salto condicional o incondicional


d. de salto condicional

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cul es el rango mximo de los nmeros naturales que puede manejar
intrnsecamente un procesador ARMv4?
Trieu una resposta.

a. de 0 a 16777215


b. de 0 a 255


c. de 0 a 4294967295


d. de 0 a 65535

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Dado el siguiente programa escrito en lenguaje ensamblador:
_start: mov r0, #3
mov r1, #1
.Lbucle: add r0, r1
add r1, #1
cmp r0, #12
blo .Lbucle
.Lstop: b .Lstop

Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le
corresponde al smbolo .Lbucle?
Trieu una resposta.

a. 0x8003


b. 0x8002


c. 0x8004


d. 0x8008

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int c =
0x500;?
Trieu una resposta.

a. i: .hword 500


b. i: .word 500


c. i: .word 0x500


d. i: .hword 0x500

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Cmo se guarda en el sistema de ficheros del ordenador un programa en lenguaje
mquina?
Trieu una resposta.

a. como un fichero de lenguaje mquina


b. como un fichero de cdigos binarios


c. como un fichero de lenguaje ensamblador


d. como un fichero de texto

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se puede alinear la memoria a word?
Trieu una resposta.

a. .align 2


b. .align 1


c. .align 3


d. .align 4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
En qu base se pueden expresar los nmeros negativos con el smbolo - en el
lenguaje ensamblador GAS?
Trieu una resposta.

a. slo en base 10


b. en cualquier base


c. en base 10 y en base 8 (octal)


d. en base 10 y en base 16 (hexadecimal)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile / .Lfinwhile:



b. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhi .Lfinwhile / / b .Lwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

d. mov r0, #0 / .Lwhile: / cmp r0, #10 / bls .Lfinwhile / / b .Lwhile / .Lfinwhile:


Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lwhile / / b .Lfinwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lwhile / / b .Lwhile / .Lfinwhile:



c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lfinwhile /
.Lfinwhile:

d. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[i] = 1;, suponiendo el vector
v es de tipo short, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. mov r2, #1 / strh r2, [r1, r0]


b. strs #1, [r1, r0]


c. mov r2, #1 / strh r2, [r1, r0, lsl #1]


d. strh #1, [r1, r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

a. mul r5, r3, r2 / add r5, r4 / ldr r6, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]


c. mul r5, r3, r1 / add r5, r1 / ldr r6, [r0, r5, lsl #2]


d. mul r5, r4, r1 / add r5, r3 / ldr r6, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a


b. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a


c. cmp r0, #10 / bge .Lelse / mov r1, #a


d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. cmp r0, r1 / bge .Lelse / mov r2, #a


b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]


Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[0] = temp; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / ldr r3, [r2] / str r3, [r0]


b. strb r3, [r0] @; r3 es temp


c. str r3, [r0] @; r3 es temp


d. ldr r2, =temp / ldr r3, [r2] / str r3, [r0, r1, lsl #2]

Incorrecta
Punts: 1
De los elementos que componen un procesador, cul de ellos controla el contenido
del bus de direcciones?
Trieu una resposta.

a. registros


b. unidad de control


c. unidad aritmtico-lgica


d. unidad de clculo de direcciones

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r0, r1} y pop {r4, r5}?
Trieu una resposta.

a. r0 = 0xFFFFFFFE; r1 = 0x00000000


b. r0 = 0x00FE37A1; r1 = 0xFFFFFFFE


c. r0 = 0x00000000; r1 = 0x00000001


d. r0 = 0xFFFFFFFE; r1 = 0x00FE37A1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Dado el siguiente fragmento de un programa escrito en lenguaje mquina:
0x80A4 bl 0x81FC
0x80A8 :
Qu valor se guardar en el registro lr (r14)?
Trieu una resposta.

a. 0x80A8


b. 0x81FF


c. 0x80A4


d. 0x81FC

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #5
0x8004 mov r1, #2
0x8008 mul r2, r0,
r1
0x800C add r1, #1
0x8010 cmp r2, #50
0x8014 bne 0x8008
0x8018 b 0x8018
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x8018 (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto y diferente de una multiplicacin necesita 1 ciclo, una instruccin de
multiplicacin necesita 2 ciclos, una instruccin de salto con secuenciamiento explcito
necesita 3 ciclos, y una instruccin de salto con secuenciamiento implcito necesita 4
ciclos?
Trieu una resposta.

a. 58


b. 75


c. 46


d. 66

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Cul es el significado del flag V?
Trieu una resposta.

a. la operacin anterior ha resultado igual a cero


b. la operacin anterior ha provocado desbordamiento


c. la operacin anterior ha resultado negativa


d. la operacin anterior ha provocado acarreo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
De los elementos que componen un procesador, cul de ellos est implementado
bsicamente como un autmata?
Trieu una resposta.

a. unidad aritmtico-lgica


b. registros


c. unidad de control


d. unidad de clculo de direcciones

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cul tiene que ser el nombre de la etiqueta de inicio de un programa escrito en
ensamblador GAS?
Trieu una resposta.

a. start:


b. _start:


c. inicio:


d. .Linicio:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v1: .byte 8

Cmo se puede cargar el contenido de memoria de v1 en el registro r0?
Trieu una resposta.

a. ldr r1, =v1 / ldrb r0, [r1]


b. ldrb r1, =v1 / ldrb r0, [r1]


c. ldrb r1, =v1 / ldr r0, [r1]


d. ldr r1, =v1 / ldr r0, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Por convenio, Cmo se tienen que nombrar las etiquetas de salto locales a una seccin
de cdigo escrito en ensamblador GAS?
Trieu una resposta.

a. empezando por un punto


b. empezando por .L


c. con la directiva .global


d. con la directiva .local

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
En lenguaje ensamblador Qu es lo que define un smbolo del programa como una
etiqueta de salto?
Trieu una resposta.

a. el prefijo .L


b. el sufijo :


c. que se utilice en instrucciones de salto condicional


d. que se escriba ms a la izquierda que el resto de instrucciones

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int matrix[][]
= {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}};?
Trieu una resposta.

a. matrix: .word {2, -5, 90, -12, 82, 0, -4, 850, -100}


b. matrix: .word {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}}


c. matrix: .word {2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}


d. matrix: .word 2, -5, 90, -12, 82, 0, -4, 850, -100

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < 10; i++) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / blo .Lfor


b. .Lfor: / mov r0, #0 / / add r0, #1 / cmp r0, #10 / bhs .Lfor


c. .Lfor: / mov r0, #0 / / add r0, #1 / cmp r0, #10 / blo .Lfor


d. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / bhs .Lfor

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a = a << b;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r0, r0, lsl r1


b. mov r1, r0, lsl r1


c. mov r0, r1, lsl r1


d. mov r0, r1, lsl r0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / bls .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhi .Ldo


c. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


d. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a ^ b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. eor r2, r0, r1


b. or r2, r0, r1


c. and r2, r0, r1


d. orr r2, r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r2, =b / str r1, [r2]


b. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r1, =b / str r1, [r1]


c. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r2, =b / strb r1, [r2]


d. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r1, =b / strb r1, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap


b. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap


c. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


d. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]


b. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]


c. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]


d. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Cul de los siguientes pares de instrucciones deja la pila en un estado inconsistente?
Trieu una resposta.

a. push {r4-r6, lr} / pop {r4-r6, pc}


b. push {r0, r1} / pop {r1, r0}


c. push {r4-r6, r8, r10} / pop {r4-r5, r8, r10}


d. push {r4-r6, r12} / pop {r4-r7}

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 2
Punts: 1
Cul es la instruccin para saltar cuando un nmero natural es menor o igual que otro?
Trieu una resposta.

a. bls


b. ble


c. blt


d. blo

Correcta
Punts d'aquesta tramesa: 1/1.
Question 3
Punts: 1
Cul de los siguientes operadores se emplea para desplazar el contenido de un
registro cierto nmero de bits a la izquierda?
Trieu una resposta.

a. ror


b. lsl


c. lsr


d. asr

Correcta
Punts d'aquesta tramesa: 1/1.
Question 4
Punts: 1
Cuntos bits del registro r0 se modifican con la instruccin ldrh r0, [r1, r2, lsl #2]?
Trieu una resposta.

a. 32


b. 8


c. 16


d. 4

Correcta
Punts d'aquesta tramesa: 1/1.
Question 5
Punts: 1
De los elementos que componen un procesador, cul de ellos est implementado
bsicamente como un autmata?
Trieu una resposta.

a. unidad de clculo de direcciones


b. registros


c. unidad de control


d. unidad aritmtico-lgica

Correcta
Punts d'aquesta tramesa: 1/1.
Question 6
Punts: 1
Cuntos bytes puede capturar de memoria simultneamente un procesador ARMv4
en un slo acceso?
Trieu una resposta.

a. 32


b. 4


c. 8


d. 1

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 7
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int matrix[][]
= {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}};?
Trieu una resposta.

a. matrix: .word {2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}


b. matrix: .word {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}}


c. matrix: .word 2, -5, 90, -12, 82, 0, -4, 850, -100


d. matrix: .word {2, -5, 90, -12, 82, 0, -4, 850, -100}

Correcta
Punts d'aquesta tramesa: 1/1.
Question 8
Punts: 1
Cul tiene que ser siempre la primera instruccin de una rutina?
Trieu una resposta.

a. func1:


b. bl


c. pop


d. push

Correcta
Punts d'aquesta tramesa: 1/1.
Question 9
Punts: 1
En qu seccin se deben ubicar las etiquetas de salto?
Trieu una resposta.

a. .label


b. .text


c. .data


d. .bss

Correcta
Punts d'aquesta tramesa: 1/1.
Question 10
Punts: 1
Cundo hay que aadir el sufijo : a una etiqueta de salto?
Trieu una resposta.

a. cuando se declara la etiqueta


b. cuando se referencia la etiqueta (por ejemplo, en una instruccin de salto)


c. cuando la etiqueta es global


d. siempre que dicha etiqueta aparezca en el programa

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando se ejecuta una instruccin del tipo ldr r1, =v1, dnde localiza el procesador
la direccin de memoria 0x10034 para cargarla en el registro r1?
Trieu una resposta.

a. en el registro r15 (pc)


b. en memoria, dentro de la seccin de instrucciones


c. en la pila


d. en memoria, dentro de la seccin de variables globales

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / bhi .Lelse / add r0, #1 / b .Lfinif: / .Lelse: / / .Lfinif:


b. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


c. cmp r0, #10 / bls .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


d. cmp r0, #10 / blo .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:

Correcta
Punts d'aquesta tramesa: 1/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[1] = i;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. strb #1, [r1, r0]


b. strb r0, [r1, #1]


c. mov r2, #1 / strb r2, [r1, r0]


d. strb r0, [r1]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a++;, suponiendo que el
valor de la variable a (de tipo int) est asignado al registro r0?
Trieu una resposta.

a. add r0, 1


b. add r0, #1


c. add #1, r0


d. add 1, r0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a ^ b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. eor r2, r0, r1


b. or r2, r0, r1


c. and r2, r0, r1


d. orr r2, r0, r1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1


b. ldr r0, a / ldr r1, =b / bl func1


c. ldr r0, =a / ldr r1, =b / ldr r1, [r0] / bl func1


d. ldr r0, =a / ldr r1, =b / ldr r1, [r1] / bl func1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


b. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp


c. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


d. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[i*num_files + j] = 0; si suponemos que
los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j se
implementan en los registros r2 y r3, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / mov r4, #0 / str r4, [r0, r5, lsl #2]


b. mul r5, r2, r1 / add r5, r3 / mov r4, #0, lsl #2 / str r4, [r0, r5]


c. mul r5, r2, r1, lsl #2 / add r5, r3 / mov r4, #0 / str r4, [r0, r5]


d. mul r5, r2, r1 / add r5, r3, lsl #2 / mov r4, #0 / str r4, [r0, r5]

Correcta
Punts d'aquesta tramesa: 1/1.
Punts: 1
De los elementos que componen un sistema programable, cul de ellos se encarga
de transferir informacin con el exterior?
Trieu una resposta.

a. buses


b. procesador


c. memoria


d. controladores de entrada/salida

Correcta
Punts d'aquesta tramesa: 1/1.
Question 2
Punts: 1
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r0, r1, r4, r5} y pop {r0, r4, r1, r5}?
Trieu una resposta.

a. r0 = 0x00FE37A1; r1 = 0x00000001


b. r0 = 0x00000000; r1 = 0x00000001


c. r0 = 0x00FE37A1; r1 = 0xFFFFFFFE


d. r0 = 0x00000000; r1 = 0x00FE37A1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 3
Punts: 1
Cul de las siguientes instrucciones efecta un salto incondicional?
Trieu una resposta.

a. bls


b. bl


c. cmp


d. beq

Correcta
Punts d'aquesta tramesa: 1/1.
Question 4
Punts: 1
Del banco de 16 registros de lenguaje mquina del procesador ARMv4, cuntos
tienen un propsito especfico?
Trieu una resposta.

a. 4


b. 1


c. 3


d. ninguno

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que r0 = 0xFBC8 0023 y r1 = 0x000A 3FF9 Cul de las siguientes
instrucciones saltar despus de ejecutar cmp r0, r1?
Trieu una resposta.

a. bhs


b. bgt


c. beq


d. bge

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x10034 0xCA
0x10035 0x00 r2 0x00004
0x10036 0x08 r3 0x10034
0x10037 0xFD r4 0x00001
0X10038 0x12
0X10039 0x7D
0X1003A 0xC3
0X1003B 0x46
0X1003C 0xE2
0X1003D 0x92
Cul es el resultado de la instruccin ldr r0, [r3, r4, lsl #2]?
Trieu una resposta.

a. r0 = 0x12FD0800


b. r0 = 0x46C37D12


c. r0 = 0xFD0800CA


d. r0 = 0x92E246C3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v3: .hword 0x0800
.align 2
Cul ser la siguiente direccin de ensamblado si v3 se almacena en 0x10040?
Trieu una resposta.

a. 0x10046


b. 0x10044


c. 0x10048


d. 0x10042

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se puede alinear la memoria a hword?
Trieu una resposta.

a. .align 1


b. ..align 4


c. .align 3


d. .align 2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Cmo se consigue el retorno de una rutina con las instrucciones push de inicio i pop
de fin?
Trieu una resposta.

a. salvando y restaurando los registros que se modifican dentro de la rutina


b. salvando el registro lr y recuperando su contenido en el pc


c. salvando el contenido de los registros que contienen parmetros de la rutina


d. salvando el pc y recuperando su contenido en el registro lr

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se define la direccin de inicio de una rutina?
Trieu una resposta.

a. con una etiqueta de salto


b. con una instruccin de llamada a rutina bl


c. con una directiva .global


d. con una directiva .routine

Correcta
Punts d'aquesta tramesa: 1/1.
Question 11
Punts: 1
En lenguaje ensamblador Qu es lo que define un smbolo del programa como una
etiqueta de salto?
Trieu una resposta.

a. el prefijo .L


b. el sufijo :


c. que se utilice en instrucciones de salto condicional


d. que se escriba ms a la izquierda que el resto de instrucciones

Correcta
Punts d'aquesta tramesa: 1/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[i] = 1;, suponiendo el vector
v es de tipo int, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. mov r2, #1 / str r2, [r1, r0, lsl #2]


b. mov r2, #1 / str r2, [r1, r0, lsl #1]


c. mov r2, #1 / str r2, [r1, r0]


d. mov r2, #1 / str r2, [r1, r0, lsl #4]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhi .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


c. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo


d. mov r0, #0 / .Ldo: / / cmp r0, #10 / bls .Ldo

Correcta
Punts d'aquesta tramesa: 1/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / / cmp r0, #10 / blo .Lwhile


d. mov r0, #0 / .Lwhile: / / cmp r0, #10 / bhs .Lwhile

Correcta
Punts d'aquesta tramesa: 1/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < j; i++) {...},
suponiendo que las variables i y j (de tipo int) se asignen a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r0, #0 / cmp r0, r1 / .Lfor: / bge .Lfinfor / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

b. mov r0, #0 / cmp r0, r1 / bge .Lfinfor / .Lfor: / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

c. mov r0, #0 / .Lfor: / cmp r0, r1 / bge .Lfinfor / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

d. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, r1 / bls .Lfor

Correcta
Punts d'aquesta tramesa: 1/1.
Question 16
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[0] = temp; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. str r3, [r0] @; r3 es temp


b. ldr r2, =temp / ldr r3, [r2] / str r3, [r0, r1, lsl #2]


c. ldr r2, =temp / ldr r3, [r2] / str r3, [r0]


d. strb r3, [r0] @; r3 es temp

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 17
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r1, =b / ldr r1, [r0] / bl func1


b. ldr r0, a / ldr r1, =b / bl func1


c. ldr r0, =a / ldr r1, =b / ldr r1, [r1] / bl func1


d. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Punts: 1
Cmo consigue el procesador efectuar un secuenciamiento explcito?
Trieu una resposta.

a. reseteando (poniendo a 0) el pc


b. sumando 1 al pc


c. cargando la direccin del salto en el p


d. sumando 4 al pc

Correcta
Punts d'aquesta tramesa: 1/1.
Question 2
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de la instruccin tst r1, r0?
Trieu una resposta.

a. Flag Z = 1


b. Flag Z = 0


c. r0 = 2


d. r1 = 2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Del banco de 16 registros de lenguaje mquina del procesador ARMv4, cuntos
tienen un propsito especfico?
Trieu una resposta.

a. 4


b. 1


c. 3


d. ninguno

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul es la instruccin para saltar cuando un nmero natural es mayor o igual que otro?
Trieu una resposta.

a. bge


b. bhs


c. bhi


d. bgt

Correcta
Punts d'aquesta tramesa: 1/1.
Question 5
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de
controlar el proceso de ejecucin de las instrucciones de lenguaje mquina?
Trieu una resposta.

a. unidad de clculo de direcciones


b. registros


c. unidad aritmtico-lgica


d. unidad de control

Correcta
Punts d'aquesta tramesa: 1/1.
Question 6
Punts: 1
Qu tipo de informacin pueden contener los registros de lenguaje mquina del
ARMv4?
Trieu una resposta.

a. nicamente datos


b. datos y direcciones


c. instrucciones y direcciones


d. datos e instrucciones

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando se codifica una instruccin del tipo ldr r1, =v1, qu tipo de direccionamiento
a memoria se utiliza para cargar la direccin de la variable?
Trieu una resposta.

a. registro indirecto


b. inmediato


c. registro desplazado


d. relativo a pc

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v4: .space 10
.align 2
Cul ser la siguiente direccin de ensamblado si v4 se almacena en 0x10050?
Trieu una resposta.

a. 0x1005A


b. 0x10052


c. 0x1005C


d. 0x10050

Correcta
Punts d'aquesta tramesa: 1/1.
Question 9
Punts: 1
En qu seccin se deben ubicar las instrucciones de lenguaje mquina?
Trieu una resposta.

a. .bss


b. .text


c. .var


d. .data

Correcta
Punts d'aquesta tramesa: 1/1.
Question 10
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C short vct[] = {
0, -1, 2, -3, 4000};?
Trieu una resposta.

a. vct: .hword ( 0, -1, 2, -3, 4000)


b. vct: .hword { 0, -1, 2, -3, 4000}


c. vct: .hword [ 0, -1, 2, -3, 4000]


d. vct: .hword 0, -1, 2, -3, 4000

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v1: .byte 8

Cmo se puede cargar el contenido de memoria de v1 en el registro r0?
Trieu una resposta.

a. ldr r1, =v1 / ldrb r0, [r1]


b. ldrb r1, =v1 / ldr r0, [r1]


c. ldrb r1, =v1 / ldrb r0, [r1]


d. ldr r1, =v1 / ldr r0, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[1] = i;, suponiendo el vector
v es de tipo short, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. strs r0, [r1, #1]


b. strh r0, [r1, #2]


c. strh r0, [r1, #4]


d. strb r0, [r1, #1]

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / cmp r0, #10 / blo .Lfindo / / b .Ldo / .Lfindo:


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


c. mov r0, #0 / .Ldo: / cmp r0, #10 / bhs .Lfindo / / b .Ldo / .Lfindo:


d. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo

Correcta
Punts d'aquesta tramesa: 1/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a & b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. and r2, r0, r1


b. orr r2, r0, r1


c. eor r2, r0, r1


d. or r2, r0, r1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. .Lwhile: / mov r0, #0 / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

c. mov r0, #0 / cmp r0, #10 / .Lwhile: / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

d. mov r0, #0 / cmp r0, #10 / bhs .Lfinwhile / .Lwhile: / / b .Lwhile /
.Lfinwhile:
Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, [a] / ldr r1, &b / bl func1


b. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1


c. mov r0, [a] / ldr r1, &b / bl func1


d. mov r0, a / ldr r1, =b / bl func1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. cmp r0, r1 / bge .Lelse / mov r2, #a


b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]


Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]


b. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


c. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


d. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Punts: 1
Cmo se llenan los bits altos del registro r0 con una instruccin ldrh r0, [r1, #2]?
Trieu una resposta.

a. los 16 bits altos a 0


b. los 24 bits altos a 0


c. los 16 bits altos al valor del signo del nmero que se est cargando


d. los 16 bits altos a 1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 2
Punts: 1
Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la
instruccin mov r1, r0, lsr #4?
Trieu una resposta.

a. 0x084F A012


b. 0x384F A012


c. 0xF84F A012


d. 0x4FA0 1230

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Suponiendo que los contenidos de r0 i r1 sean 1 i 4 respectivamente Cul es el
resultado de la instruccin sub r2, r1, r0, lsr #2?
Trieu una resposta.

a. r2 = 3


b. r2 = 0


c. r2 = 2


d. r2 = 4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de
almacenar temporalmente valores para realizar clculos?
Trieu una resposta.

a. unidad de control


b. registros


c. unidad aritmtico-lgica


d. unidad de clculo de direcciones

Correcta
Punts d'aquesta tramesa: 1/1.
Question 5
Punts: 1
Suponiendo que un programa ha ejecutado 500 instrucciones de lenguaje mquina, de
las cuales 400 han gastado 1 ciclo mquina, 80 han gastado 3 ciclos mquina y 20
han gastado 4 ciclos mquina, cul es el tiempo de ejecucin si el procesador trabaja
a 1 GHz de frecuencia?
Trieu una resposta.

a. 720 hercios


b. 720 milisegundos


c. 720 nanosegundos


d. 720 microsegundos

Correcta
Punts d'aquesta tramesa: 1/1.
Question 6
Punts: 1
Cul es el significado del flag C?
Trieu una resposta.

a. la operacin anterior ha provocado acarreo


b. la operacin anterior ha resultado negativa


c. la operacin anterior ha resultado igual a cero


d. la operacin anterior ha provocado desbordamiento

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Qu registro tiene que recuperar de la pila la direccin de retorno en la ltima
instruccin pop de una rutina?
Trieu una resposta.

a. el registro 14 (lr)


b. el registro 0


c. el registro 15 (pc)


d. el registro 13 (sp)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Dado el siguiente programa escrito en lenguaje ensamblador:
_start: mov r0, #3
mov r1, #1
.Lbucle: add r0, r1
add r1, #1
cmp r0, #12
blo .Lbucle
.Lstop: b .Lstop

Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le
corresponde al smbolo .Lbucle?
Trieu una resposta.

a. 0x8004


b. 0x8008


c. 0x8003


d. 0x8002

Correcta
Punts d'aquesta tramesa: 1/1.
Question 9
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C short vct[] = {
0, -1, 2, -3, 4000};?
Trieu una resposta.

a. vct: .hword 0, -1, 2, -3, 4000


b. vct: .hword ( 0, -1, 2, -3, 4000)


c. vct: .hword { 0, -1, 2, -3, 4000}


d. vct: .hword [ 0, -1, 2, -3, 4000]

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 10
Punts: 1
En qu base se pueden expresar los nmeros negativos con el smbolo - en el
lenguaje ensamblador GAS?
Trieu una resposta.

a. en base 10 y en base 16 (hexadecimal)


b. en base 10 y en base 8 (octal)


c. en cualquier base


d. slo en base 10

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que tenemos el siguiente trozo de programa en lenguaje mquina:
0x8000 ldr r1, [pc, #16]
0x8004 ldr r1, [r0]
0x8008 ldr r1, [r0, r2]
0x800C ldr r1, [r0, r2, lsl
#3]
0x8010 b 0x8010
0x8014 (0x0001 0034)

qu instruccin corresponde a una instruccin del tipo ldr r1, =v1?
Trieu una resposta.

a. ldr r1, [r0, r2]


b. ldr r1, [r0, r2, lsl #3]


c. ldr r1, [pc, #16]


d. ldr r1, [r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lwhile / / b .Lfinwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lfinwhile /
.Lfinwhile:

d. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lwhile / / b .Lwhile / .Lfinwhile:


Correcta
Punts d'aquesta tramesa: 1/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / bls .Lfinwhile / / b .Lwhile / .Lfinwhile:



c. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile / .Lfinwhile:



d. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhi .Lfinwhile / / b .Lwhile /
.Lfinwhile:
Correcta
Punts d'aquesta tramesa: 1/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if ((a > 0) && (b < a)) {...},
suponiendo que las variables a y b (de tipo int) estn asignadas a los registros r0 y
r1, respectivamente?
Trieu una resposta.

a. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:


b. cmp r0, #0 / ble .Lif / cmp r1, r0 / bge .Lfinif / b .Lfinif / .Lif: / / .Lfinif:


c. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lif / b .Lfinif / .Lif: / / .Lfinif:


d. cmp r0, #0 / ble .Lif / cmp r1, r0 / bge .Lif / b .Lfinif / .Lif: / / .Lfinif:

Correcta
Punts d'aquesta tramesa: 1/1.
Question 15
Punts: 1
Suponiendo que se han declarado las constantes Base (dir. base), NC (nm. columnas),
NF (nm. filas) y T (tamao elementos), cul es la frmula para calcular la direccin
de memoria de un elemento (i, j) de una matriz almacenada por filas?
Trieu una resposta.

a. dir(i, j) = Base + (j * NC + i) * T


b. dir(i, j) = Base + (i * NC + j) * T


c. dir(i, j) = Base + (j * NF + i) * T


d. dir(i, j) = Base + (i * NF + j) * T

Correcta
Punts d'aquesta tramesa: 1/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



c. cmp r0, r1 / bge .Lelse / mov r2, #a


d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]


Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, [a] / ldr r1, &b / bl func1


b. mov r0, a / ldr r1, =b / bl func1


c. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1


d. mov r0, [a] / ldr r1, &b / bl func1

Correcta
Punts d'aquesta tramesa: 1/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]


b. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]


c. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]


d. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]

Correcta
Punts d'aquesta tramesa: 1/1.
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #5
0x8004 mov r1, #2
0x8008 mul r2, r0,
r1
0x800C add r1, #1
0x8010 cmp r2, #50
0x8014 bne 0x8008
0x8018 b 0x8018
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x8018 (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto y diferente de una multiplicacin necesita 1 ciclo, una instruccin de
multiplicacin necesita 2 ciclos, una instruccin de salto con secuenciamiento explcito
necesita 3 ciclos, y una instruccin de salto con secuenciamiento implcito necesita 4
ciclos?
Trieu una resposta.

a. 58


b. 66


c. 46


d. 75

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cul de las siguientes instrucciones sirve para cargar un word de memoria en un
registro de lenguaje mquina?
Trieu una resposta.

a. ldr


b. ldrb


c. strb


d. str

Correcta
Punts d'aquesta tramesa: 1/1.
Question 3
Punts: 1
Dados los dos campos IR e IN que definen un operando inmediato en una instruccin
de lenguaje mquina de ARMv4, Cul es la operacin que realiza el procesador para
obtener el valor inmediato correspondiente?
Trieu una resposta.

a. IN rotado IR*2 bits a la derecha


b. IN rotado IR*2 bits a la izquierda


c. IN desplazado IR bits a la izquierda


d. IN desplazado IR bits a la derecha

Correcta
Punts d'aquesta tramesa: 1/1.
Question 4
Punts: 1
Suponiendo que r0 contiene un nmero natural Qu instruccin podemos utilizar para
dividir el contenido de r0 por 16?
Trieu una resposta.

a. mov r0, r0, lsl #16


b. mov r0, r0, lsr #4


c. mov r0, r0, lsl #4


d. mov r0, r0, lsr #16

Correcta
Punts d'aquesta tramesa: 1/1.
Question 5
Punts: 1
Cul de las siguientes instrucciones sirve para grabar el contenido de un registro de
lenguaje mquina en un half-word de memoria?
Trieu una resposta.

a. str


b. strh


c. ldrh


d. ldr

Correcta
Punts d'aquesta tramesa: 1/1.
Question 6
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #5
0x8004 mov r1, #2
0x8008 cmp r0, r1
0x800C bls 0x8018
0x8010 add r1, #1
0x8014 b 0x8008
0x8018 b 0x8018
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x8018 (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto necesita 1 ciclo, una instruccin de salto con secuenciamiento explcito
necesita 3 ciclos, y una instruccin de salto con secuenciamiento implcito necesita 4
ciclos?
Trieu una resposta.

a. 33


b. 27


c. 26


d. 29

Correcta
Punts d'aquesta tramesa: 1/1.
Question 7
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v3: .hword 0x0800
.align 2
Cul ser la siguiente direccin de ensamblado si v3 se almacena en 0x10040?
Trieu una resposta.

a. 0x10042


b. 0x10048


c. 0x10046


d. 0x10044

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando se codifica una instruccin del tipo ldr r1, =v1, cuntos bits de memoria se
utilizan para guardar dicha posicin de memoria?
Trieu una resposta.

a. 16


b. 20


c. 32


d. 12

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Qu directiva se utiliza para reservar espacio de memoria para una variable no
inicializada?
Trieu una resposta.

a. .space n (n = nmero de bytes a reservar)


b. .word n (n = nmero de words a reservar)


c. .bss n (n = nmero de words a reservar)


d. .byte n (n = nmero de bytes a reservar)

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Question 10
Punts: 1
A qu nivel est definido el cdigo hexadecimal de una instruccin de lenguaje
mquina como 0x1AFF FFFC?
Trieu una resposta.

a. a nivel de cdigo mquina


b. a alto nivel


c. a nivel de lenguaje ensamblador


d. a nivel de lenguaje mquina

Correcta
Punts d'aquesta tramesa: 1/1.
Question 11
Punts: 1
Qu registro tiene que guardarse a la pila en la primera instruccin push de una rutina
para permitir el retorno correctamente?
Trieu una resposta.

a. el registro 15 (pc)


b. el registro 14 (lr)


c. el registro 13 (sp)


d. el registro 0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a++;, suponiendo que el
valor de la variable a (de tipo int) est asignado al registro r0?
Trieu una resposta.

a. add r0, 1


b. add r0, #1


c. add 1, r0


d. add #1, r0

Correcta
Punts d'aquesta tramesa: 1/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c *= a + b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. mul r2, r0, r1


b. add r3, r0, r1 / mul r2, r2, r3


c. add r0, r0, r1 / mul r2, r2, r0


d. mul r2, r1, r0, lsl #1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C b += a*2;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. add r1, r0, lsr #1


b. add r1, r0, lsl #1


c. add r1, r0, lsr #2


d. add r1, r0, lsl #2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a & 0x10) {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #0x10 / bne .Lfinif / / .Lfinif:


b. tst r0, #0x10 / bne .Lfinif / / .Lfinif:


c. tst r0, #0x10 / beq .Lfinif / / .Lfinif:


d. cmp r0, #0x10 / beq .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]


c. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]


d. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]

Correcta
Punts d'aquesta tramesa: 1/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[0] = temp; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / ldr r3, [r2] / str r3, [r0, r1, lsl #2]


b. ldr r2, =temp / ldr r3, [r2] / str r3, [r0]


c. str r3, [r0] @; r3 es temp


d. strb r3, [r0] @; r3 es temp

Correcta
Punts d'aquesta tramesa: 1/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap


b. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap


c. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


d. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap

Incorrecta
Punts d'aquesta tramesa: -0.33/1.
Punts: 1
Cul es la instruccin para saltar cuando un nmero natural es menor estricto que otro?
Trieu una resposta.

a. bls


b. ble


c. blt


d. blo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cul de las siguientes instrucciones sirve para grabar el contenido de un registro de
lenguaje mquina en un byte de memoria?
Trieu una resposta.

a. ldr


b. ldrh


c. strb


d. ldrb

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de
controlar el proceso de ejecucin de las instrucciones de lenguaje mquina?
Trieu una resposta.

a. registros


b. unidad de control


c. unidad aritmtico-lgica


d. unidad de clculo de direcciones

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Dado el siguiente fragmento de un programa escrito en lenguaje mquina:
0x80A4 bl 0x81FC
0x80A8 :
Qu valor se guardar en el registro lr (r14)?
Trieu una resposta.

a. 0x81FC


b. 0x81FF


c. 0x80A4


d. 0x80A8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x1003F 0x8B
0x10040 0x7D r2 0x00004
0x10041 0xB5 r3 0x10040
0x10042 0xF0 r4 0x00001
0X10043 0x23
0X10044 0x05
Cul es el resultado de la instruccin ldsh r0, [r3, r2, ror r4]?
Trieu una resposta.

a. r0 = 0x000023F0


b. r0 = 0x23F0


c. r0 = 0xFFFF23F0


d. r0 = 0xFFFFB57D

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cul de los siguientes nmeros no se puede codificar directamente como un
operando inmediato de una instruccin ARM?
Trieu una resposta.

a. 128


b. 1024


c. 256


d. 257

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Qu directiva sirve para definir una variable global inicializada de tipo int?
Trieu una resposta.

a. .word


b. .byte


c. .int


d. .hword

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v5: .byte 1, 2, 3, 4, 5
.align 1
Cul ser la siguiente direccin de ensamblado si v5 se almacena en 0x10060?
Trieu una resposta.

a. 0x10070


b. 0x10065


c. 0x1006A


d. 0x10066

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v6: .byte 1, 2, 3, 4, 5,
6
.align 1
Cul ser la siguiente direccin de ensamblado si v6 se almacena en 0x10060?
Trieu una resposta.

a. 0x10067


b. 0x10068


c. 0x10070


d. 0x10066

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
En lenguaje ensamblador GAS para ARMv4, cmo se especifican los valores
inmediatos de las instrucciones de lenguaje mquina?
Trieu una resposta.

a. entre comillas


b. con el prefijo #


c. con el prefijo 0x


d. entre parntesis

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int matrix[][]
= {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}};?
Trieu una resposta.

a. matrix: .word {2, -5, 90, -12, 82, 0, -4, 850, -100}


b. matrix: .word {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}}


c. matrix: .word 2, -5, 90, -12, 82, 0, -4, 850, -100


d. matrix: .word {2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Suponiendo que se han declarado las constantes Base (dir. base), NC (nm. columnas),
NF (nm. filas) y T (tamao elementos), cul es la frmula para calcular la direccin
de memoria de un elemento (i, j) de una matriz almacenada por filas?
Trieu una resposta.

a. dir(i, j) = Base + (i * NF + j) * T


b. dir(i, j) = Base + (i * NC + j) * T


c. dir(i, j) = Base + (i * NC + j)


d. dir(i, j) = Base + (i * NF + j)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a & b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. eor r2, r0, r1


b. orr r2, r0, r1


c. or r2, r0, r1


d. and r2, r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


b. cmp r0, #10 / bhi .Lelse / add r0, #1 / b .Lfinif: / .Lelse: / / .Lfinif:


c. cmp r0, #10 / blo .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


d. cmp r0, #10 / bls .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a & 0x10) {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #0x10 / beq .Lfinif / / .Lfinif:


b. tst r0, #0x10 / bne .Lfinif / / .Lfinif:


c. cmp r0, #0x10 / bne .Lfinif / / .Lfinif:


d. tst r0, #0x10 / beq .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]



d. cmp r0, r1 / bge .Lelse / mov r2, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]


c. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]


d. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer
parmetro se pasa por el registro r0, el segundo parmetro por r1, y las variables locales
i y temp se ubican en los registros r2 y r3, respectivamente?

Trieu una resposta.

a. ldr r4, [r0, r2, lsl #2] / sub r3, r2, #1 / str r4, [r0, r3, lsl #2]


b. ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


c. ldr r4, [r0, r2, lsl #2] / sub r2, #1 / str r4, [r0, r2, lsl #2]


d. ldr r4, [r0, r3, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]

Punts: 1
Cuntas posiciones de memoria puede direccionar un sistema programable basado
en ARMv4?
Trieu una resposta.

a. 2 elevado a 16


b. 2 elevado a 32


c. 2 elevado a 64


d. 2 elevado a 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de las posiciones de memoria 0x07E8 y 0X07EC despus de
ejecutar una instruccin push {r0, r1, r4-r5}?
Trieu una resposta.

a. M[0x07E8] = 0x00000000; M[0x07EC] = 0x00000001


b. M[0x07E8] = 0x00FE37A1; M[0x07EC] = 0xFFFFFFFE


c. M[0x07E8] = 0xFFFFFFFE; M[0x07EC] = 0x00FE37A1


d. M[0x07E8] = 0x00000000; M[0x07EC] = 0xFFFFFFFE

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cul es el secuenciamiento implcito de un programa en lenguaje mquina?
Trieu una resposta.

a. el que ejecuta la instruccin siguiente en memoria a la instruccin actual


b. el que ejecuta la instruccin anterior en el programa a la instruccin actual


c. el que ejecuta la instruccin siguiente en el programa a la instruccin actual


d. el que ejecuta la instruccin anterior en memoria a la instruccin actual

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul es la instruccin para saltar cuando un nmero natural es menor estricto que otro?
Trieu una resposta.

a. ble


b. blo


c. bls


d. blt

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Qu registro del procesador se encarga de memorizar la direccin de la instruccin
de lenguaje mquina a ejecutar?
Trieu una resposta.

a. el r15 (pc)


b. el r0


c. el r14 (lr)


d. el r13 (sp)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cul es el nmero de bytes mnimo que puede capturar de memoria un procesador
ARMv4 en un slo acceso?
Trieu una resposta.

a. 1


b. 8


c. 2


d. 4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Qu directiva sirve para definir una variable global inicializada de tipo int?
Trieu una resposta.

a. .word


b. .hword


c. .int


d. .byte

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C unsigned char
c = C;?
Trieu una resposta.

a. c .byte C


b. c: .unsigned char C


c. c: .byte C


d. c: .unsigned byte C

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v3: .word 32

Cmo se puede grabar el contenido del registro r0 en la posicin de memoria de v3?
Trieu una resposta.

a. ldr r1, =v1 / str r0, [r1]


b. str r1, =v1 / str r0, [r1]


c. ldr r1, =v1 / ldr r0, [r1]


d. str r1, =v1 / ldr r0, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se traduce una variable global inicializada definida en ensamblador a lenguaje
mquina?
Trieu una resposta.

a. como un dato en memoria


b. como una direccin de memoria


c. como una instruccin


d. como una direccin de memoria ms un dato en memoria

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cul de las siguientes lneas de cdigo no es una directiva de ensamblador?
Trieu una resposta.

a. .align 2


b. .arm


c. .global _start


d. _start:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / bls .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


c. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhi .Ldo


d. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if ((a > 0) && (b < a)) {...},
suponiendo que las variables a y b (de tipo int) estn asignadas a los registros r0 y
r1, respectivamente?
Trieu una resposta.

a. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:


b. cmp r0, #0 / bge .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:


c. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / ble .Lfinif / / .Lfinif:


d. cmp r0, #0 / bge .Lfinif / cmp r1, r0 / ble .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a >= 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / bne .Lfinif / / .Lfinif:


b. cmp r0, #0 / blt .Lfinif / / .Lfinif:


c. cmp r0, #0 / bge .Lfinif / / .Lfinif:


d. cmp r0, #0 / ble .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a <= 10) {...}, suponiendo
que el valor de la variable a (de tipo unsigned int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #10 / bhs .Lfinif / / .Lfinif:


b. cmp r0, #10 / bge .Lfinif / / .Lfinif:


c. cmp r0, #10 / bhi .Lfinif / / .Lfinif:


d. cmp r0, #10 / bgt .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. bl func2 / ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


b. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2] / bl func2


c. ldr r0, =a / bl func2 / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


d. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / bl func2 / strb r1, [r2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1


b. ldr r0, a / ldr r1, =b / bl func1


c. ldr r0, =a / ldr r1, =b / ldr r1, [r1] / bl func1


d. ldr r0, =a / ldr r1, =b / ldr r1, [r0] / bl func1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[j][i]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
En un desplazamiento de un registro a la derecha con el operardor asr, qu valor se
introduce por el bit de ms peso del registro?
Trieu una resposta.

a. siempre 1


b. 0 si el nmero es positivo, 1 si es negativo


c. 1 si el nmero es positivo, 0 si es negativo


d. siempre 0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cuntos bytes puede capturar de memoria simultneamente un procesador ARMv4
en un slo acceso?
Trieu una resposta.

a. 1


b. 32


c. 4


d. 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r5, r4} y pop {r0, r1}?
Trieu una resposta.

a. r0 = 0xFFFFFFFE; r1 = 0x00FE37A1


b. r0 = 0x00FE37A1; r1 = 0xFFFFFFFE


c. r0 = 0xFFFFFFFE; r1 = 0x00000000


d. r0 = 0x00000000; r1 = 0x00000001

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Suponiendo que r0 = 0xFBC8 0023 y r1 = 0x000A 3FF9 Cul de las siguientes
instrucciones saltar despus de ejecutar cmp r0, r1?
Trieu una resposta.

a. beq


b. bge


c. bhs


d. bgt

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que r0 = 0x0000 0023 y r1 = 0x800A 3FF9 Cul de las siguientes
instrucciones saltar despus de ejecutar cmp r0, r1?
Trieu una resposta.

a. bhi


b. bgt


c. beq


d. bhs

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cul de las siguientes instrucciones sirve para grabar un registro de lenguaje mquina
en un word de memoria?
Trieu una resposta.

a. str


b. ldr


c. ldrb


d. strb

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v1: .byte 8

Cmo se puede cargar la direccin de memoria de v1 en el registro r0?
Trieu una resposta.

a. ldr r0, [v1]


b. ldr r0, v1


c. ldr r0, =v1


d. mov r0, v1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C short vct[] = {
0, -1, 2, -3, 4000};?
Trieu una resposta.

a. vct: .hword [ 0, -1, 2, -3, 4000]


b. vct: .hword { 0, -1, 2, -3, 4000}


c. vct: .hword ( 0, -1, 2, -3, 4000)


d. vct: .hword 0, -1, 2, -3, 4000

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
En qu seccin se deben ubicar las etiquetas de salto?
Trieu una resposta.

a. .data


b. .label


c. .bss


d. .text

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se especifica un valor decimal en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el sufijo d'


b. con el prefijo 0d


c. con el prefijo 0


d. escribiendo el nmero directamente

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se consigue el retorno de una rutina con las instrucciones push de inicio i pop
de fin?
Trieu una resposta.

a. salvando el contenido de los registros que contienen parmetros de la rutina


b. salvando el pc y recuperando su contenido en el registro lr


c. salvando y restaurando los registros que se modifican dentro de la rutina


d. salvando el registro lr y recuperando su contenido en el pc

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[1] = i;, suponiendo el vector
v es de tipo short, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. strb r0, [r1, #1]


b. strh r0, [r1, #4]


c. strs r0, [r1, #1]


d. strh r0, [r1, #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[i] = 1;, suponiendo el vector
v es de tipo int, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. mov r2, #1 / str r2, [r1, r0]


b. mov r2, #1 / str r2, [r1, r0, lsl #2]


c. mov r2, #1 / str r2, [r1, r0, lsl #4]


d. mov r2, #1 / str r2, [r1, r0, lsl #1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[1] = i;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. strb r0, [r1]


b. mov r2, #1 / strb r2, [r1, r0]


c. strb #1, [r1, r0]


d. strb r0, [r1, #1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #4]


b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5]


c. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #1]


d. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r1, =b / ldr r1, [r0] / bl func1


b. ldr r0, =a / ldr r1, =b / ldr r1, [r1] / bl func1


c. ldr r0, a / ldr r1, =b / bl func1


d. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r2, =b / str r1, [r2]


b. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r2, =b / strb r1, [r2]


c. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r1, =b / str r1, [r1]


d. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r1, =b / strb r1, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer
parmetro se pasa por el registro r0, el segundo parmetro por r1, y las variables locales
i y temp se ubican en los registros r2 y r3, respectivamente?

Trieu una resposta.

a. ldr r4, [r0, r2, lsl #2] / sub r2, #1 / str r4, [r0, r2, lsl #2]


b. ldr r4, [r0, r3, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


c. ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


d. ldr r4, [r0, r2, lsl #2] / sub r3, r2, #1 / str r4, [r0, r3, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Cul es el significado del flag N?
Trieu una resposta.

a. la operacin anterior ha provocado desbordamiento


b. la operacin anterior ha resultado negativa


c. la operacin anterior ha resultado igual a cero


d. la operacin anterior ha provocado acarreo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x1003F 0x8B
0x10040 0x7D r2 0x00004
0x10041 0xB5 r3 0x10040
0x10042 0xF0 r4 0x00001
0X10043 0x23
0X10044 0x05
Cul es el resultado de la instruccin ldsh r0, [r3, r2, ror r4]?
Trieu una resposta.

a. r0 = 0xFFFF23F0


b. r0 = 0x000023F0


c. r0 = 0x23F0


d. r0 = 0xFFFFB57D

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cuntos bits se reservan en una instruccin ARMv4 para codificar un operando
inmediato?
Trieu una resposta.

a. 32


b. 8


c. 12


d. 16

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de r4 y r5 despus de ejecutar una instruccin pop {r0, r4, r1,
r5}?
Trieu una resposta.

a. r4 = 0xF0B57D8B; r5 = 0x000127AC


b. r4 = 0xC37D12FD; r5 = 0x509AE246


c. r4 = 0x0800CACB; r5 = 0x509AE246


d. 0x35CD0523; r5 = 0x000127AC

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Cuntos registros de lenguaje mquina del ARMv4 se pueden usar como operandos
de las instrucciones aritmticas?
Trieu una resposta.

a. 16


b. 18


c. 13


d. 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cuntos bits contiene cada registro del ARMv4?
Trieu una resposta.

a. 8


b. 32


c. 4


d. 16

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
En qu seccin se deben ubicar las etiquetas de salto?
Trieu una resposta.

a. .text


b. .data


c. .label


d. .bss

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
A qu nivel est definido el cdigo hexadecimal de una instruccin de lenguaje
mquina como 0x1AFF FFFC?
Trieu una resposta.

a. a nivel de lenguaje ensamblador


b. a nivel de cdigo mquina


c. a alto nivel


d. a nivel de lenguaje mquina

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Qu son los smbolos del lenguaje ensamblador?
Trieu una resposta.

a. los cdigos binarios de las instrucciones de lenguaje mquina


b. los valores inmediatos


c. los comentarios


d. los nombres de las variables y las etiquetas de salto

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Qu directiva sirve para definir una variable global inicializada de 16 bits?
Trieu una resposta.

a. .space 16


b. .hword


c. .byte


d. .word

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Qu directiva sirve para definir una variable global inicializada de 8 bits?
Trieu una resposta.

a. .byte


b. .hword


c. .word


d. .space 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < 10; i++) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. .Lfor: / mov r0, #0 / / add r0, #1 / cmp r0, #10 / blo .Lfor


b. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / bhs .Lfor


c. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, #10 / blo .Lfor


d. .Lfor: / mov r0, #0 / / add r0, #1 / cmp r0, #10 / bhs .Lfor

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a = a << b;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r0, r1, lsl r1


b. mov r0, r0, lsl r1


c. mov r0, r1, lsl r0


d. mov r1, r0, lsl r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


b. mov r0, #0 / .Ldo: / cmp r0, #10 / bhs .Lfindo / / b .Ldo / .Lfindo:


c. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo


d. mov r0, #0 / .Ldo: / cmp r0, #10 / blo .Lfindo / / b .Ldo / .Lfindo:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / bge .Lfinif / / .Lfinif:


b. cmp r0, #0 / bgt .Lfinif / / .Lfinif:


c. cmp r0, #0 / bne .Lfinif / / .Lfinif:


d. cmp r0, #0 / ble .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


b. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap


c. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap


d. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[i*num_files + j] = 0; si suponemos que
los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j se
implementan en los registros r2 y r3, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / mov r4, #0, lsl #2 / str r4, [r0, r5]


b. mul r5, r2, r1, lsl #2 / add r5, r3 / mov r4, #0 / str r4, [r0, r5]


c. mul r5, r2, r1 / add r5, r3 / mov r4, #0 / str r4, [r0, r5, lsl #2]


d. mul r5, r2, r1 / add r5, r3, lsl #2 / mov r4, #0 / str r4, [r0, r5]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
De los elementos que componen un procesador, cul de ellos controla el contenido
del bus de direcciones?
Trieu una resposta.

a. unidad de control


b. registros


c. unidad de clculo de direcciones


d. unidad aritmtico-lgica

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Qu instrucciones de salto condicional se pueden utilizar despus de una instruccin
tst?
Trieu una resposta.

a. slo beq


b. cualquiera


c. beq, bne, bhs, bht, bls y blo


d. beq y bne

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cmo se llenan los bits altos del registro r0 con una instruccin ldrh r0, [r1, #2]?
Trieu una resposta.

a. los 16 bits altos a 1


b. los 16 bits altos al valor del signo del nmero que se est cargando


c. los 24 bits altos a 0


d. los 16 bits altos a 0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x1003F 0x8B
0x10040 0x7D r2 0x00004
0x10041 0xB5 r3 0x10040
0x10042 0xF0 r4 0x00001
0X10043 0x23
0X10044 0x05
Cul es el resultado de la instruccin ldsh r0, [r3, r2, ror r4]?
Trieu una resposta.

a. r0 = 0x000023F0


b. r0 = 0xFFFF23F0


c. r0 = 0x23F0


d. r0 = 0xFFFFB57D

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
De los elementos que componen un procesador, cul de ellos est implementado
bsicamente como un autmata?
Trieu una resposta.

a. registros


b. unidad de control


c. unidad de clculo de direcciones


d. unidad aritmtico-lgica

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cmo se organiza la memoria de un sistema programable basado en ARMv4?
Trieu una resposta.

a. como un vector de bytes


b. como un vector de bits


c. como un vector de words


d. como un vector de half-words

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Dnde guarda la direccin de retorno una instruccin de llamada a rutina bl?
Trieu una resposta.

a. en el registro 14 (lr)


b. en el registro 15 (pc)


c. en el registro 13 (sp)


d. en la pila

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
En qu seccin se deben ubicar las variables globales no inicializadas?
Trieu una resposta.

a. .bss


b. .data


c. .var


d. .text

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Qu instruccin de lenguaje mquina se utiliza para invocar una rutina?
Trieu una resposta.

a. bl


b. br


c. b


d. beq

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se especifica un valor decimal en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el prefijo 0d


b. con el sufijo d'


c. escribiendo el nmero directamente


d. con el prefijo 0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Qu directiva sirve para definir una variable global inicializada de 32 bits?
Trieu una resposta.

a. .space 32


b. .byte


c. .word


d. .hword

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a*2 - b;, suponiendo
que las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. sub r2, r0, lsl #1 / add r2, r1


b. mov r0, lsl #1 / sub r2, r1, r0


c. sub r2, r1, r0, lsl #1


d. mov r0, lsl #1 / sub r2, r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[1] = i;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. strb #1, [r1, r0]


b. strb r0, [r1, #1]


c. mov r2, #1 / strb r2, [r1, r0]


d. strb r0, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a = a << b;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r1, r0, lsl r1


b. mov r0, r1, lsl r0


c. mov r0, r0, lsl r1


d. mov r0, r1, lsl r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / cmp r0, #10 / blo .Lfindo / / b .Ldo / .Lfindo:


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


c. mov r0, #0 / .Ldo: / cmp r0, #10 / bhs .Lfindo / / b .Ldo / .Lfindo:


d. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap


b. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


c. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap


d. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


b. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


c. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]


d. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]


c. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]


d. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Cul de las siguientes instrucciones es capaz de dividir el contenido de r0 por 2?
Trieu una resposta.

a. sub r0, r0, ror #4


b. sub r0, r0, lsl #1


c. sub r0, r0, asr #1


d. sub r0, r0, lsr #1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cul es el nmero de bytes mnimo que puede capturar de memoria un procesador
ARMv4 en un slo acceso?
Trieu una resposta.

a. 2


b. 1


c. 4


d. 8

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
De los tipos de bus que componen un sistema programable, cul de ellos se encarga
de transferir datos entre el procesador y los controladores de entrada/salida?
Trieu una resposta.

a. bus de datos


b. bus de control


c. bus de direcciones


d. bus de entrada/salida

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul de las siguientes instrucciones sirve para cargar un half-word de memoria en un
registro de lenguaje mquina?
Trieu una resposta.

a. strh


b. str


c. ldrh


d. ldr

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de las posiciones de memoria 0x07E8 y 0X07EC despus de
ejecutar una instruccin push {r0, r4, r1, r5}?
Trieu una resposta.

a. M[0x07E8] = 0x00000001; M[0x07EC] = 0xFFFFFFFE


b. M[0x07E8] = 0x00000000; M[0x07EC] = 0x00FE37A1


c. M[0x07E8] = 0x00000000; M[0x07EC] = 0x00000001


d. M[0x07E8] = 0x00000000; M[0x07EC] = 0x000007F4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cmo se llenan los bits altos del registro r0 con una instruccin ldsh r0, [r1, #2]?
Trieu una resposta.

a. los 16 bits altos a 0


b. los 16 bits altos a 1


c. los 24 bits altos a 0


d. los 16 bits altos al valor del signo del nmero que se est cargando

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
En qu base se pueden expresar los nmeros negativos con el smbolo - en el
lenguaje ensamblador GAS?
Trieu una resposta.

a. en base 10 y en base 8 (octal)


b. en cualquier base


c. slo en base 10


d. en base 10 y en base 16 (hexadecimal)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se consigue el retorno de una rutina con las instrucciones push de inicio i pop
de fin?
Trieu una resposta.

a. salvando el registro lr y recuperando su contenido en el pc


b. salvando el pc y recuperando su contenido en el registro lr


c. salvando el contenido de los registros que contienen parmetros de la rutina


d. salvando y restaurando los registros que se modifican dentro de la rutina

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v1: .byte 8

Cmo se puede cargar la direccin de memoria de v1 en el registro r0?
Trieu una resposta.

a. ldr r0, [v1]


b. ldr r0, v1


c. ldr r0, =v1


d. mov r0, v1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se traduce una directiva de ensamblador a lenguaje mquina?
Trieu una resposta.

a. no tiene una traduccin directa


b. como una instruccin


c. como una direccin de memoria


d. como un dato en memoria

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se especifica un valor decimal en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el prefijo 0


b. escribiendo el nmero directamente


c. con el sufijo d'


d. con el prefijo 0d

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a & 0x10) {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. tst r0, #0x10 / bne .Lfinif / / .Lfinif:


b. cmp r0, #0x10 / bne .Lfinif / / .Lfinif:


c. cmp r0, #0x10 / beq .Lfinif / / .Lfinif:


d. tst r0, #0x10 / beq .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / bgt .Lfinif / / .Lfinif:


b. cmp r0, #0 / ble .Lfinif / / .Lfinif:


c. cmp r0, #0 / bne .Lfinif / / .Lfinif:


d. cmp r0, #0 / bge .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a++;, suponiendo que el
valor de la variable a (de tipo int) est asignado al registro r0?
Trieu una resposta.

a. add r0, 1


b. add 1, r0


c. add #1, r0


d. add r0, #1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; do {...} while (i < 10);,
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Ldo: / / cmp r0, #10 / blo .Ldo


b. mov r0, #0 / .Ldo: / / cmp r0, #10 / bhs .Ldo


c. mov r0, #0 / .Ldo: / cmp r0, #10 / bhs .Lfindo / / b .Ldo / .Lfindo:


d. mov r0, #0 / .Ldo: / cmp r0, #10 / blo .Lfindo / / b .Ldo / .Lfindo:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


b. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


c. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]


d. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[i] = v[i-1]; si suponemos que el primer
parmetro se pasa por el registro r0, el segundo parmetro por r1, y las variables locales
i y temp se ubican en los registros r2 y r3, respectivamente?

Trieu una resposta.

a. ldr r4, [r0, r2, lsl #2] / sub r2, #1 / str r4, [r0, r2, lsl #2]


b. ldr r4, [r0, r2, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]


c. ldr r4, [r0, r2, lsl #2] / sub r3, r2, #1 / str r4, [r0, r3, lsl #2]


d. ldr r4, [r0, r3, lsl #2] / sub r5, r2, #1 / str r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. cmp r0, r1 / bge .Lelse / mov r2, #a


b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]



c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a


Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de r0 y r1 despus de ejecutar una instruccin pop {r1, r0}?
Trieu una resposta.

a. r0 = 0xC37D12FD; r1 = 0x509AE246


b. r0 = 0x509AE246; r1 = 0xC37D12FD


c. r0 = 0xF0B57D8B; r1 = 0x509AE246


d. r0 = 0x509AE246; r1 = 0xF0B57D8B

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cul de las siguientes instrucciones sirve para grabar el contenido de un registro de
lenguaje mquina en un half-word de memoria?
Trieu una resposta.

a. str


b. strh


c. ldrh


d. ldr

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Qu tipo de instrucciones generan siempre un secuenciamiento explcito?
Trieu una resposta.

a. de salto incondicional


b. de salto condicional o incondicional


c. de salto condicional


d. de comparacin

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r0, r1, r4, r5} y pop {r0, r4, r1, r5}?
Trieu una resposta.

a. r0 = 0x00000000; r1 = 0x00FE37A1


b. r0 = 0x00000000; r1 = 0x00000001


c. r0 = 0x00FE37A1; r1 = 0x00000001


d. r0 = 0x00FE37A1; r1 = 0xFFFFFFFE

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Cul de las siguientes instrucciones efecta un salto condicional?
Trieu una resposta.

a. b


b. cmp


c. beq


d. bl

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar tst r1, r0, ror #1?
Trieu una resposta.

a. r0 = 3


b. Flag Z = 1


c. Flag Z = 0


d. r1 = 3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int matrix[][]
= {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}};?
Trieu una resposta.

a. matrix: .word 2, -5, 90, -12, 82, 0, -4, 850, -100


b. matrix: .word {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}}


c. matrix: .word {2, -5, 90, -12, 82, 0, -4, 850, -100}


d. matrix: .word {2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v2: .byte 16
.align 1
Cul ser la siguiente direccin de ensamblado si v2 se almacena en 0x10038?
Trieu una resposta.

a. 0x10041


b. 0x10039


c. 0x10040


d. 0x10042

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Cmo se puede alinear la memoria a hword?
Trieu una resposta.

a. .align 1


b. .align 3


c. .align 2


d. ..align 4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se especifica un valor hexadecimal en lenguaje ensamblador GAS?
Trieu una resposta.

a. con el sufijo H'


b. escribiendo el nmero directamente


c. con el sufijo 0X


d. con el prefijo 0x

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que tenemos el siguiente trozo de programa en lenguaje mquina:
0x8000 ldr r1, [pc, #16]
0x8004 ldr r1, [r0]
0x8008 ldr r1, [r0, r2]
0x800C ldr r1, [r0, r2, lsl
#3]
0x8010 b 0x8010
0x8014 (0x0001 0034)

qu instruccin corresponde a una instruccin del tipo ldr r1, =v1?
Trieu una resposta.

a. ldr r1, [pc, #16]


b. ldr r1, [r0, r2, lsl #3]


c. ldr r1, [r0, r2]


d. ldr r1, [r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a*a + b;, suponiendo
que las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. mul r2, r0, r0 / add r2, r1


b. mul r0, r0, r0 / add r2, r0, r1


c. mul r3, r0, r0 / add r1, r2, r3


d. add r2, r1, r0, lsl #2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / bge .Lfinif / / .Lfinif:


b. cmp r0, #0 / bgt .Lfinif / / .Lfinif:


c. cmp r0, #0 / bne .Lfinif / / .Lfinif:


d. cmp r0, #0 / ble .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a = ~a;, suponiendo que el
valor de la variable a (de tipo int) no est asignado a ningn registro?
Trieu una resposta.

a. mov r0, [a] / mvn r0, r0 / mov [a], r0


b. mvn [a], a


c. ldr r0, =a / mvn r0, r0 / str r0, =a


d. ldr r1, =a / ldr r0, [r1] / mvn r0, r0 / str r0, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[i] = 0;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. mov r2, #0 / str r2, [r1, r0]


b. mov r2, #0 / ldr r2, [r1, r0]


c. mov r2, #0 / ldrb r2, [r1, r0]


d. mov r2, #0 / strb r2, [r1, r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]



b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



c. cmp r0, r1 / bge .Lelse / mov r2, #a


d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap


b. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


c. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap


d. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
En ARMv4, cuntos bits se puede desplazar, como mximo, el patrn de bits a 1 de
un operando inmediato?
Trieu una resposta.

a. 32


b. 16


c. 8


d. 30

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #5
0x8004 mov r1, #2
0x8008 mul r2, r0,
r1
0x800C add r1, #1
0x8010 cmp r2, #50
0x8014 bne 0x8008
0x8018 b 0x8018
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x8018 (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto y diferente de una multiplicacin necesita 1 ciclo, una instruccin de
multiplicacin necesita 2 ciclos, una instruccin de salto con secuenciamiento explcito
necesita 3 ciclos, y una instruccin de salto con secuenciamiento implcito necesita 4
ciclos?
Trieu una resposta.

a. 58


b. 75


c. 66


d. 46

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
De los tipos de bus que componen un sistema programable, cul de ellos se encarga
de transferir datos entre el procesador y la memoria?
Trieu una resposta.

a. bus de entrada/salida


b. bus de direcciones


c. bus de datos


d. bus de control

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul de las siguientes instrucciones sirve para grabar un registro de lenguaje mquina
en un word de memoria?
Trieu una resposta.

a. strb


b. ldr


c. ldrb


d. str

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Cul es el resultado de la instruccin mul r4, r2, r0?
Trieu una resposta.

a. r2 = r0 * r4


b. r4 = r2 * r0


c. r4 = r2 * 2 elevado a r0


d. r0 = r2 * r4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Qu bits del registro r0 se graban en memoria con la instruccin strh r0, [r1, r2, lsl
#2]?
Trieu una resposta.

a. los 32 de ms peso


b. los 4 de menos peso


c. los 16 de menos peso


d. los 16 de ms peso

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Qu directiva sirve para definir una variable global inicializada de tipo int?
Trieu una resposta.

a. .int


b. .byte


c. .hword


d. .word

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
En qu seccin se deben ubicar las variables globales inicializadas?
Trieu una resposta.

a. .var


b. .bss


c. .data


d. .text

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Cmo se puede alinear la memoria a hword?
Trieu una resposta.

a. .align 3


b. .align 2


c. .align 1


d. ..align 4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cul tiene que ser siempre la primera instruccin de una rutina?
Trieu una resposta.

a. bl


b. push


c. func1:


d. pop

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Dnde guarda la direccin de retorno una instruccin de llamada a rutina bl?
Trieu una resposta.

a. en el registro 14 (lr)


b. en el registro 15 (pc)


c. en el registro 13 (sp)


d. en la pila

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


b. cmp r0, #10 / bhs .Lfinif / add r0, #1 / b .Lelse / .Lelse: / / .Lfinif:


c. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lelse / .Lelse: / / .Lfinif:


d. cmp r0, #10 / bhs .Lfinif / add r0, #1 / .Lelse: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a > 10) {...}, suponiendo
que el valor de la variable a (de tipo unsigned int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #10 / blt .Lfinif / / .Lfinif:


b. cmp r0, #10 / ble .Lfinif / / .Lfinif:


c. cmp r0, #10 / blo .Lfinif / / .Lfinif:


d. cmp r0, #10 / bls .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Suponiendo que se han declarado las constantes Base (dir. base), NC (nm. columnas),
NF (nm. filas) y T (tamao elementos), cul es la frmula para calcular la direccin
de memoria de un elemento (i, j) de una matriz almacenada por filas?
Trieu una resposta.

a. dir(i, j) = Base + (i * NF + j) * T


b. dir(i, j) = Base + (j * NF + i) * T


c. dir(i, j) = Base + (i * NC + j) * T


d. dir(i, j) = Base + (j * NC + i) * T

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / bls .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


b. cmp r0, #10 / bhi .Lelse / add r0, #1 / b .Lfinif: / .Lelse: / / .Lfinif:


c. cmp r0, #10 / blo .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


d. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2] / bl func2


b. ldr r0, =a / bl func2 / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


c. bl func2 / ldr r0, =a / ldr r0, [r0] / ldr r2, =b / strb r1, [r2]


d. ldr r0, =a / ldr r0, [r0] / ldr r2, =b / bl func2 / strb r1, [r2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin v[0] = temp; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. str r3, [r0] @; r3 es temp


b. ldr r2, =temp / ldr r3, [r2] / str r3, [r0, r1, lsl #2]


c. strb r3, [r0] @; r3 es temp


d. ldr r2, =temp / ldr r3, [r2] / str r3, [r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C b = func2(a);, suponiendo que
la variable a es de tipo int, que la variable c es de tipo char, que el parmetro se
pasa por valor y por r0, mientras que resultado se devuelve por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r2, =b / str r1, [r2]


b. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r1, =b / strb r1, [r1]


c. ldr r0, =a / ldr r0, [r0] / bl func2 / ldr r2, =b / strb r1, [r2]


d. ldr r0, =a / ldr r0, [r0] / bl func2 / ldrb r1, =b / str r1, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #5
0x8004 mov r1, #2
0x8008 mul r2, r0,
r1
0x800C add r1, #1
0x8010 cmp r2, #50
0x8014 bne 0x8008
0x8018 b 0x8018
Cuntos ciclos mquina se necesitan para ejecutar las instrucciones desde 0x8000
hasta 0x8018 (no inclusive), suponiendo que, en general, una instruccin diferente de
un salto y diferente de una multiplicacin necesita 1 ciclo, una instruccin de
multiplicacin necesita 2 ciclos, una instruccin de salto con secuenciamiento explcito
necesita 3 ciclos, y una instruccin de salto con secuenciamiento implcito necesita 4
ciclos?
Trieu una resposta.

a. 46


b. 58


c. 66


d. 75

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar orr r2, r1, r0, lsr
#2?
Trieu una resposta.

a. r2 = 11


b. r2 = 12


c. r2 = 10


d. r2 = 13

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Dado el siguiente contenido de una porcin de la memoria:
0x10032 0x41
0x10033 0x7F
0x10034 0x00
0x10035 0x60
0x10036 0xAC

Cul es el half word que se encuentra en la posicin 0x10034, con una ordenacin
Little Endian?
Trieu una resposta.

a. 0x7F00


b. 0x0060


c. 0x007F


d. 0x6000

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de ejecutar tst r1, r0, ror #1?
Trieu una resposta.

a. r0 = 3


b. Flag Z = 1


c. r1 = 3


d. Flag Z = 0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Dados los dos campos IR e IN que definen un operando inmediato en una instruccin
de lenguaje mquina de ARMv4, Cul es la operacin que realiza el procesador para
obtener el valor inmediato correspondiente?
Trieu una resposta.

a. IN rotado IR*2 bits a la derecha


b. IN desplazado IR bits a la izquierda


c. IN desplazado IR bits a la derecha


d. IN rotado IR*2 bits a la izquierda

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cul es la instruccin para saltar cuando un nmero entero es mayor estricto que otro?
Trieu una resposta.

a. bhi


b. bgt


c. bhs


d. bge

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int matrix[][]
= {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}};?
Trieu una resposta.

a. matrix: .word {2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}


b. matrix: .word {2, -5, 90, -12, 82, 0, -4, 850, -100}


c. matrix: .word 2, -5, 90, -12, 82, 0, -4, 850, -100


d. matrix: .word {{2, -5, 90}, {-12, 82, 0}, {-4, 850, -100}}

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Qu son los smbolos del lenguaje ensamblador?
Trieu una resposta.

a. los valores inmediatos


b. los comentarios


c. los nombres de las variables y las etiquetas de salto


d. los cdigos binarios de las instrucciones de lenguaje mquina

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Qu registros hay que salvar al inicio de una rutina?
Trieu una resposta.

a. todos los que se modifican ms el registro lr


b. todos los que se modifican ms el registro lr, excepto los registro que retornan
resultados

c. todos los que se modifican


d. todos

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int c =
0x500;?
Trieu una resposta.

a. i: .word 0x500


b. i: .hword 0x500


c. i: .word 500


d. i: .hword 500

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
En el proceso de ensamblado, qu patrn se puede aplicar a las etiquetas de salto?
Trieu una resposta.

a. una declaracin, una referencia de salto


b. mltiples declaraciones, una referencia de salto


c. una declaracin, mltiples referencias de salto


d. mltiples declaraciones, mltiples referencias de salto

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / / cmp r0, #10 / bhs .Lwhile


b. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

d. mov r0, #0 / .Lwhile: / / cmp r0, #10 / blo .Lwhile

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a != 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / beq .Lfinif / / .Lfinif:


b. cmp r0, #0 / bge .Lfinif / / .Lfinif:


c. cmp r0, #0 / ble .Lfinif / / .Lfinif:


d. cmp r0, #0 / bne .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhi .Lfinwhile / / b .Lwhile /
.Lfinwhile:

d. mov r0, #0 / .Lwhile: / cmp r0, #10 / bls .Lfinwhile / / b .Lwhile /

.Lfinwhile:
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a*a + b;, suponiendo
que las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. add r2, r1, r0, lsl #2


b. mul r0, r0, r0 / add r2, r0, r1


c. mul r2, r0, r0 / add r2, r1


d. mul r3, r0, r0 / add r1, r2, r3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. cmp r0, r1 / bge .Lelse / mov r2, #a


b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]



d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap


b. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


c. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap


d. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]


b. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


c. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


d. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp

Incorrecta
Punts d'aquesta tramesa: 0/1.
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de las posiciones de memoria 0x07FC y 0X0800 despus de
ejecutar una instruccin push {r0, r4, r1, r5}?
Trieu una resposta.

a. M[0x07FC] = 0x00FE37A1; M[0X0800] = 0x00000000


b. M[0x07FC] = 0x00000001; M[0X0800] = 0xFFFFFFFE


c. M[0x07FC] = 0x00FE37A1; M[0X0800] = 0xFFFFFFFE


d. M[0x07FC] = 0x35CD0523; M[0X0800] = 0x000127AC

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de la instruccin tst r1, r0?
Trieu una resposta.

a. Flag Z = 0


b. r1 = 2


c. Flag Z = 1


d. r0 = 2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
De los elementos que componen un procesador, cul de ellos maneja el bus de
control?
Trieu una resposta.

a. unidad aritmtico-lgica


b. unidad de clculo de direcciones


c. unidad de control


d. registros

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r0, r1} y pop {r4, r5}?
Trieu una resposta.

a. r0 = 0x00FE37A1; r1 = 0xFFFFFFFE


b. r0 = 0xFFFFFFFE; r1 = 0x00000000


c. r0 = 0xFFFFFFFE; r1 = 0x00FE37A1


d. r0 = 0x00000000; r1 = 0x00000001

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Cul es la instruccin para saltar cuando un nmero entero es menor estricto que otro?
Trieu una resposta.

a. blt


b. blo


c. bls


d. ble

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
De los elementos que componen un sistema programable, cul de ellos se encarga
de almacenar los datos de un programa escrito en lenguaje mquina?
Trieu una resposta.

a. buses


b. controladores de entrada/salida


c. memoria


d. procesador

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se puede alinear la memoria a hword?
Trieu una resposta.

a. ..align 4


b. .align 2


c. .align 1


d. .align 3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Dnde guarda la direccin de retorno una instruccin de llamada a rutina bl?
Trieu una resposta.

a. en la pila


b. en el registro 14 (lr)


c. en el registro 13 (sp)


d. en el registro 15 (pc)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
En lenguaje ensamblador GAS para ARMv4, cules son los tipos de valores que
pueden ir como valores inmediatos de las instrucciones de lenguaje mquina, es decir,
detrs de un carcter #?
Trieu una resposta.

a. valores en base 10 o en base 16 (prefijo 0x)


b. valores en cualquier base


c. valores en base 10 o en base 8 (prefijo 0)


d. slo valores en base 10

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando el programa ensamblador traduce una instruccin del tipo ldr r1, =v1, qu
tipo de instruccin codifica en lenguaje mquina?
Trieu una resposta.

a. ldr r1, 0x10034


b. ldr r1, [pc, #desp] (dnde desp es el desplazamiento hasta un posicin del
programa)

c. mov r1, #0x10034


d. ldr r1, [0x10034]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int c =
0x500;?
Trieu una resposta.

a. i: .word 500


b. i: .hword 500


c. i: .word 0x500


d. i: .hword 0x500

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if ((a > 0) && (b < a)) {...},
suponiendo que las variables a y b (de tipo int) estn asignadas a los registros r0 y
r1, respectivamente?
Trieu una resposta.

a. cmp r0, #0 / bge .Lfinif / cmp r1, r0 / ble .Lfinif / / .Lfinif:


b. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / ble .Lfinif / / .Lfinif:


c. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:


d. cmp r0, #0 / bge .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Suponiendo que se han cargado los registro r0, r1, r2, r3 y r4 con la direccin base de
una matriz de tipo int (r0), el nmero de columnas (r1), el nmero de filas (r2), el
ndice i (r3) y el ndice j (r4), cmo se puede implementar en lenguaje mquina la
instruccin k = matriz[i][j];, donde k se tiene que guardar en el registro r6?
Trieu una resposta.

a. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5]


c. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #4]


d. mul r5, r3, r1 / add r5, r4 / ldr r6, [r0, r5, lsl #1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / blo .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


b. cmp r0, #10 / bhi .Lelse / add r0, #1 / b .Lfinif: / .Lelse: / / .Lfinif:


c. cmp r0, #10 / bls .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


d. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / / cmp r0, #10 / blo .Lwhile


c. mov r0, #0 / .Lwhile: / / cmp r0, #10 / bhs .Lwhile


d. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile /
.Lfinwhile:
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la funcin de la figura, implementada en C:
Cmo se implementa la instruccin int temp = v[n-1] si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?

Trieu una resposta.

a. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2, r1, lsl #2]


b. sub r1, #1 / ldr r3, [r0, r1, lsl #2] @; r3 es temp


c. ldr r2, =temp / sub r1, #1 / ldr r3, [r0, r1, lsl #2] / str r3, [r2]


d. sub r2, r1, #1 / ldr r3, [r0, r2, lsl #2] @; r3 es temp

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a


b. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a


c. cmp r0, #10 / bge .Lelse / mov r1, #a


d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin matriz[j*num_files + i] = temp; si suponemos
que los parmetros se pasan por los r0 y r1, mientras que las variables locales i, j,
temp se implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. mul r5, r2, r1 / add r5, r3 / ldr r4, [r0, r5, lsl #2]


b. mul r5, r3, r1 / add r5, r2 / ldr r4, [r0, r5, lsl #2]


c. mul r5, r2, r1 / add r5, r3 / str r4, [r0, r5, lsl #2]


d. mul r5, r3, r1 / add r5, r2 / str r4, [r0, r5, lsl #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
En ARMv4, de cantos bits es el valor derivado de un operando inmediato (despus
de realizar el desplazamiento pertinente)?
Trieu una resposta.

a. 8


b. 32


c. 16


d. 12

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cmo consigue el procesador efectuar un secuenciamiento explcito?
Trieu una resposta.

a. sumando 1 al pc


b. sumando 4 al pc


c. reseteando (poniendo a 0) el pc


d. cargando la direccin del salto en el p

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
De cuntos bits disponen las instruccin de un procesador ARMv4 para codificar el
identificador de un registro de lenguaje mquina (en modo ARM)?
Trieu una resposta.

a. 4


b. 8


c. 16


d. 3

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Dado el siguiente contenido de memoria y de algunos registros de lenguaje mquina:
0x1003F 0x8B
0x10040 0x7D r2 0x00004
0x10041 0xB5 r3 0x10040
0x10042 0xF0 r4 0x00001
0X10043 0x23
0X10044 0x05
Cul es el resultado de la instruccin ldsh r0, [r3, r2, ror r4]?
Trieu una resposta.

a. r0 = 0xFFFF23F0


b. r0 = 0x23F0


c. r0 = 0xFFFFB57D


d. r0 = 0x000023F0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que r0 = 0x84FA 0123, qu valor contendr r1 despus de ejecutar la
instruccin mov r1, r0, ror #4?
Trieu una resposta.

a. 0x4FA0 1230


b. 0xF84F A012


c. 0x384F A012


d. 0x084F A012

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Suponiendo que r0 = 6 y r1 = 10, cul es el resultado de la instruccin eor r2, r1, r0?
Trieu una resposta.

a. r2 = 15


b. r2 = 14


c. r2 = 2


d. r2 = 12

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Dado el siguiente programa escrito en lenguaje ensamblador:
_start: mov r0, #3
mov r1, #1
.Lbucle: add r0, r1
add r1, #1
cmp r0, #12
blo .Lbucle
.Lstop: b .Lstop

Si la primera instruccin se ensambla a partir de la posicin 0x8000, Que direccin le
corresponde al smbolo .Lbucle?
Trieu una resposta.

a. 0x8003


b. 0x8004


c. 0x8008


d. 0x8002

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Qu directiva sirve para definir una variable global inicializada de tipo int?
Trieu una resposta.

a. .byte


b. .word


c. .int


d. .hword

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v2: .hword 16


Cmo se puede grabar el contenido del registro r0 en la posicin de memoria de v2?
Trieu una resposta.

a. ldr r1, =v1 / str r0, [r1]


b. ldrh r1, =v1 / str r0, [r1]


c. ldr r1, =v1 / strb r0, [r1]


d. ldr r1, =v1 / strh r0, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Dnde guarda la direccin de retorno una instruccin de llamada a rutina bl?
Trieu una resposta.

a. en el registro 13 (sp)


b. en la pila


c. en el registro 14 (lr)


d. en el registro 15 (pc)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v3: .hword 0x0800
.align 2
Cul ser la siguiente direccin de ensamblado si v3 se almacena en 0x10040?
Trieu una resposta.

a. 0x10048


b. 0x10044


c. 0x10042


d. 0x10046

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C a++;, suponiendo que el
valor de la variable a (de tipo int) est asignado al registro r0?
Trieu una resposta.

a. add r0, 1


b. add 1, r0


c. add r0, #1


d. add #1, r0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. .Lwhile: / mov r0, #0 / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / cmp r0, #10 / .Lwhile: / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

d. mov r0, #0 / cmp r0, #10 / bhs .Lfinwhile / .Lwhile: / / b .Lwhile /
.Lfinwhile:
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C c = a ^ b;, suponiendo que
las variables a, b y c (de tipo int) estn asignados a los registros r0, r1 y r2,
respectivamente?
Trieu una resposta.

a. or r2, r0, r1


b. and r2, r0, r1


c. eor r2, r0, r1


d. orr r2, r0, r1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a != 0) {...}, suponiendo
que el valor de la variable a (de tipo int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #0 / ble .Lfinif / / .Lfinif:


b. cmp r0, #0 / beq .Lfinif / / .Lfinif:


c. cmp r0, #0 / bne .Lfinif / / .Lfinif:


d. cmp r0, #0 / bge .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a



b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


c. cmp r0, r1 / bge .Lelse / mov r2, #a


d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]


Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap


b. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


c. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap


d. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a


b. cmp r0, #10 / bge .Lelse / mov r1, #a


c. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]


d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Suponiendo que el contenido de algunos registros sea el siguiente:
r0 0x0000
r1 0x0001
r4 0x00FE37A1
r5 0xFFFFFFFE
Cul ser el contenido de los registros r0 y r1 despus de ejecutar las instrucciones
push {r0, r1, r4, r5} y pop {r0, r4, r1, r5}?
Trieu una resposta.

a. r0 = 0x00FE37A1; r1 = 0x00000001


b. r0 = 0x00000000; r1 = 0x00000001


c. r0 = 0x00000000; r1 = 0x00FE37A1


d. r0 = 0x00FE37A1; r1 = 0xFFFFFFFE

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cul de los siguientes operadores se emplea para desplazar el contenido de un
registro cierto nmero de bits a la izquierda?
Trieu una resposta.

a. lsr


b. asr


c. ror


d. lsl

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
De los elementos que componen un procesador, cul de ellos se encarga de calcular
las posiciones de memoria donde se encuentran los datos del programa?
Trieu una resposta.

a. unidad de clculo de direcciones


b. unidad de control


c. registros


d. unidad aritmtico-lgica

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de r4 y r5 despus de ejecutar una instruccin pop {r0, r1, r4-
r7}?
Trieu una resposta.

a. r4 = 0x35CD0523; r5 = 0x000127AC


b. r4 = 0x00000000; r5 = 0x0800CACB


c. r4 = 0x509AE246; r5 = 0xF0B57D8B


d. r4 = 0x0800CACB; r5 = 0xFFFFFFFE

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Suponiendo que el contenido inicial de la pila y de algunos registros sea el siguiente:
0x07E8 0x00000000 r0 0x0000
0x07EC 0x0800CACB r1 0x0001
0x07F0 0xC37D12FD
0x07F4 0x509AE246 r4 0x00FE37A1
0x07F8 0xF0B57D8B r5 0xFFFFFFFE
0x07FC 0x35CD0523
0x0800 0x000127AC r13 0x000007F4
Cal ser el contenido de r0 y r1 despus de ejecutar una instruccin pop {r1, r0}?
Trieu una resposta.

a. r0 = 0xC37D12FD; r1 = 0x509AE246


b. r0 = 0x509AE246; r1 = 0xC37D12FD


c. r0 = 0x509AE246; r1 = 0xF0B57D8B


d. r0 = 0xF0B57D8B; r1 = 0x509AE246

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Cul es el rango mximo de los nmeros enteros que puede manejar
intrnsecamente un procesador ARMv4?
Trieu una resposta.

a. de -32768 a 32767


b. de -4294967296 a 4294967295


c. de -2147483648 a 2147483647


d. de -65536 a 65535

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Qu registro tiene que recuperar de la pila la direccin de retorno en la ltima
instruccin pop de una rutina?
Trieu una resposta.

a. el registro 14 (lr)


b. el registro 15 (pc)


c. el registro 0


d. el registro 13 (sp)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Cmo se define la direccin de inicio de una rutina?
Trieu una resposta.

a. con una etiqueta de salto


b. con una directiva .global


c. con una instruccin de llamada a rutina bl


d. con una directiva .routine

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Suponiendo que tenemos la siguiente declaracin en lenguaje C: int matrix[][] = {{2, -
5, 90}, {-12, 82, 0}, {-4, 850, -100}};, y que la variable global matrix se empieza a
guardar en la direccin 0x10034, En que direccin se almacenar el valor 0?
Trieu una resposta.

a. 0x10040


b. 0x10048


c. 0x10039


d. 0x10054

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
A qu nivel est definido el cdigo hexadecimal de una instruccin de lenguaje
mquina como 0x1AFF FFFC?
Trieu una resposta.

a. a nivel de cdigo mquina


b. a nivel de lenguaje ensamblador


c. a nivel de lenguaje mquina


d. a alto nivel

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v3: .word 32

Cmo se puede cargar el contenido de memoria de v3 en el registro r0?
Trieu una resposta.

a. ldr r0, =v1 / ldr r0, r1


b. ldr r1, =v1 / ldr r0, [r1]


c. mov r0, =v1


d. ldr r0, =v1 / ldr r1, [r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[1] = i;, suponiendo el vector
v es de tipo short, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. strs r0, [r1, #1]


b. strh r0, [r1, #4]


c. strb r0, [r1, #1]


d. strh r0, [r1, #2]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a & 0x10) {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #0x10 / bne .Lfinif / / .Lfinif:


b. cmp r0, #0x10 / beq .Lfinif / / .Lfinif:


c. tst r0, #0x10 / bne .Lfinif / / .Lfinif:


d. tst r0, #0x10 / beq .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


b. cmp r0, #10 / blo .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


c. cmp r0, #10 / bls .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


d. cmp r0, #10 / bhi .Lelse / add r0, #1 / b .Lfinif: / .Lelse: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C for (i = 0; i < j; i++) {...},
suponiendo que las variables i y j (de tipo int) se asignen a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r0, #0 / cmp r0, r1 / bge .Lfinfor / .Lfor: / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

b. mov r0, #0 / .Lfor: / cmp r0, r1 / bge .Lfinfor / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

c. mov r0, #0 / cmp r0, r1 / .Lfor: / bge .Lfinfor / / add r0, #1 / cmp r0, r1 / bls
.Lfor / .Lfinfor:

d. mov r0, #0 / .Lfor: / / add r0, #1 / cmp r0, r1 / bls .Lfor

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[j][i]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap


b. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap


c. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap


d. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap

Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Cmo se modifica el registro sp despus de ejecutar una instruccin pop {r0-r3,
lr}?
Trieu una resposta.

a. sp = sp + 5


b. sp = sp - 16


c. sp = sp - 24


d. sp = sp + 20

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Cul de las siguientes instrucciones efecta un salto condicional?
Trieu una resposta.

a. beq


b. cmp


c. bl


d. b

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Suponiendo que r13 = 0x07DC y r14 = 0x84AC, Cul es el valor del r13 despus de
ejecutar la instruccin push {r0-r2, lr}?
Trieu una resposta.

a. r13 = 0x84AC


b. r13 = 0x07DC


c. r13 = 0x07CC


d. r13 = 0x07D9

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
De los elementos que componen un sistema programable, cul de ellos se encarga
de almacenar los datos de un programa escrito en lenguaje mquina?
Trieu una resposta.

a. buses


b. procesador


c. memoria


d. controladores de entrada/salida

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Qu tipo de instrucciones generan siempre un secuenciamiento explcito?
Trieu una resposta.

a. de salto condicional


b. de salto condicional o incondicional


c. de salto incondicional


d. de comparacin

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
De los tipos de bus que componen un sistema programable, cul de ellos se encarga
de indicar las posiciones de memoria donde se encuentran los datos del programa?
Trieu una resposta.

a. bus de direcciones


b. bus de entrada/salida


c. bus de control


d. bus de datos

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Cmo se traduce en lenguaje ensamblador la declaracin en lenguaje C int c =
0x500;?
Trieu una resposta.

a. i: .word 500


b. i: .word 0x500


c. i: .hword 500


d. i: .hword 0x500

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Suponiendo que la variable v1 se encuentra en la posicin de memoria 0x10034,
cuando el programa ensamblador traduce una instruccin del tipo ldr r1, =v1, qu
tipo de instruccin codifica en lenguaje mquina?
Trieu una resposta.

a. ldr r1, 0x10034


b. ldr r1, [0x10034]


c. mov r1, #0x10034


d. ldr r1, [pc, #desp] (dnde desp es el desplazamiento hasta un posicin del
programa)
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Suponiendo que tenemos las siguientes lneas de lenguaje ensamblador:
v6: .byte 1, 2, 3, 4, 5,
6
.align 1
Cul ser la siguiente direccin de ensamblado si v6 se almacena en 0x10060?
Trieu una resposta.

a. 0x10068


b. 0x10067


c. 0x10066


d. 0x10070

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Dnde guarda la direccin de retorno una instruccin de llamada a rutina bl?
Trieu una resposta.

a. en el registro 15 (pc)


b. en el registro 14 (lr)


c. en la pila


d. en el registro 13 (sp)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cuntos bytes puede insertar el programa ensamblador como respuesta a una directiva
.align 1?
Trieu una resposta.

a. siempre 1


b. 0, 1 o 2


c. siempre 2


d. 0 o 1

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lwhile / / b .Lfinwhile /
.Lfinwhile:

c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lwhile / / b .Lwhile / .Lfinwhile:



d. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lfinwhile /
.Lfinwhile:
Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a <= 10) {...}, suponiendo
que el valor de la variable a (de tipo unsigned int) est asignada al registro r0?
Trieu una resposta.

a. cmp r0, #10 / bgt .Lfinif / / .Lfinif:


b. cmp r0, #10 / bhi .Lfinif / / .Lfinif:


c. cmp r0, #10 / bge .Lfinif / / .Lfinif:


d. cmp r0, #10 / bhs .Lfinif / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if (a < 10) a++; else {...},
suponiendo que el valor de la variable a (de tipo unsigned int) est asignada al registro
r0?
Trieu una resposta.

a. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lelse / .Lelse: / / .Lfinif:


b. cmp r0, #10 / bhs .Lelse / add r0, #1 / b .Lfinif / .Lelse: / / .Lfinif:


c. cmp r0, #10 / bhs .Lfinif / add r0, #1 / b .Lelse / .Lelse: / / .Lfinif:


d. cmp r0, #10 / bhs .Lfinif / add r0, #1 / .Lelse: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[i] = 1;, suponiendo el vector
v es de tipo int, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. mov r2, #1 / str r2, [r1, r0, lsl #2]


b. mov r2, #1 / str r2, [r1, r0]


c. mov r2, #1 / str r2, [r1, r0, lsl #1]


d. mov r2, #1 / str r2, [r1, r0, lsl #4]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[i][j]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la llamada swap(&vector[i], &vector[lon-1 i]); si suponemos
que la direccin base de vector est en r3, el valor de lon -1 est en r4, los parmetros de
swap se pasan por los r0 y r1, mientras que la variable local i se implementa en el
registro r2?
Trieu una resposta.

a. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2 / bl swap


b. ldrh r0, [r3, r2, lsl #1] / sub r5, r4, r2 / ldrh r1, [r3, r5, lsl #1] / bl swap


c. add r0, r3, r2, lsl #1 / add r1, r0, r4, lsl #1 / sub r1, r2, lsl #1 / bl swap


d. add r0, r3, r2 / add r1, r0, r4 / sub r1, r2 / bl swap

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < *b) c = a; si suponemos que los parmetros
se pasan por los registros r0 y r1, mientras que el resultado se devuelve por el registro
r2?
Trieu una resposta.

a. cmp r0, r1 / bge .Lelse / mov r2, #a


b. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r2, #a


c. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / mov r5, #a / strh r5, [r2]



d. ldrh r3, [r0] / ldrh r4, [r1] / cmp r3, r4 / bge .Lelse / ldrb r3, [r2] / mov r3, #a


Incorrecta
Punts d'aquesta tramesa: 0/1.
Punts: 1
Dado el siguiente programa escrito en lenguaje mquina:
0x8000 mov r0, #3
0x8004 mov r1, #1
0x8008 add r0, r1
0x800C add r1, #1
0x8010 cmp r0, #12
0x8014 blo 0x8008
0x8018 b 0x8018
Cuntas instrucciones se ejecutan desde 0x8000 hasta que se llega a 0x8018?
Trieu una resposta.

a. 18


b. 6


c. 38


d. 7

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 2
Punts: 1
Suponiendo que r13 = 0x07DC y r14 = 0x84AC, Cul es el valor del r13 despus de
ejecutar la instruccin push {r0-r2, lr}?
Trieu una resposta.

a. r13 = 0x07CC


b. r13 = 0x84AC


c. r13 = 0x07DC


d. r13 = 0x07D9

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 3
Punts: 1
Cul de los siguientes operadores se emplea para desplazar el contenido de un
registro cierto nmero de bits a la izquierda?
Trieu una resposta.

a. asr


b. ror


c. lsl


d. lsr

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 4
Punts: 1
Cul es la instruccin para saltar cuando dos nmeros naturales sn diferentes?
Trieu una resposta.

a. beq


b. ble


c. bne


d. bhi

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 5
Punts: 1
Cul de las siguientes instrucciones es capaz de dividir el contenido de r0 por 2?
Trieu una resposta.

a. sub r0, r0, asr #1


b. sub r0, r0, lsr #1


c. sub r0, r0, lsl #1


d. sub r0, r0, ror #4

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 6
Punts: 1
Qu tipo de instrucciones generan siempre un secuenciamiento explcito?
Trieu una resposta.

a. de comparacin


b. de salto incondicional


c. de salto condicional o incondicional


d. de salto condicional

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 7
Punts: 1
Suponiendo que tenemos la siguiente declaracin de variable en lenguaje ensamblador:
v1: .byte 8

Cmo se puede cargar el contenido de memoria de v1 en el registro r0?
Trieu una resposta.

a. ldr r1, =v1 / ldrb r0, [r1]


b. ldr r1, =v1 / ldr r0, [r1]


c. ldrb r1, =v1 / ldrb r0, [r1]


d. ldrb r1, =v1 / ldr r0, [r1]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 8
Punts: 1
Qu directiva sirve para definir una variable global inicializada de 32 bits?
Trieu una resposta.

a. .byte


b. .word


c. .space 32


d. .hword

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 9
Punts: 1
Qu registro tiene que guardarse a la pila en la primera instruccin push de una rutina
para permitir el retorno correctamente?
Trieu una resposta.

a. el registro 13 (sp)


b. el registro 0


c. el registro 14 (lr)


d. el registro 15 (pc)

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 10
Punts: 1
Cul de las siguientes lneas de cdigo no es una directiva de ensamblador?
Trieu una resposta.

a. .global _start


b. .arm


c. _start:


d. .align 2

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 11
Punts: 1
Cul tiene que ser siempre la ltima instruccin de una rutina?
Trieu una resposta.

a. bl


b. pop


c. push


d. func1:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 12
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C if ((a > 0) && (b < a)) {...},
suponiendo que las variables a y b (de tipo int) estn asignadas a los registros r0 y
r1, respectivamente?
Trieu una resposta.

a. cmp r0, #0 / ble .Lif / cmp r1, r0 / bge .Lif / b .Lfinif / .Lif: / / .Lfinif:


b. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lif / b .Lfinif / .Lif: / / .Lfinif:


c. cmp r0, #0 / ble .Lfinif / cmp r1, r0 / bge .Lfinif / / .Lfinif:


d. cmp r0, #0 / ble .Lif / cmp r1, r0 / bge .Lfinif / b .Lfinif / .Lif: / / .Lfinif:

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 13
Punts: 1
Cmo se traduce a lenguaje mquina la instruccin en C b += a*2;, suponiendo que
las variables a y b (de tipo int) estn asignados a los registros r0 y r1,
respectivamente?
Trieu una resposta.

a. mov r0, lsl #1 / add r1, r0


b. add r1, r0, lsl #1


c. mov r0, lsl #2 / add r1, r0


d. mov r2, #2 / mul r0, r0, r2 / add r1, r0

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 14
Punts: 1
Cmo se traduce a lenguaje mquina la estructura en C i = 0; while (i < 10) {...},
suponiendo que la variable i (de tipo unsigned int) se asigne al registro r0?
Trieu una resposta.

a. mov r0, #0 / .Lwhile: / cmp r0, #10 / blo .Lfinwhile / / b .Lwhile /
.Lfinwhile:

b. mov r0, #0 / .Lwhile: / / cmp r0, #10 / blo .Lwhile


c. mov r0, #0 / .Lwhile: / cmp r0, #10 / bhs .Lfinwhile / / b .Lwhile /
.Lfinwhile:

d. mov r0, #0 / .Lwhile: / / cmp r0, #10 / bhs .Lwhile

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 15
Punts: 1
Cmo se traduce a lenguaje mquina el acceso en C v[i] = 0;, suponiendo el vector
v es de tipo char, que i est cargada en r0 y que la direccin base del vector est
cargada en r1?
Trieu una resposta.

a. mov r2, #0 / ldr r2, [r1, r0]


b. mov r2, #0 / str r2, [r1, r0]


c. mov r2, #0 / ldrb r2, [r1, r0]


d. mov r2, #0 / strb r2, [r1, r0]

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 16
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la lnea if (*a < 10) *c = a; si suponemos que el primer
parmetro se pasa por el registro r0 y el segundo parmetro por r1?
Trieu una resposta.

a. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r1, #a


b. cmp r0, #10 / bge .Lelse / mov r1, #a


c. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / mov r3, #a / strb r3, [r1]


d. ldr r2, [r0] / cmp r2, #10 / bge .Lelse / ldrb r3, [r1] / mov r3, #a

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 17
Punts: 1
A partir de la siguiente funcin implementada en C:

Cmo se implementa la instruccin suma += matriz[j][i]; si suponemos que los
parmetros se pasan por los r0 y r1, mientras que las variables locales i, j, suma se
implementan en los registros r2, r3 y r4, respectivamente?
Trieu una resposta.

a. add r6, r2, r3, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5


b. add r6, r2, r3, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


c. add r6, r3, r2, lsl #4 / ldr r5, [r0, r6, lsl #2] / add r4, r5


d. add r6, r3, r2, lsl #2 / ldr r5, [r0, r6, lsl #2] / add r4, r5

Incorrecta
Punts d'aquesta tramesa: 0/1.
Question 18
Punts: 1
Cmo se traduce a lenguaje mquina la llamada en C func1(a, &b);, suponiendo que
las variables a y b son de tipo int, y que el primer parmetro se pasa por valor y por
r0, mientras que el segundo parmetro se pasa por referencia y por r1?
Trieu una resposta.

a. ldr r0, =a / ldr r1, =b / ldr r1, [r1] / bl func1


b. ldr r0, =a / ldr r0, [r0] / ldr r1, =b / bl func1


c. ldr r0, a / ldr r1, =b / bl func1


d. ldr r0, =a / ldr r1, =b / ldr r1, [r0] / bl func1

Incorrecta
Punts d'aquesta tramesa: 0/1.

Você também pode gostar