Programa 3 Programa que suma tres números en las posiciones de memoria 01A0 y 01A1 y 01A2, y pone el resultado en la posición de memoria 01A3. LLI rD,A0 LHI rD,01 LD r0,[0] LD r1,[1] LD r2,[2] ADDS r3,r1,r0 ADDS r3,r2,r3 ST [3],r3 Programa 4 Lee un valor de teclado y si es mayor o igual que cero pone un 1 en el registro r2, y si no, pone un 0. El programa está en memoria a partir de la dirección 03E7. 03E7: IN r2, IP1 ; Lee desde teclado en r2 03E8: LLI r0, 00 03E9: ADDS r2, r2, r0 ; Pone r0 a 0 ; Activa los bits de estado para el valor en r2 (para el salto condicional) 03EA: LLI rD,D1 03EB: LHI rD,03 03EC: BS ; Pone H’03D1 en rD (dirección de la instrucción ‘LLI r2, 00’) ; Salta a ‘LLI r2, 00’ (pone 0 en r2) si S=1 (el número es negativo) 03ED: LLI r2,01 ; Pone un 1 en r2 (si S=0, es decir, si el número no es negativo) 03EE: LLI rD,D2 03EF: LHI rD, 03 03D0: BR ; Salta a H’03D2 (fin del programa) [Si no, ejecutaría la siguiente instrucción] 03D1: LLI r2, 00 ; Pone un 0 en r2 (si S=1, es decir, si el número es negativo) 03D2: HALT Programa 5 Como el programa 4, pero poniendo un 0 en r2 si el número leído es distinto de 0, y poniendo un 1 en r2 si el número es igual a 0. 03E7: IN r2, IP1 ; Lee desde teclado en r2 03E8: LLI r0, 00 03E9: ADDS r2, r2, r0 ; Pone r0 a 0 ; Activa los bits de estado para el valor en r2 (para el salto condicional) 03EA: LLI rD,D1 03EB: LHI rD,03 03EC: BZ ; Pone H’03D1 en rD (dirección de la instrucción ‘LLI r2, 00’) ; Salta a ‘LLI r2, 01’ (pone 1 en r2) si Z=1 (el número es cero) 03ED: LLI r2,00 ; Pone un 0 en r2 (si Z=1, es decir, si el número no cero) 03EE: LLI rD,D2 03EF: LHI rD, 03 03D0: BR ; Salta a H’03D2 (fin del programa) [Si no, ejecutaría la siguiente instrucción] 03D1: LLI r2, 01 ; Pone un 0 en r2 (si S=1, es decir, si el número es negativo) 03D2: HALT