DIMのところはN$という名前の配列をいくつ用意するかという意味でKCNTを使っています。なのでKCNTには18が入っているので18個の値が入るN$を用意している感じになります。 それに対してFORの方は実際にこのN$にREAD命令で読み込んできた値を入れているわけですが、この時は全ての箱に値を入れたいのでIで正解です。Iは0〜KCNT-1(つまり17)まで変化するので、N$[0],N$[1]...と次々に値を入れていく感じになるからです。(KCNTを-1しているのは配列は0から始まるからです) もしREADの部分のIをKCNTにしてしまったらREADで読み込んだ値をKCNTであるN$[18]に入れようとしてエラーになります。( 配列は0から始まるので宣言した値-1までしか利用できないので)