コンピュータアーキテクチャ 第 3 回.

Slides:



Advertisements
Similar presentations
計算機システムⅡ 主記憶装置とALU,レジスタの制御
Advertisements

ファーストイヤー・セミナーⅡ 第8回 データの入力.
数値計算及び実習 第3回 プログラミングの基礎(1).
Ibaraki Univ. Dept of Electrical & Electronic Eng.
テープ(メモリ)と状態で何をするか決める
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第2週目
2012年度 計算機システム演習 第4回 白幡 晃一.
App. A アセンブラ、リンカ、 SPIMシミュレータ
2006年度 計算機システム演習 第4回 2005年5月19日.
計算機システムⅡ 命令セットアーキテクチャ
プログラムはなぜ動くのか.
計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央).
補数 n:桁数、b:基数 bの補数 bn-x 253(10進数)の10の補数は、 =747
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
中島 克人 プロセッサと機械語 2年次前期 (第1回) 中島 克人
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
情報の授業 サイバースペースに飛び込もう  - CPU/機械語と二進数 – ・コンピュータはどうして動くの ・CPUの構造とプログラム ・どうして二進数を勉強するの 映画やアニメで近未来のサイバースペースを扱っているものは、何か1と0がいっぱいある画面が出てきませんか。実はこの0と1だけがコンピュータの中の世界にあるものです。
計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章
計算機構成 第2回 ALUと組み合わせ回路の記述
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 7 回.
コンピュータアーキテクチャ 第 7 回.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
コンピュータアーキテクチャ 第 11 回.
コンピュータアーキテクチャ 第 10 回.
OSが管理している、デフォルトの入出力装置 入力:stdin キーボード 出力:stdout モニタ(コマンドプロンプトの画面)
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
ディジタル回路 9. 演算回路 五島 正裕.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
コンピュータアーキテクチャ 第 9 回.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 3 回.
プログラミング入門 電卓を作ろう・パートI!!.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 11 回.
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
情報処理Ⅱ 第2回 2004年10月12日(火).
JavaScript    プログラミング入門 2-3 式と演算子 2006/10/12 神津 健太.
printf・scanf・変数・四則演算
6.3 インタプリタ (1)インタプリタ(interpreter)とは
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
6.5 最終コード生成 (1)コードの形式 ①絶対2進コード(AB : absolute binary) 命令後のオペランドが絶対番地指定。
Presentation transcript:

コンピュータアーキテクチャ 第 3 回

オブジェクトプログラムの略記 ソースプログラム ラベル   ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC 20 DATA2 DC 12 RESULT DS 1 END オブジェクトプログラム ↓      ↓      ↓ #1000: #1050 #1007 #1002: #2050 #1008 #1004: #1150 #1009 #1006: #8100 #1007: #0014 #1008: #000C #1009: #0000 アドレス: 機械語の第1語 機械語の第2語 ソースプログラムとオブジェクトプログラムを対比し易くするため,2ワード命令の第2語を第1語のあとに付けアドレスを省略

比較演算命令 CPA GR2, #1000 ・・・ (ComPare Arithmetic) レジスタ間命令 メモリ・レジスタ間命令 の両方あり CPA GR2, #1000 ・・・ (ComPare Arithmetic) CPL GR2, #1000 ・・・ (ComPare Logical) 第1オペランドの値と 第2オペランドの値を 比較 第1 < 第2 なら SF は 1 第1 = 第2 なら ZF は 1 * 比較演算命令 実行時は 常に OF は 0 #000A < #0014

分岐命令 フラグレジスタ FR の値によってプログラムレジスタ PR へ実効アドレスをわたす * 正分岐 JPL adr[,X] ・・・ (Jump on PLus) 負分岐 JMI adr[,X] ・・・ (Jump on MInus) 非零分岐 JNZ adr[,X] ・・・ (Jump on Non Zero) 零分岐  JZE adr[,X] ・・・ (Jump on ZEro) オーバフロー分岐 JOV adr[,X] ・・・ (Jump on OVerflow) 無条件分岐 JUMP adr[,X] ・・・ (Unconditional JUMP) 分岐命令によってフラグレジスタは変化しない

分岐条件(フラグレジスタ) OF SF ZF JPL 0 &  0 JMI 1 JNZ 0 JZE 1 JOV 1

1 から 10 の整数の総和を計算し GR0 へ格納する

CASLⅡ のエミュレーションソフト CaslBuilder ・・・ フリーウェア CASL2000 ・・・ フリーウェア COMETⅡ, CASLⅡを理解するために強く推奨! Windows7, 10 等で動作 ⇒ http://www.vector.co.jp/soft/win95/prog/se059919.html Mac OS でもインストール可能 ⇒ http://mikuinstaller.sourceforge.jp/ CASL2000 ・・・ フリーウェア Windows98, 2000, xp 等のうえで CASLⅡ の動作環境をエミュレーション CASLⅡシミュレータ ・・・ フリーウェア 情報処理技術者試験センター提供 Windows7 未対応

JIS 情報交換用符号(JIS X 0201) 例: ‘&’ = # 2 6 X 0201 では ‘3’ = # 3 3 ‘&’ = # 2 6 ‘3’ = # 3 3 ‘A’ = # 4 1 ↑↑        列行 ‘&’ = # 0 0 2 6 ‘3’ = # 0 0 3 3 ‘A’ = # 0 0 4 1 X 0201 では * 1 ワードの中では *

二つの数字を二つの数値に変換して それらの積を求める.

単語の中の特定文字数を数える アルファベットの順番が ‘n’ 以降のものが文字列中にいくつあるか? = #0063 = #006F = #006D = #0070 = #0075 = #0074 = #0065 = #0072

文字データの入出力 マクロ命令 IN, OUT を使用 パラメータ 命令書式 IN 入力領域,入力文字長領域   入力領域: 1 レコード =  の入力データ格納領域   入力文字長領域: を格納    出力領域: 1 レコードの出力データ格納領域   出力文字長領域:  を格納  命令書式     IN  入力領域,入力文字長領域     OUT  出力領域,出力文字長領域 * 256 ワード * 入力文字数 * 出力文字数

大文字と小文字の変換 標準入出力装置から 英字をひとつ読み, 大文字は小文字に, 小文字は大文字に 変換する

論理積・論理和・排他的論理和命令 AND GR2, #1000 ・・・ (AND) OR GR2, #1000 ・・・ (OR) XOR GR2, #1000 ・・・ (eXclusive OR) * レジスタ間命令 メモリ・レジスタ間命令 の両方あり AND, OR, XOR 命令 では OF は常に 0 13 13

演習問題 3.1 テキストの<プログラム 2>開始から終了までに,GR0 および GR1 の値がどのように変化するか順番に示せ.ただし,どちらかのレジスタが変化するごとにその直後の値を16進数で示すこと.

演習問題 3.2 テキスト pp.55-56 の演習問題 (8), (9), (10) のプログラムそれぞれの機能を説明せよ.

演習問題 3.3 名前 A でラベル付けされたメモリ領域の値から,名前 B でラベル付けされたメモリ領域の値をひいた値の絶対値を,名前 C でラベル付けされたメモリ領域に格納するプログラムを書きなさい.ただし,領域 A, B には適当な数値を入れておくこと.

演習問題 3.4 標準入出力装置から 4 個の数字を読み込み,4 桁の 10 進数とみなして汎用レジスタ GR2 へ格納するプログラムを示せ.ただし,数字の読み込みには,マクロ命 IN を使うこと.

演習問題 3.5 テキストの<プログラム 3>をアセンブルせよ.

演習問題 3.6 テキストの<プログラム 4>をアセンブルせよ.

シフト演算命令 算術シフト演算命令 * (算術シフト命令) 算術左シフト演算命令 論理シフト演算命令 * 算術右シフト演算命令 算術シフト演算命令 *  論理シフト演算命令           * (算術シフト命令) 算術左シフト演算命令 算術右シフト演算命令 (論理シフト命令) 論理左シフト演算命令 論理右シフト演算命令

算術左シフト演算命令 SLA GR0, 3 ・・・ (Shift Left Arithmetic) 実効アドレス値 * 実効アドレス値 だけ,レジスタの内容を 左へシフト 最上位の *はシフトしない レジスタの左側から送り出されたビットの値は *する OF にはレジスタから *送り出されたビットの値を入れる レジスタの右側の空いたビット位置には *を入れる 符号ビット 消失 最後に

SLA による 2 のべき乗倍 SLA GR1, 2 ・・・ (GR1) = 5 (5)10 (20)10

2 進数で値 4 を 5 倍する方法 4 * 5 = 4 * (4 + 1) = 4 * (22 + 20) = 4 * 22 + 4 * 20 4 = #0004 = (0000 0000 0000 0100)2 4 * 22 = (0000 0000 0001 0000)2 4 * 22 + 4 * 20 = (0000 0000 0001 0000)2 + (0000 0000 0000 0100)2 = (0000 0000 0001 0100)2 * ← 4 を 2 ビット左シフト ← 4 の シフトなしを加算 *

A の値を 5 倍して B へ格納するプログラム * ← GR1 の値を 22 倍 * ← GR1 に A の 20 倍を加算

正整数 A, B の積を計算する方法 A = a14 * 214 + a13 * 213 + ・・・ + a2 * 22 + a1 * 21 + a0 * 20 ← 16 ビット符号つき 2 進数 * B = b14 * 214 + b13 * 213 + ・・・ + b2 * 22 + b1 * 21 + b0 * 20 A * B = A * (b14 * 214 + b13 * 213 + ・・・ + b2 * 22 + b1 * 21 + b0 * 20) = b14 * A * 214 + b13 * A * 213 + ・・・ + b2 * A * 22 + b1 * A * 21 + b0 * A * 20 = b14 * A の 14 ビット左シフト + b13 * A の 13 ビット左シフト ・ + b2 * A の 2 ビット左シフト + b1 * A の 1 ビット左シフト + b0 * A の シフトなし

A の値を B 倍する プログラム ← GR1 をカウンタとして初期化 ← 結果を累積保存 * ← GR5 の第 0 ビットだけを 1 * ← B の第 i ビットを抽出 * ← 終了判定 (GR1 = 15 ?) ← GR5 を 1 ビット左シフト * ← GR6 を 2 倍

演習問題 3.7 前出の <プログラム 7 > の開始から終了までに GR7 の値がどのように変化するか順番に示せ.