LOC Data_Segment GREG @ poly TETRA 10,20 Polygon mit 5 Punkten TETRA 20,20 TETRA 30,15 TETRA 20,10 TETRA 10,20 n OCTA (@-poly)/8 Gesamtzahl der Punkte i IS $0 length IS $1 base IS $2 limit IS $3 tmp IS $4 LOC #100 Main SET i,0 SET length,0 LDO limit,n Indizierung beginnt bei 0! SUB limit,limit,1 JMP test loop 8ADDU $6,base,i Adresse des $i$-ten Punktes ADD i,i,1 8ADDU $7,base,i Adresse des n"achsten Punktes PUSHJ $5,Punkt:abstand ADD length,length,$5 test CMP tmp,i,limit BN tmp,loop TRAP 0,Halt,0 hier ist {\tt length} L"ange des Polygons. $*$ Unterprogramm zur Abstandsberechnung PREFIX Punkt: x IS 0 Offset der $x$-Koordinate y IS 4 Offset der $y$-Koordinate pA IS $0 Zeiger auf Punkt A pB IS $1 Zeiger auf Punkt B dx IS $2 \relax $x$-Abstand dy IS $3 \relax $y$-Abstand d IS $4 Abstand tmp IS $5 abstand LDT dx,pA,x lade $x$-Wert von A LDT tmp,pB,x lade $x$-Wert von B SUB dx,dx,tmp LDT dy,pA,y lade $y$-Wert von A LDT tmp,pB,y lade $y$-Wert von B SUB dy,dy,tmp MUL d,dx,dx MUL tmp,dy,dy ADD d,d,tmp FLOT tmp,d FSQRT tmp,tmp FIX $0,tmp Ergebnis $\sqrt{(A_x -B_x)^2 + (A_y -B_y)^2}$ POP 1,0