Problema 1 · Fonaments d'Informàtica UAB 2021

Tema: Programació en llenguatge màquina i traducció des de C · Del examen Examen Fonaments d'Informàtica - Curs 2021-2022 (2021)

Enunciado

Problema 1 (1 punt). Traducció de C a assemblador

Donat el fragment de codi següent en llenguatge C:

#define N 1000

int i, A[N], B[N], C[N];

...

for ( i = 1; i < N; i++)

if ( A[i] < B[i]) { C[i] = A[i]; }

else { C[i] = B[i]; }

Escriviu el fragment equivalent en llenguatge màquina / assemblador sabent que la base de C[1] se situa a l'adreça 1000, B[1] a l'adreça 2000 i A[1] a l'adreça 3000. Podeu emprar un registre índex X per gestionar l'índex i.

Enunciado: Problema 1 · Fonaments d'Informàtica UAB 2021

Solución

Según los criterios oficiales de corrección

Escriviu el fragment equivalent en llenguatge màquina / assemblador sabent que la base de C[1] se situa a l'adreça 1000, B[1] a l'adreça 2000 i A[1] a l'adreça 3000. Podeu emprar un registre índex X per gestionar l'índex i.

Solución: ```c MOV X, #1 ; i = 1 for: CMP X, #1000 ; Compara i amb 1000 BOZ finfor ; Si i == 1000, surt del bucle (branca si zero) MOV RPG, 3000(X) ; RPG = A[i] CMP RPG, 2000(X) ; Compara A[i] amb B[i] BNN else ; Si A[i] >= B[i] (no negatiu), salta a 'else' MOV 1000(X), RPG ; C[i] = A[i] JMP fifor else: MOV RPG, 2000(X) ; RPG = B[i] MOV 1000(X), RPG ; C[i] = B[i] fifor: INC X ; i++ JMP for finfor: seguir ; Continua l'execució ```

La explicación paso a paso, hecha con IA, es Premium. Premium

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

‹ Problema 1 · 2021 · Problema 1 · 2018 ›

Más ejercicios de Programació en llenguatge màquina i traducció des de C