アセンブラプログラミング演習 2012度 「ガイダンス&第一回講義録」 情報科学科 早藤 貴範 自己紹介 担当教授: 早藤 貴範(はやふじよしのり) 専門分野: 計算科学、半導体物理、材料設計、 経 歴 :ソニー(株) 中央研究所 30年 関西学院大学 理工学部 13年 連 絡 先: 079-565-8591 内線8559 メール&HPアドレス: [email protected] http://ist.ksc.kwansei.ac.jp/~hayafuji/ cgi-bin/wiki/wiki.cgi 関西学院大学 一人ひとりのキャリア・プラン 皆さんは、第三次産業革命の真っ只中!! 皆さん一人ひとりが大きなライフワークを!! 社会で何をし、何で寄与をするか、早い決断をする事 1年生:自分を見つめ、将来を考え、決断をする時! 2年生:キャリア・プランを作る時 3年生:キャリア・プランの第一歩を踏み出す時 4年生:専門家への第一歩を踏み出す時 Only One or No.1の存在に!! セールス・ポイントが重要 関西学院大学 授業の進め方と成績評価 授業 ・講義 3回(3コマ) と 演習10回(10コマ) ・課題レポート 3種類 X 約5問 =約15問 各種類毎に、締切日までに提出 成績評価 レポート点 + 出席点 +授業に取り組む姿勢 教科書・参考文献 ・澤田晃著:「CASLⅡによるプログラムの作り方」 (共立出版、2001) ・浅川毅著: 「PICアセンブラ入門」(東京電機大学出版局、2001) 関西学院大学 受講上の 諸注意 “時”の厳守 *授業開始5分後に、出席を取ります *レポート提出日時の厳守(減点対象) 演習の重視 *出席点とレポート点を成績評価の基準にする *レポートは自分の言葉で書く ・共同作業は結構、各自のオリジナル・レポートを提出! 資源の有効活用 *教育技術主事、TAの方々にご相談を!一人で悩まない! *演習室の有効活用を!(自習⇒自主学習の勧め) 関西学院大学 講義録と演習ノートの公開 アドレス http://ist.ksc.kwansei.ac.jp /~hayafuji/cgi-bin/wiki/wiki.cgi 関西学院大学 講義の目的 講義目的 *コンピュータの動作機構の理解 *アセンブリ言語(機械語)のプログラムの実行機構の理解 *機械語やアセンブリ言語によるプログラミング *高級言語プログラムの実行機構の理解 *国家試験への対応 講義内容 *簡単な構造のコンピュータ(COMET,PIC)により、 *機械語やアセンブリ言語によるプログラムを作成し、 *シミュレータによるプログラムの実行・デバッグを学ぶ 関西学院大学 授業内容(1) 回 月日 1 9.24 2 10.01 3 10.08 4 5 6 7 10.15 10.22 10.29 11.12 講義内容 概説・コンピュータとアセンブラの基礎 COMETの動作とCASLの仕様 CASLプログラムの作成と シミュレータでの実行 CASLプログラミング(Ⅰ) CASLプログラミング(Ⅱ) (STEP1) CASLプログラミング(Ⅲ) CASLプログラミング (Ⅳ) 関西学院大学 授業内容(2) 回 月日 8 11.19 講義内容 CG講義 9 11.26 CGプログラミング(Ⅰ) 10 12.03 CGプログラミング(Ⅱ) 11 12.10 CGプログラミング(Ⅲ) 12 12.17 CGプログラミング(Ⅳ) 13 CGプログラミング(Ⅴ) 1.07 (STEP2) (STEP3) 関西学院大学 スケジュール表(アセンブラプログラミング演習:2012秋学期) 9月 24 COMET&CASLⅡ講義 10月 1 08 15 22 29 Step 1 11月 12 12月 3 1月 10 19 CG講義 26 Step 2(終了時) 10 Step 3 17 補講演習 Step nはレポートの提出日 参考図書およびソフトウエア ーCASLⅡとシミュレーター 参考図書 *澤田晃著 (共立出版、2001年(第二版)) 「CASLⅡによるプログラムに作り方」 *浅川毅著 (東京電機大学出版局、2001年) 「PICアセンブラ入門」 シミュレータ *(株)ソフトボート 「合格CASLⅡ」 関西学院大学 教科書 関西学院大学 情報科学実験 第一回講義(2012.9.24) 1.アセンブラ言語CASLⅡ *CASLⅡについて 2. シミュレータCOMET *COMETの仕組み 3. アセンブラ言語CASLⅡの命令と使用規則 *34個の命令(機械語命令+マクロ命令+アセンブラ命令) 4. アセンブラ言語CASLⅡのプログラミングの基礎 *アルゴリズム 5. アセンブラ言語CASLⅡのプログラミングの応用 *メモリ操作 関西学院大学 コンピュータの基本原理 全ての演算は2進数の加法で実行。減算は補数の加算、 乗算は加算の繰り返し、除算は減算の繰り返し 全て=数学問題、言語表現、音声・映像表現 補数=コンピュータで扱う負の数 アルゴリズムの発見=コンピュータアーキテクチャーの基礎 複雑な問題を単純な加算問題に置き換える計算手順 データ構造、線形計画法、組み合わせ最適化問題 計算可能性の問題、計算爆発の見極めの問題 有限時間で計算可能かどうかの問題 関西学院大学 コンピュータの演算の基本原理 <0>と<1>の2進数の加算のみが演算の原理 乗算は加算の繰り返し、 減算は補数の加算、除算は減算の繰り返し 0+0=0 0+1=1 1+0=1 1+1=1(桁上がり) 4ビットCPUの場合 3T + 5T = 8T 0011Y 3T +0101Y 5T 1000Y 8T 電子回路のスイッチ作用を利用 関西学院大学 機械語とは?? *機械語: ・数に意味を持たせた数語 数字そのものの絶対的な意味はなく、数字そのものに、 割り当てられた意味を持たせた言語 *人間がコンピュータ制御のために創作した命令語 *機械語に用いる数値 ・8ビット(1バイト)の範囲の数値とその組み合わせ 最大256種類のマシン語とその組み合わせ(機種に依存) ・16進数(4ビット)の2桁で表示 *ニーモニックは機械語と完全に一対一対応しているので、 ニーモニックも機械語と呼ばれる 関西学院大学 機械語とアセンブラ言語 ー その対応関係 ー 行番号 番地 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 0000 0002 0004 0006 0008 000A 000B 000D 000F 0011 0013 0014 0015 コード 機械語 1200 1100 1210 4010 6500 1401 2000 1100 1211 6400 8100 ラベル REIIB 0000 0014 0001 0015 LOOP 0013 0014 0014 0001 0006 OWARI ANS C5 (p.9) 命令 オペランド アセンブラ言語 START LAD GR0,0 ST GR0,ANS LAD GR1,1 CPA GR1,C5 JPL OWARI LD GR0,GR1 ADDA GR0,ANS ST GR0,ANS LAD GR1,1,GR1 JUMP LOOP RET DS 1 DC 5 END 関西学院大学 アセンブラ言語による学習(1) キーボード マウス 人 機械語( 0と1) のみ理解 入力装置 出力装置 CPU 言語変換ソフト CRT プリンタ 人 言語変換ソフト 高水準言語プログラム コンパイラ言語 (FORTRAN,C) コンパイラ インタプリタ言語 (BASIC) インタプリタ ===機械語 アセンブラ言語プログラム アセンブラ 人間の理解できる言語 CPUの理解できる言語 言語変換 関西学院大学 コンピュータの基本構成 ーCOMETⅡ・ ノイマン型コンピューター CPU 制御装置 算術・論理 演算装置 入力装置 一次記憶装置 出力装置 二次記憶装置 関西学院大学 CPUへの命令の表し方 1. コンピュータへの命令 (instruction) *命令語(機械語)の形で主記憶装置に保存 2. 命令語の表現 *コンピュータが理解できる2進コードの機械語 (machine language)で記述 3. 機械語からアセンブリ言語(assembly language)へ *人間が理解し易い言語への移行 ADD=20 *アセンブリ言語=ニーモニック・コード *機械語 1対1対応 アセンブリ言語 ADD = 20 SUB = 21 LD = 14 4. 機械語から高水準言語(high level language)へ 関西学院大学 CASLⅡで実行 -A+B=C- EXAM START BEGIN BEGIN LD GR1, A ADD GR1, B ST GR1, C RET A DC #000C B DC #001A C DS 1 END A=12 B=26 ⇒ プログラムの実行終了 ⇒ A DC 0012 ⇒ B DC 0026 関西学院大学 アセンブラ言語による学習(2) CPUは2進の原理で動作している 機械語は2進数の形式で書かれた言語でコンピュータ が理解できる言語。“1”と“0”による言語(数値列) 機械語によるプログラムから機械語と1対1に対応した 人の理解できる言語によるプログラミングへ アセンブラ言語によるプログラミング ニーモニック(文字形式の略号)の利用 ニーモニックの機械語への変換は CASLⅡアセンブラが行う 関西学院大学 アセンブラ言語CASLⅡ(1) ー言語の位置付けー プログラム言語(プログラムを書くための言語)の発達 機械語 アセンブラ言語 高水準言語 機械語 machine language *コンピュータのCPUが実行可能な命令体系 アセンブラ(リ)言語 assembly language *コンピュータへの気配り 機械語に1対1に対応 *人間への気配り 表意記号mnemonic codeの利用 高水準言語 high level language *自然言語( 人工言語)に近いプログラミング言語 関西学院大学 アセンブラ言語CASLⅡ(2) ー言語の位置付け(2)ー コンピュータの動作機構の理解 *アセンブラ言語 機械語に1対1対応 *機械語 ハードウエアの動作に1対1対応 アセンブラ言語のコンピュータ依存性 アルゴリズムの理解 *少数・単純な命令語で構成するプログラミング技法 国家試験への対応 *アセンブラ言語は、選択、または必修科目 *コンピュータ依存性を吸収したアセンブラ言語 ・国家試験用の架空コンピュータ COMET ・COMET用のアセンブラ言語 CASL 関西学院大学 機械語とアセンブラ言語 ー その対応関係 ー 機械語 *コンピュータのCPUが実行可能な命令体系 *0と1の2進数(又は対応する16進数)の命令 *ハードウエアの動作と1対1に対応 コンピュータ依存性 アセンブラ(リ)言語 *コンピュータへの気配り 機械語に1対1に対応 *人間への気配り 表意記号mnemonic codeの利用 *機械語(機械語の組)やアドレス(記憶の番地)を 「CPUの動作を連想させるような英数字列」で表した言語 機械語とアセンブラ言語の対応(p.9) 関西学院大学 機械語とアセンブラ言語 ー その対応関係 ー 行番号 番地 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 0000 0002 0004 0006 0008 000A 000B 000D 000F 0011 0013 0014 0015 コード 機械語 1200 1100 1210 4010 6500 1401 2000 1100 1211 6400 8100 ラベル REIIB 0000 0014 0001 0015 LOOP 0013 0014 0014 0001 0006 OWARI ANS C5 (p.9) 命令 オペランド アセンブラ言語 START LAD GR0,0 ST GR0,ANS LAD GR1,1 CPA GR1,C5 JPL OWARI LD GR0,GR1 ADDA GR0,ANS ST GR0,ANS LAD GR1,1,GR1 JUMP LOOP RET DS 1 DC 5 END 関西学院大学 機械語の命令語の構成 行番号 番地 5: 6: 7: 8: 9: 10: 0006 0008 000A 000B 000D 000F コード ラベル 機械語 4010 0015 LOOP 6500 0013 1401 2000 0014 1100 0014 1211 0001 命令 オペランド アセンブラ言語 CPA GR1,C5 JPL OWARI LD GR0,GR1 ADDA GR0,ANS ST GR0,ANS LAD GR1,1,GR1 (16進表示) アドレス部 指標レジスタ部 汎用レジスタ部 命令コード部(OP) プログラムとデータの記憶場所のアドレス 関西学院大学 アセンブラ言語と高水準言語 5 ANS =∑i の値を求める I=1 “ 始め 1+2+3+4+5 ANS 終り 始め I=1 (A)→GR0 GR0+B→GR0 GR0+C→GR0 高水準言語 GR0+D→GR0 流れ図 GR0+E→GR0 GR0→ANS 終り アセンブラ言語 流れ図 INTEGER I, ANS C ANS = 0 DO 100 I = 1 , 10 ANS = ANS + I 100 CONTINUE C STOP END 高水準言語 プログラム (p.2) REIIB START LD GR0, A ADDA GR0, B ADDA GR0, C ADDA GR0, D ADDA GR0, E ST GR0, ANS RET ANS DS 1 A DC 1 B DC 2 C DC 3 D DC 4 E DC 5 END アセンブラ言語 プログラム 関西学院大学 アセンブラ言語から高水準言語へ -翻訳プログラム原始プログラム source program アセンブラ言語 Assembler language トランスレータ translater アセンブラ assembler 目的プログラム object program 高水準言語 high level language コンパイラ compiler インタプリタ interpreter 機 械 語 machine language 関西学院大学 アセンブラ言語の実用性 ー特徴とその価値ー 省資源 *高水準言語の場合、多量の記憶領域が必要 ・機械語への翻訳ソフトや翻訳前後のプログラムの記憶 *アセンブラ言語の場合、少量の記憶領域で充分 高速処理 *高水準言語の場合、機械語への相当の翻訳時間が必要 *アセンブラ言語の場合、機械語への変換は短時間で可能 *大容量のメモリの使用が困難な時 : ・安価な家電製品の制御用 *高速演算処理を必要とする時 : ・測定器や自動車の高速制御機器用 関西学院大学 CASLⅡの命令語 ー36種類の命令アセンブラ命令 4種類 *アセンブラの制御命令 ・プログラムの先頭と終了の指示命令 ・領域の確保と定数の定義 機械語命令 28種類 *実行命令 マクロ命令 4種類 *一連の命令群を1つの命令に置き換えた命令 ・入出力命令と退避・復元命令 関西学院大学 ☹ プログラムの入力練習 (テキストp.3) 1.スタート → すべてのプログラム → 合格CASLⅡ → 編集モード 2. [編集][無題]の画面の表示 ・CASLⅡの編集画面 → 編集ウインド 3. I 型カーソルの点滅状態で、p.3の 図1.3 を入力 4.ファイルから、名前をつけて保存をクリック 5.[実行]をクリックし、[アセンブル]をクリック。エラー? 5. TRACE、REG、DUMPをこの順にクリック 6. [トレース ツールバー]のSTEPを順次クリックし、 レジスタとメモリーの数値の変化を観察する 関西学院大学 コーディングの形式と注意事項(1) -ラベルと注釈- 行番号 ラベル 命令コード オペランド 注釈 001 REL1A START ;プログラムの始め 002 LAD GR0, 0 ;0を汎用レジスタに入れる ラベル ・命令のアドレスを記号化したもの(記号アドレス) ・START命令のラベルはサブルーチンの名前にもなる ・他の命令のラベルは記憶領域の先頭アドレス(ENDはラベルなし) 注釈と注釈行 ・命令の記述行の途中のセミコロン(;):それ以降は注釈 ・セミコロン(;)以前に記述がない場合、その行は注釈行 関西学院大学 プログラム作成上の注意事項(2) 1命令:1命令行に記述 行番号:3桁で書く(本来、不要)。 ラベル: ・先頭文字は英大文字、8文字以内の英大文字か数字 ・START命令には必ずラベルが必要、END命令には不要 命令コード: ・命令行では、先頭から命令コードを書く ・ラベルがある場合、ラベルの後に、1つ以上の空白を置く オペランド: ・命令コードの後に、 1つ以上の空白を置く ・最大桁数は、16桁+空白1桁の計17桁 関西学院大学 プログラムの例 ーアセンブラの命令形式ー 行番号 ラベル 命令コード オペランド 010 020 030 040 050 060 070 080 090 100 110 120 130 140 150 160 REL1A LOOP START LAD ST LAD CPA JPL LD ADDA ST LAD JUMP OWARI RET ANS DS C5 DC END GR0, 0 GR0, ANS GR1, 1 GR1, C5 OWARI GR0, GR1 GR0, ANS GR0, ANS GR1,1 GR1 LOOP 1 5 注釈 ;プログラムの始め ;0を汎用レジスタに入れる ;GR0の内容をANSに格納する ;1を汎用レジスタ1に入れる ;この1行を注釈行にする ;GR1(=1)とC5(=5)を算術比較する ;GR1>C5の時、ラベルOWARIへ行く ;GR1の内容をGR0に移す ;ANSとGR0を累計し、GR0に置く ;累計結果をANSに格納する ;Iを1増やす(データと制御変数を兼) ;ラベルLOOPへジャンプする ;プログラムの終了 ;1語の領域の確保、ANSと呼ぶ ;1語の領域に5を設定、C5と呼ぶ ;プログラムの終わり 関西学院大学 機械語命令の内部表現 ーワード・マシーンー 行番号 番地 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 0000 0002 0004 0006 0008 000A 000B 000D 000F 0011 0013 0014 0015 コード 機械語 1200 1100 1210 4010 6500 1401 2000 1100 1211 6400 8100 ラベル REIIB 0000 0014 0001 0015 LOOP 0013 0014 0014 0001 0006 OWARI ANS C5 命令 オペランド アセンブラ言語 START LAD GR0,0 ST GR0,ANS LAD GR1,1 CPA GR1,C5 JPL OWARI LD GR0,GR1 ADDA GR0,ANS ST GR0,ANS LAD GR1,1,GR1 JUMP LOOP RET DS 1 DC 5 END 関西学院大学 機械語命令の内部表現の確認(1) ー機械語コードとアセンブラ言語の対応ー アセンブラ命令は機械語命令に翻訳されていない。 ・START、END、DC、DSの機械語はない。 ・START、ENDは記憶領域に格納されないので、番地がない。 ・DCとDSは格納領域の先頭アドレスの0015と0014を示すラ ベルC5とANS(記号アドレス)を持つ アドレス修飾がない ので、0が入る 0000番地:1200 0000 0番地の0 LAD GRO、0 LADの機械語 (p.113) 関西学院大学 機械語命令の内部表現の確認(2) ー機械語コードとアセンブラ言語の対応ー アドレス修飾がない ので、0が入る 0002番地: 1100 0014 ANSは絶対アドレスの記号アドレス ST GR0,ANS STの機械語 (p.113) 000A番地: 1401 LDの機械語 (p.113) LD GR0,GR1 機械語命令の内部表現の確認(3) ー機械語コードとアセンブラ言語の対応ー 指標レジスタGR1によるア ドレス修飾1が入る アドレスは1なので、0001が入る アドレス1に0001が入っていることの確認 000F番地: 1211 0001 LAD GR1, 1, GR1 指標レジスタ LADの機械語 (p.113) LOOPは絶対アドレス0006 の記号アドレス 0011番地: 6400 0006 JUMPの機械語 (p.113) JUMP LOOP 機械語の命令語の構成(1) 行番号 番地 5: 6: 7: 8: 9: 10: 0006 0008 000A 000B 000D 000F コード ラベル 機械語 4010 0015 LOOP 6500 0013 1401 2000 0014 1100 0014 1211 0001 命令 オペランド アセンブラ言語 CPA GR1,C5 JPL OWARI LD GR0,GR1 ADDA GR0,ANS ST GR0,ANS LAD GR1,1,GR1 (16進表示) アドレス部 指標レジスタ部 汎用レジスタ部 命令コード部(OP) 注:順番が逆 プログラムとデータの記憶場所のアドレス 関西学院大学 機械語の命令語の構成(2) 行番号 番地 5: 0006 6: 0008 7: 000A 8: 000B 9: 000D 10: 000F 機械語 コード 4010 0015 6500 0013 1401 2000 0014 1100 0014 1211 0001 16進表示 12345678 1234 1234 1234567890123456 命令コード部 汎用レジ指標レジ スタ部 スタ部 OP r/r1 X/r2 第1語 アドレス部 adr 第2語 関西学院大学 命令語の詳細 12345678 1234 1234 1234567890123456 第1語(1ワード) 命令コード部 汎用レジ指標レジ スタ部 スタ部 OP r/r1 X/r2 12 機械語命令 が入る 1 1 第2語(1ワード) アドレス部 adr 0001 X : 2語長命令の時、指標レジスタ 汎用レジスタ番号 1~7 指標レジスタ不使用の時、0 r2 : 1語長命令の時、汎用レジスタ 汎用レジスタ番号 0~7 汎用レジスタ(GR0~GR7) の番号(0~7)が入る r : 2語長命令の場合 r1:1語長命令の場合 2語長の時のみ使用、 アドレス(16ビット)が入る 関西学院大学 CASLⅡ命令の誤り例(p.12) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 0000 0002 0004 0006 0008 000A 000B 000D 000F 0011 0013 0014 0015 1200 1100 1210 4010 6500 1401 2000 1100 1211 6400 8100 REIIB 0000 0014 0001 0015 LOOP 0013 0014 0014 ST 0001 0006 OWARI ANS CPA START LAD ST LAD CPA JPL LD ADDA ST LAD JUMP RET DS DC END KAISHI,GR0 GR0,0 0 GR0,AMS GR1,1 GR1,C5 OWARI GR0,GR1 GR0,ANS GR0,ANS GR1,1,GR1,GR1 LOOP 1 5 赤字部分が誤り箇所 関西学院大学 アセンブル後の注意 命令語長は、1語長もしくは2語長である。 1語又は2語長命令は、1又は2の記憶領域に格納される。 従って、記憶の番地は、1又は2づつ増加する。 KAISHI:ラベルとして正しい。LADの前に、KAISHIを入れる。 GR0:予約語のGR0~GR7はラベルに使用できない。(p.6) 0 :空白と0は誤り。,0もダメ。指標レジスタ名が必要。 AMS:プログラム中にこのラベル名が無い。ANSの誤り。 C5 :プログラム中にこのラベル名が無い。CPAの誤り。 ラベル名に命令語(算術比較命令)は使えない。 ST :ラベル名に命令語(算術比較命令)は使えない。 GR1:オペランドは3つしか取れない。 関西学院大学 ノイマン型コンピュータの根幹 「プログラム内蔵」と「逐次演算処理」 機械語 アセンブラ言語 高水準言語 アセンブラ コンパイラ 1. メモリへのプログラム、データの記憶・内蔵 ・プログラムもデータも全て2進数で同じ扱い ・アドレシング=主記憶装置上の実行番地 2. メモリからプログラム、データの取り出しと2進数演算 ・レジスタ、データバス、ALU、CPU 3. メモリへのプログラム、データの戻しと記憶 関西学院大学 コンピュータの基本構成 ーCOMETⅡー CPU 制御装置 算術・論理 演算装置 入力装置 一次記憶装置 出力装置 二次記憶装置 関西学院大学 COMETⅡ ☹ ーCASLⅡ用のハード・ウエアー ノイマン型架空コンピュータ : 国家試験用 *ノイマン型の実コンピュータの基本機能を有する *2大基本方式 ・プログラム内臓(記憶)方式 ・逐次制御(実行)方式 仕様 *16ビット(2バイト)マシーン=1ワード・マシーン *記憶容量 65536語(64K語) 0000~FFFF 関西学院大学 情報の2値表現(1) 2進数表示法(binary notation)の導入 全ての状態を、“0”状態と“1”状態の2つの状態で表す 1. 物理的には、閾値(threshold)で“0”と“1”を区別する *雑音に強い *エラーが極めて少ない *エラーの補正が可能 2. 閾値には種々の物理量が用いられている *電子回路のスイッチの“ON”と“OFF” *微小磁区の“N”と“S”、 *幾何学的な凹と凸 *光の反射率の差異(大小) *コンデンサー内の電荷の有無 関西学院大学 情報の2値表現(2) 1.(整)数値の2進数表示 *2n + 2n-1 + 2n-2 +・・・+ 21 + 20 + 2-1 + 2-2 + 2-3 +・・・ *32962 = 215 + 27 + 26 + 21 *16進数表示(ディスプレー上の可視化を容易にするため) 2.文字列の2進数表示(p.21) *数字、英字、カタカナ、その他の記号:8ビット(1バイト) *ひらがな、漢字:16ビット(2バイト) 3.論理値の2進数表示 *真(true)を”1”、および 偽(false)を”0”に対応 4.音声と画像の2進数表示 関西学院大学 ☹ 2進数の16進数への変換(p.33) *進数表示 2進数 10進数 16進数 一般的な場合 CASLⅡ・PICの場合 B (binary number) b B D (decimal number) n D H (hexa decimal number) h H *CRTディスプレーの表示方法 ・2進数の0と1の羅列の数字では扱いに不便 ・16進数で表示 : 0~15 を 0~9 と A~F で表現 *練習 1. 2進数10110100111001bを16進数と10進数で表現しなさい。 *練習 2. ABCDhを2進数に変換しなさい。 *練習 3. 16進数 2D39hを10進数に変換しなさい。 =2x163+13x162+3x16+9=11577n *練習 4. 2進数 1010 1011 1100 1101bを16進数に変換しなさい 関西学院大学 ☹ 整数の表し方 N = anan-1an-2・・・・a2a1a0r = anrn+an-1rn-1+an-2rn-2・・・・a2r2+a1r1+a0r0 N :与えられた整数 r :与えられた数体系の位の基になる数=基数 ・2進法:r=B=Y=2 ・10進法:r=D=T=10 ・16進法:r=H=16 〔例〕 1101b = 1×23 + 1×22 + 0×21 + 1×20 13n = 1×101 + 3×100 関西学院大学 ☹ 整数の変換方式 * 2進数 10進数 1101b = 1×23 + 1×22 + 0×21 + 1×20 = 13n 1101b = {(1×2+1)×2+0 }×2 + 1 =13n * 10進数 2進数 13 6 3 1 0 ÷2 余り 1 0 1 1 関西学院大学 小数の表し方 N = 0.a-1a-2a-3・・・・a-(n-1)a-nr = a-1r-1+a-2r-2+a-3r-3・・・・a-(n-1)r-(n-1)+a-nr-n N :与えられた整数 r : 与えられた数体系の位の基になる数=基数 2進数 : r = b = Y = 2 10進数 : r = n = T = 10 16進数 : r = h = H = 16 〔例〕 0.25n = 2×10-1 + 5×10-2 0.01b = 0×2-1 + 1×2-2 = 0.25n 関西学院大学 小数の変換方法(1) *2進数 10進数 0.101b = 1×2-1 + 0×2-2 + 1×2-3n= 0.625n * 0. 1 0 1b 0. a b c b + + ÷2 + + ÷2 0.5 c/2 ÷2 ÷2 0.25 (b+c/2)/2 ÷2 ÷2 0.625n {a(b+c/2)/2}/2=a/21+b/22+c/23n 関西学院大学 小数の変換方法(2) *10進数 2進数 ×2 ×2 ×2 0.6875n 0.375 0.75 0.5 0.6875n -1 1×2-1 -0 -1 ×2 0.0 -1 b 0×2-2 1×2-3 1×2-4 関西学院大学 循環小数の変換誤差(2進数の課題) 10進数を2進数に変換すると循環小数になり 有限桁では変換誤差が生じる場合がある ×2 0.6T ×2 0.2 ×2 0.4 1 0 ×2 0.8 ×2 0.6 0.2 0 1 1 0.6n = 0.1001 1001 1001 1001 1001 1001・・・・b 関西学院大学 ☹ 論理数と算術数 ー正数と負数ー 論理数 *符号のない数値 *16ビットの2進数 0~216-1 : 0~65535 算術数 * <0~32767>を<正の数> *<32768~65535>を<負の数ー32768~ー1> ・この<負の数>を「2の補数」という * <負の数ー32768~ー1>の2進数表示では、 先頭ビット(MSB 第15ビット=符号ビット)が1になる。 関西学院大学 ☹ 2進数の<負の数> (1) コンピュータで<負の数>を扱うための工夫として 通常、“2の補数”という概念を用いる。 *今、16ビットのCPUを考え、 FFFFh+0001hを実行する。 FFFFh + 0001 h 1 0000 h *1を加えて0になる数FFFFは16ビットCPUで、“-1”とみなす。 ・16ビットCPUでは、FFFFを超える数は扱えない。 関西学院大学 ☹ 2進数の<負の数> (2) *表現する数値の桁数を制限(定義)することが重要 *数値の先頭の桁(MSB : Most Significant Bit) が1の時、負の数 0の時、正の数 ・その桁数で表せる数値の上半分を負の数、下半分を正の数として扱う *n桁の2進数Nの“2の補数”は、次式で表される 2n-N (=負数-N) (例) 8桁の数値3の補数 1 0 0 0 0 0 0 0 0 -0000 0011 1111 1101 FDh = -3h F D 2n = 28 3h -3h FDh 関西学院大学 ☹ 2進数の<負の数>(3) *負の数、2の補数の作り方(2) ・Nの全ビットを反転させ、+1を加えると2の補数とな る ∵2n – N = { ( 2n – 1 )- N } + 1 N = 3の時 全ビットの反転 1111 1111 2n-1 -0000 0011 N(3) 1111 1100 + 0000 0001 +1 1111 1101 -3 関西学院大学 ☹ 2進数の<負の数>(4) 4ビット構成のCPUで扱える数は +1から+15、あるいは、+7から-8の数 0 1 (1) 2 (2) 3 (3) 4 (4) 5 (5) 6 (6) 7 (7) 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 5 (F) 1 4 (E) 1 3 (D) 1 2 (C) 1 1 (B) 1 0 (A) 9 (9) 8 (8) 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 -1 -2 -3 -4 -5 -6 -7 -8 関西学院大学 ☹ 16ビットの“2の補数表現” *16ビットの“2の補数”表現の範囲(For CPU with 16bits) 10進数 -32768 -32767 -32766 -2 -1 0 1 2 32766 32767 2の補数 16進数 1000 0000 0000 0000Y 1000 0000 0000 0001Y 1000 0000 0000 0010Y 1111 1111 1111 1110Y 1111 1111 1111 1111Y 0000 0000 0000 0000Y 0000 0000 0000 0001Y 0000 0000 0000 0010Y 0111 1111 1111 1110Y 0111 1111 1111 1111Y 8000H 8001H 8002H FFFEH FFFFH 0000H 0001H 0002H 7FFEH 7FFFH 関西学院大学 小数の補数表現 nビットの2進数の小数Nの2に対する補数X nビットの少数:小数点以下n桁の少数 X = 2-N X = 10.-0.abcd・・・ n桁 10. 2T - 0 . 1011 N 1. 0101 2の補数 関西学院大学 ☹ COMETⅡの情報表現 ー数値データー 数値表示 * CPU内部 : 2進数表現 * ディスプレー : 16進数表現 *負数 : 2の補数表現 関西学院大学 ☹ COMETⅡの情報表現 ー文字データー 文字データはJIS情報交換用8ビット符号(p.21) *JIS X0201 ラテン文字・片仮名用8ビット符号表で 規定する符号 練習問題:自分の名前を文字データで表現しなさい ハヤフジ CAD4CCBC(DE) チェック: *カタカタの濁音、平仮名、漢字のコードは? *COMETⅡでは、平仮名や漢字は扱えないのか? 関西学院大学 ☹ 英数字・カタカナのJISコード Mastery for Service A=0100 0001 ハ=CA 関西学院大学 コンピュータの基本構成 ーCOMETⅡー CPU 制御装置 算術・論理 演算装置 入力装置 一次記憶装置 出力装置 二次記憶装置 関西学院大学 ☹ COMETⅡ ーCASLⅡ用のハード・ウエアー ノイマン型架空コンピュータ : 国家試験用 *ノイマン型の実コンピュータの基本機能を有する *2大基本方式 ・プログラム内臓(記憶)方式 ・逐次制御(実行)方式 仕様 *CPU ・16ビット(2バイト)マシーン=1ワード・マシーン *主記憶装置 ・記憶容量 65536語(64K語) 0000~FFFF *HDはなし 関西学院大学 ☹ プログラムの入力練習 (テキストp.3) 1.スタート → すべてのプログラム → 合格CASLⅡ → 編集モード 2. [編集][無題]の画面の表示 ・CASLⅡの編集画面 → 編集ウインド 3. I 型カーソルの点滅状態で、p.3の 図1.3 を入力 4.ファイルから、名前をつけて保存をクリック 5.[実行]をクリックし、[アセンブル]をクリック。エラー? 5. TRACE、REG、DUMPをこの順にクリック 6. [トレース ツールバー]のSTEPを順次クリックし、 レジスタとメモリーの数値の変化を観察する 関西学院大学 ☹ CASLⅡで実行 -1+2+3+4+5=15- REI1B START LD ADDA ADDA ADDA ADDA ST RET ANS DS A DC B DC C DC D DC E DC END GR0, A GR0, B GR0, C GR0, D GR0, E GR0, ANS 1 1 2 3 4 5 1.TRACE ウインドウで、 REGとDUMPをクリック 2.レジスタとメモリの領域を モニターに表示 3.STEPのクリックを繰り返し、 命令を逐次実行 4.レジスタとメモリの値の 変化を確認 関西学院大学 ☹ 主記憶装置とアドレス(1) ー記憶場所ー 1語16ビット 主記憶装置の記憶場所の指定 *絶対アドレス:1語(16ビット)毎の計算機内固有の番地 *相対アドレス:基準アドレスからの差で表された番地 絶対アドレス 0 1 2 3 ・ ・ n ・ ・ ・ 65535 主記憶装置 0000 0001 0002 0003 ・ ・ 000n ・ ・ ・ 変位(指標レ ジスタの値) ・ ・ -2(FFFE) -1(FFFF) 0(0000) 1(0001) 2(0002) ・ ・ FFFF 関西学院大学 ☹ 主記憶装置の主機能 プログラムとデータは記憶装置に格納される 記憶装置のモデル ・ ・ ・ A+B→C 記憶装置のアド レス(番地) ↓ 記号アドレス A B C 12 26 38 ・ ・ 200 201 202 プログラムは記憶装置に格納 203 204 205 206 計算データも記憶装置に格納 207 演算結果も記憶装置に格納 208 209 絶対アドレス 関西学院大学 主記憶装置とアドレス(2) ーアドレスの指定ー 実効アドレスとアドレス修飾 { 9: 000D 1100 0014 ST GR0,ANS 00010001 0000 0000 0000000000010100 実効アドレス GR0の内容をANSの場所=実効アドレス0014に格納する LAD GR1,1,GR1 { 10: 000F 1211 0001 00010010 0001 0001 0000000000000001 相対アドレス + 基準アドレス = 実効アドレス LAD命令の特徴 GR1の値に相当する記憶場所(基準アドレス 0001)の値に相対アドレスの 値を加算(アドレス修飾)した値を実行アドレスとし、アドレスそのものをGR1 に格納する GR1=カウンター 相対アドレス=インクリメント 関西学院大学 ☹ CPUの基本構造と動作 主記憶装置 CPU 制御回路 ① 番地の指定 制 御 部 プログラムカウンタ ② 命令フェッチ 命令レジスタ アドレスレジスタ 解読 ④ 番地の指定 インデクスレジスタ 演 算 部 演算レジスタA ⑤ データフェッチ 演算レジスタB ⑧ 結果の記憶 ⑥ 演算 (実行) 演算器 (ALU) ⑦ 演算結果 ・ ・ ・ ・ ・ 番地 N 命令 (語) N+1 命令 (語) N+2 命令 (語) ・ ・ ・ ・ ・ ・ ・ N+3 データ N+α データ N+β データ N+γ データ N+δ 関西学院大学 CPUの基本操作 プログラムカウンタ 4DA8 ①番地指定 命令レジスタ ②命令フェッチ 命令 1 2030A3FB ③解読 デコーダ ⑥演算 命令 2 ④番地指定 データ 1 制御信号 FD42CA96 ⑤データフェッチ ・ ・ ・ ・ データ X データ X+1 56D8 演算レジスタ 命令 3 ⑦格納 ・ ・ ・ ・ 関西学院大学 ☹ レジスタ ー制御装置用の小規模記憶装置ー COMETⅡには4種類のレジスタ 1.プログラムレジスタ(PR) 16ビット *実行中の命令語を格納している記憶場所の先頭アドレス *命令実行後、 n ⇐ n + 1(1語長) or n + 2(2語長) 2.汎用レジスタ(GR(r、r1、r2) *汎用レジスタ GR0~GR7 16ビット 演算用 *指標レジスタ GR1~GR7 16ビット アドレス修飾用 3.スタックポインタ(SP) *スタックの最上段アドレスの保持 16ビット 4.フラグレジスタ(FR) 3ビット *各1ビットのOF、SF、ZF の3個のビットで形成 関西学院大学 ☹ レジスタの主機能 演算はレジスタで実行される ・ ・ ・ 例:A+B=C A+B→C ① レ ジ ス タ 26 12 ③ 12+26 レジスタ GR1 ② A B C 12 26 38 ④ ・ ・ 演算は3ステップで実行 200 201 202 203 204 205 206 207 208 209 ① A番地の値12をレジスタへ LD GR1、A ②③B番地の値26をレジスタ の内容に加える ADD GR1、B ④ レジスタの内容38をC番地 に格納する ST GR1、C 主記憶装置 関西学院大学 関西学院大学 関西学院大学
© Copyright 2024 ExpyDoc