; Uvažme implicitně zadaný binární strom, jehož každý uzel je ; popsaný 16bitovým číslem bez znaménka. Je-li v registru ‹rv› číslo ; nějakého uzlu, podprogram ‹get_children› do registrů ‹l1› a ‹l2› ; uloží číslo levého a pravého potomka. Hodnota nula znamená, že ; příslušný potomek neexistuje. ; Vaším úkolem je napsat podprogram ‹find_depth›, který v registru ; ‹rv› obdrží číslo kořenového uzlu, a který zjistí maximální ; hloubku takto popsaného stromu. Výsledek uložte do registru ‹l6› a ; řízení vraťte volající funkci. ; Vaše řešení musí fungovat i v případě, že se konkrétní definice ; ‹get_children› změní (bude reprezentovat jiné stromy). Krom ; registrů ‹l1› a ‹l2› nejsou po volání ‹get_children› určeny ; hodnoty žádných dalších registrů. test: ld l7, data → rv add l7, 2 → l7 eq rv, 0xffff → t1 ; test-end marker jnz t1, test_done push l7 call find_depth pop l7 ld l7, data → t1 eq l6, t1 → t1 asrt t1 add l7, 2 → l7 jmp test .trigger set _tc_expect_ 4 .trigger inc _tc_ test_done: halt data: ; rv → l6 .word 13, 1 .word 5, 2 .word 2, 4 .word 1, 5 .word -1, 0 get_children: mul rv, 2 → l1 add l1, 1 → l2 ult l1, 8 → t1 ult l2, 23 → t2 mul l1, t1 → l1 mul l2, t2 → l2 ne l2, 7 → t1 mul l2, t1 → l2 ret solution: ; řešení pište za toto návěstí