1aa4051d926b399928683f158d46692a396a8976
[calu.git] / 2_isa / src / palindrom.s
1 ; palindrom checker
2
3 ; r1 = str addr
4 ; r2 = str len (u8)
5
6         ldis r0, 0
7         cmpi r2, 0
8         ldiszsd r0, 1
9         retzs           ; return 1 if strlen = 0
10
11         add  r4, r1, r2 ; set r4 to end address
12         subi r4, r4, 1
13
14         cmp  r1, r4     ; if strlen = 1 return 1
15         brancheq- end
16
17 schleife:
18
19         ldb  r5, 0(r1)
20         ldb  r6, 0(r4)
21
22         cmp  r5, r6
23         retnq           ; return 0 when palindrom not satisfied
24
25         addi r1, r1, 1
26         subi r4, r4, 1
27
28         cmp  r1, r4
29
30         branchlt+ schleife
31
32 end:
33
34         ldi  r0, 1
35         ret