Problema 3 - Màquina Senzilla: llenguatge màquina… · Estructura i tecnologia de computadors II UDG Juny
Tema: Màquina Senzilla: llenguatge màquina, programació i accessos a memòria · Del examen Juny
Enunciado
Problema 3.- Adreçament immediat a la Màquina Senzilla (MS1)
Es vol ampliar el repertori d'instruccions de la Màquina Senzilla bàsica (MS1) afegint-hi una instrucció que permeti escriure operands de forma immediata directament a una posició de memòria RAM. El valor immediat es troba codificat dins de la pròpia paraula d'instrucció.
La instrucció es defineix de la manera següent:
MOVIMM Imm, D: (D) ← 0^10 || Imm_5..0
Si (Imm == 0): FZ = 1
Altrament: FZ = 0 On Imm és un valor numèric sencer de 6 bits sense signe que es desa a l'adreça de memòria RAM indicada per D.
d)
Programeu en llenguatge màquina/assemblador de la MS1 el càlcul de l'expressió (amb valors enters estrictament positius ). Inicialitzeu els operands en el segment de dades mitjançant la nova instrucció MOVIMM amb els valors , i .

Solución
Según los criterios oficiales de corrección
d. Programeu en llenguatge màquina/assemblador de la MS1 el càlcul de l'expressió d = a · b · c (amb valors enters estrictament positius a, b, c > 0). Inicialitzeu els operands en el segment de dades mitjançant la nova instrucció MOVIMM amb els valors a = 4, b = 3 i c = 2.
Solución: ```pseudocode // Inicialització de variables en memòria amb MOVIMM: 0: MOVIMM 4, 100 # a = 4 a l'adreça 100 1: MOVIMM 3, 101 # b = 3 a l'adreça 101 2: MOVIMM 2, 102 # c = 2 a l'adreça 102 3: MOVIMM 0, 103 # d = 0 a l'adreça 103 (acumulador final) 4: MOVIMM 0, 104 # i = 0 a l'adreça 104 (comptador bucle) 5: MOVIMM 0, 105 # ab = 0 a l'adreça 105 (producte parcial a*b) 6: MOVIMM 1, 107 # constant 1 a l'adreça 107 // Bucle 1: Càlcul del producte ab = a * b mitjançant sumes successives Ini_ab: 7: CMP 101, 104 # Compara b amb i 8: BEQ Fi_ab # Si i == b, fi del primer bucle 9: ADD 100, 105 # ab = ab + a 10: ADD 107, 104 # i = i + 1 11: CMP 100, 100 # Condició sempre certa per saltar (FZ=1) 12: BEQ Ini_ab Fi_ab: 13: MOVIMM 0, 104 # Reinicialitza comptador i = 0 // Bucle 2: Càlcul de d = ab * c Ini_abc: 14: CMP 102, 104 # Compara c amb i 15: BEQ Fi_abc # Si i == c, final 16: ADD 105, 103 # d = d + ab 17: ADD 107, 104 # i = i + 1 18: CMP 100, 100 # FZ=1 per al salt incondicional 19: BEQ Ini_abc Fi_abc: 20: // El resultat final (d = 4 * 3 * 2 = 24) queda emmagatzemat a l'adreça 103 ```
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.
‹ Pregunta 16 · Exemples · Pregunta 14 · Juny ›