goo blog サービス終了のお知らせ 

真・女神転生imagine-JZ13(バックアップ)

Broachで投稿していた記事のバックアップです。

機械語からアセンブラ2

2010-07-04 16:47:57 | C言語教室での出来事
いよいよノートパソコンが届いてようやくプログラムへ。
…でも、開発ソフトが用意できてなくてwなぜかアセンブラ言語でのプログラムw
その時の先生はまだ若い人で「すいませんねー^^」と、あまり申し訳なさそうに謝ってましたw

アセンブラ言語、というのは、ゼロイチ(数字だけのプログラム=機械語)と、C言語などの高級言語(人間にも判りやすい文字列を使ったプログラム)との中間に位置するもの。
必要最低限のアルファベットを使って組みます。
そんなに複雑なことはできません。

最初に、それまで使っていた豆電球と電池、それにZ80というボードを取りつけて「ミニミニ信号機」を作りました。(むろん半田もつけたさ)
ちゃんと棒の先に電球3つつけて、色セロハンでくるんで作ったぉ♪
私はアホなので、画用紙に道路と横断歩道まで書いたぉ♪(わざわざ画用紙と色ペンを用意した先生も同罪だぉ♪)

その時の課題は
・車道側の信号機が赤の時、横断歩道側の信号機を青にする。
・横断歩道側の信号機が青から赤になる時、点滅させる。
・点滅してからn秒(任意)後に横断歩道側の信号機を赤に、車道側の信号機を青にする。
・車道側信号機が青になってn2秒(任意)後、車道側を黄色に。更にn3秒後、赤に変える。
以下繰り返し

(もし実際にやってみたいと思われる方がいらっしゃいましたら「大人の科学」についてくる付録を組み合わせることで体験できるようです。
私がやってた環境よりずっと整ってるじゃないかw)


さて、ここでフローチャート(ダイヤグラム)の登場です。
フローチャートとはどのように動かすか、という設計図のようなものです。
wikiより無断転載

この図はアセンブラとは書式が少し違うようですが、箱や線の書き方は同じです。
このフローを言葉に直すと

開始→nに1を代入→(ループ)nは10より大きい?
(YESならば)→終了
(NOならば)→sとnを足して結果をsに代入→nに1を足してnに代入→(ループ)に戻る

ということになります。
つまり、数字を1つづつ足して10にする、という計算を図にしたものです。
(しかし、実際にこんなプログラムの組み方したら先生に叱られると思われ。だって自分でフロー書くのめんどいんだもん)

こんな単純なプログラムなら必要ない物ですが、もっと複雑なプログラムを作りたい時、
また複数スタッフで開発したい時など、図で見て理解できるので簡単に情報を共有できます。

例えば上記の信号機プログラムをフローチャートに書くと
開始→全ての赤を点灯→(ループ)横断歩道を青にする→n0秒待つ→(点滅)に進む[ジャンプ]

(点滅)青を消灯→na秒後青を点灯→nb秒後、青を消灯→カウンタSに1足してSに代入(記述訂正しました)→カウンタがnc回か?→
(yes)→(次の工程)へ
(no)→(点滅)に戻る[ジャンプ]

(次の工程)→横断歩道の赤を点灯→道路の赤を消灯→道路の青を点灯→n2秒待つ→道路青を消灯→道路黄色を点灯→n3秒待つ→道路の赤を点灯→(ループ)に戻る[ジャンプ]<エンドレスリピート>

という感じです。
私は初心者なので、もっと効率のいい方法はあるかもしれませんが…。^^
まあ、概念はこんな感じってことで。

その図を参考にプログラムを組んでいきます。
概念はどのプログラムでも共通で、各言語で使う単語や文法が違うだけのことです。
(使う部品やソフトによっては出来ること/出来ないことが変わることもあるようですが)

近年では機械語やアセンブラを使ってプログラムを作ることは稀だとのこと。
ついでにコマンド(アセンブラ言語で使う単語)も忘れた(今の講座でまだ習ってない)ので、アセンブラを使ってのプログラム構成はまた後日で!ノシ



最新の画像もっと見る

2 コメント(10/1 コメント投稿終了予定)

コメント日が  古い順  |   新しい順
Unknown (tonn)
2010-07-05 13:13:22
アセン……すごくなが~い時間聞いたことないような。化石かぁ!
いや~、楽しいね。お話が^^
また、書いてね~w^^
返信する
Unknown (JZ13)
2010-07-05 17:42:31
にゃーす!講師の説明が判りにくすぎて、自分の復讐…いや復習も兼ねて記事にしております。
あのオヤジ、アセンブラのハナシしてるのに「これと同じで、でももっと高度なことをC言語でも出来まして、C言語だと○○というコマンドに…」とちょいちょい挟んでくるので混乱してしまって。^^
正直、テキストだけ持っといて授業に出ないほうが身のためかもしれんと思ってますw
返信する

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。
ブログ作成者から承認されるまでコメントは反映されません。