INSERT: MACRO(ra,rb) add r2,r0,r0 ;Se inicia a cero r2, que indica el desplazamiento ld r3,ra,r2 ;sobre los punteros ra y rb para realizar la st r3,rb,r2 ;transferencia y es el contador de palabras add r2,r2,4 ;a transferir (expresado en bytes). cmp r3,r2,60 ;Se incrementa el desplazamiento para acceder a la bb0 2,r3,-4 ;siguiente palabra y si el contador no ha llegado ENDMACRO ;a 60 (15 palabras) se pasa a la siguiente palabra ;a transferir. or r6,r0,low(ALUMNOS) ;puntero a ALUMNOS. or.u r6,r6,high(ALUMNOS) or r16,r0,low(APROBADOS) ;puntero a APROBADOS. or.u r16,r16,high(APROBADOS) OTRO: ld r5,r6,0 ;Se comprueba si se ha recorrido cmp r3,r5,0 ;toda la lista. bb1 2,r3,FIN ld r10,r6,52 ;r10 contiene nota de ActaJ. cmp r3,r10,0x53 bb1 2,r3,SIGUE ;Si "S" pasa al siguiente. cmp r3,r10,0x50 bb1 2,r3,SIGUE ;Si "P" pasa al siguiente INSERT(r6,r16) ;si no, es que esta aprobado. add r16,r16,60 ;r16 apunta al siguiente alumno y st r0,r16,0 ;se incluye el codigo de fin de lista. or r8,r6,r0 ;r8 es puntero auxiliar de escritura BORRAR: add r9,r8,60 ;para el borrado y r9 de lectura. INSERT(r9,r8) ;r7 contador de traslaciones. add r8,r8,60 ;r9 puntero de lectura. ld r3,r8,0 cmp r3,r3,0 bb0 2,r3,BORRAR br OTRO SIGUE: add r6,r6,60 ;Se incrementa el puntero a ALUMNOS br OTRO ;para acceder al siguiente. FIN: stop ;Definición de la tabla de ALUMNOS org 10000 ALUMNOS: data 0xa, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 0x53, 0 data 0xb, 2, 2, 2, 2, 2, 2, 2, 2, 8, 8, 8, 8, 0x37, 0 data 0xc, 3, 3, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 0x4d, 0 data 0xd, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 0x50, 0 data 0xe, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0x50, 0 data 0xf, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 0x36, 0 data 0x1a, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 3, 3, 0x53, 0 data 0 ;Inicialización de la tabla de APROBADOS org 11000 APROBADOS: data 0