PUSH: MACRO (ra) subu r30,r30,4 st ra,r30,0 ENDMACRO POP: MACRO (ra) ld ra,r30,0 addu r30,r30,4 ENDMACRO LEA: MACRO (ra, eti) ;Carga el registro ra con el or ra, r0, low(eti) ;valor de la etiqueta eti. or.u ra,ra,high(eti) ENDMACRO COMPARA: PUSH (r1) ;Se guarda la dirección de retorno PUSH (r31) ;y el puntero de marco de pila. or r31,r30,r0 ;Se crea el marco de pila. ld.d r24,r31,8 ;r24 y r25 contienen a Op1. ld.d r26,r31,16 ;r26 y r27 contienen a Op2. cmp r29,r24,r26 ;Se compara la parte alta de cada bb0 eq,r29,FinCmp;número y si son iguales cmp r29,r25,r27 ;se compara la parte baja. FinCmp: or r30,r31,r0 ;Restaura el puntero de pila. POP (r31) ;Recupera el puntero de marco de POP (r1) ;y la dirección de retorno. jmp (r1) ;Vuelve al llamante. BUSCAR_ELEMENTO: PUSH (r1) ;Se guarda la dirección de retorno PUSH (r31) ;y el puntero de marco de pila. or r31,r30,r0 ;Se crea el marco de pila. ld.d r14,r31,8 ;r14 y r15 contienen el elemento a ld r13,r31,16 ;buscar y r13 contiene el parámetro Busca: ld r16,r13,0 ;Arbol. r16 es el puntero al nodo, cmp r20,r16,0 ;si es 0, fin del arbol y no está. bb1 eq,r20,No_Esta ld.d r17,r16,0 ;Cargamos elemento raíz del nodo. PUSH (r17) ;Apila valor nodo (high y low), PUSH (r18) ;ordenados en modo little Endian. PUSH (r14) ;Apila Elemento (high). PUSH (r15) ;Apila Elemento (low). bsr COMPARA ;Comparamos Elemento y raíz. POP (r0) ;Desapila Argumentos. POP (r0) POP (r0) POP (r0) bb1 8,r29,mayor ;Elemento>raiz (8=hi). bb1 10,r29,menor ;Elemento