someone like you 2

新しい方

プログラムの書式

プログラムの書式
 HELP から プログラムが #C00以降に保存されることがわかる
 プログラムは どのような形式で保存されるのだろうか
 そこで プログラムの保存書式を調べるプログラムをつくる

10 'ABCD
20 '1234
30 FOR J=0 TO 21
40 D=PEEK(#C00+J)
45 PRINT HEX$(#C000+J);" ";
50 PRINT D;" ";
60 IF D<10 THEN ?" ";
70 IF D<32 THEN D=32
80 PRINT CHR$(D)
90 NEXT

 実行結果

f:id:nearbridge2:20190625131413j:plain:w300

       
  プログラムの実行結果

C000 10 行番号(2進法 下8桁)
C001 0 行番号( 2進法 上8桁)
C002 6 文字数
C003 39 '
C004 65 A
C005 66 B
C006 67 C
C007 68 D
C008 0 文字数調整
C009 0 行末
C00A 20 行番号( 2進法 下8桁)
C00B 0 行番号( 2進法 上8桁)
C00C 6 文字数
C00D 39 '
C00E 49 1
C00F 50 2
C010 51 3
C011 52 4
C012 0 文字数調整
C013 0 行末
C014 30 行番号( 2進法 下8桁)
C015 0 行番号( 2進法 上8桁)


行番号を変えてみると

255 'ABCD
265 '1234
275 FOR J=0 TO 21
285 D=PEEK(#C00+J)
295 PRINT HEX$(#C000+J);" ";
305 PRINT D;" ";
315 IF D<10 THEN ?" ";
325 IF D<32 THEN D=32
335 PRINT CHR$(D)
345 NEXT
       
 
 プログラムの実行結果

f:id:nearbridge2:20190703090915j:plain:w300

C000 255 行番号(2進法 下8桁)
C001 0 行番号(2進法 上8桁)
C002 6
C003 39 '
C004 65 A
C005 66 B
C006 67 C
C007 68 D
C008 0
C009 0
C00A 9 行番号(2進法 下8桁)
C00B 1 行番号( 2進法 上8桁)
C00C 6
C00D 39 '
C00E 49 1
C00F 50 2
C010 51 3
C011 52 4
C012 0
C013 0
C014 19 行番号(2進法 下8桁)
C015 1 行番号(2進法 上8桁)

行番号255が 255 , 0 なのは 理解できる
行番号265が 9 , 1 なのは どういうことだろうか

PRINT BIN$(265,16) を実行すると 00000001 00001001 である
00000001 は10進法で 1 00001001 は 10進法で 9

265 の行番号は 16ビットのCで表される
下位の8ビットは #C00A に 10進法で書き込まれる
上位の8ビットは #C00B に 10進法で書き込まれる 

この記法は 16ビットのデータを 8ビットのメモリ2つで表すのに
下位の 8 ビットを先に書いている
この記法を 「リトル・エンデアン」 という 
リトル・インデアン と思っていたら 違う 正しくは Little endian