福岡工業大学,情報工学部,情報システム工学科

ロボットで学ぶコンピュータのしくみ


講師:
木 室 義 彦

(プロフィールは,↑ココをクリック)



●目標

移動ロボットとコンピュータの外見は,全然違いますが,その本質は,同じものです.
ロボットプログラミングとアセンブラプログラミングを一気に体験することで, コンピュータシステムの本質に迫ります.
時間内に終わらない場合は,第2回,第3回の講義に参加して下さい.
このウェブページに書いた以外に,ラジコンカーを使った実験ネタなども あります.

●教材

●実習
  1. 移動ロボット研究の紹介
  2. ロボットと周りの環境を整備すると,ロボットを安全に安心して動かせる. 研究の詳細は, 木室のウェブページで.

  3. 移動ロボット P!MOTでプログラミング
  4. CPUシミュレータで,最新のコンピュータアーキテクチャを学習
  5. CPUシミュレータ を,別ウィンドウで起動

    1. 算術演算 ( 足し算)
    2. データメモリの 0番地の値と 1番地の値を足して,結果をデータメモリの 2番地に 保存するプログラムを作りましょう.
      [プログラムメモリ]
      0: A ← [0  ]  レジスタ Aに 0番地のデータを入れる
      1: B ← [1  ]  レジスタ Bに 1番地のデータを入れる
      2: +           2つのレジスタの値を足す (結果は,レジスタA)
      3: A → [2  ]  レジスタAの値を 2番地に保存
      
      [データメモリ]
      0: [5        ]
      1: [3        ]
      2: [0        ]
      
      命令実行のサイクル:
      P0: プログラムカウンタ(実行番地)を進める
      P1: 命令を読み,解読する
      P2: 制御信号を出す
      P3: 命令を実行する
      
    3. 算術演算 ( 引き算)
    4. 足し算のプログラムを 1ヶ所修整して,引き算を行うプログラムを作ってみよう

    5. 課題: 算術演算 (2倍)

    6. 課題: カウンター ( 計数器)

    7. 足し算のプログラムを 2ヶ所変えて,実行するたびに1ずつ増えるカウンターを 作ろう.
      [プログラムメモリ]
      自分で考えよう
      
      [データメモリ]
      0: 0
      1: 1
      
    8. 制御命令(ジャンプ)

    9. 自動的にカウントアップしていくプログラムを作ろう.
      [プログラムメモリ]
      0:
      1:  カウンター(足す1)のプログラム
      2:
      3:
      4: JUMP >0  [0    ]
      
      質問: さて,このプログラムは,どのように動くでしょうか? ちゃんと止まるでしょうか?
      質問: このプログラムは,一工夫すると,約2倍,速く動くようにできます.さて, その方法は?
      質問: ラーメンタイマー ( 3分計るキッチンタイマー)を作るには?

    10. 出力命令

    11. 自動カウンターのプログラムの JUMP 命令の直前に,出力命令 OUT を 入れると何が起きるかを調べる.
      [プログラムメモリ]     カウンター(足す1)のプログラム
      0: A ←   [0     ]
      1: B ←   [1     ]
      2: +
      3: A →   [0     ]
      4: OUT    [0     ]
      5: JUMP>0 [0     ]
      
    12. 発展課題:有限回数の繰り返し

    13. 1から10までの総和を求めるプログラムを作る.
      [プログラムメモリ]
      
      (自作する)
      
      [データメモリ]
      
      0: [10      ]    繰り返しの回数.
      1: [0       ]    総和を保存する場所
      2: [1       ]    繰り返し回数から引く数
      

  6. まとめ
  7. 発展課題その2
    ・絶対値を求めるプログラム
    ・掛け算のプログラム
    ・割り算のプログラム
    ・最大値探索のプログラム
    ・フィボナッチ数列を求めるプログラム

その他の講義資料