記事のディレクトリ
まず、実験の内容
1.実験
コンピュータ組成原則知識の統合利用、デザイン、より完全なコンピュータを実装します。
2.実験対象
モデルマシンは複雑なの原理を完全に理解して、自分のマシン命令とマイクロの製造は、複雑な式を使用してモデルヘレン・コンピューティングの目標を達成するために対応します。
3.実験装置
PCマシン、1台湾、TD-CMA実験システムセット。
第二に、実験的な原則
1)データフォーマット
機械モデルは、所定の固定小数点を使用補数表記データの語長が8ビットデータ全体を表すために使用される8ビット(最上位ビットがシンボルを表していない)であり、数値範囲で表される:0≦X≦ 8。 -1 。
2)設計命令
ヘレン式、必要に応じて指示に応じて、設計モデルは、3つのカテゴリが算術命令、制御転送命令、データ転送タイプ命令を含む15個のネイティブ命令がありました。
12月、SUB、OR、SARは、すべての操作がシングルバイトの命令クラスであり、ADD、AND:命令のクラスは、6つの演算命令で設計された3つの算術演算、算術演算、論理演算、シフト操作を、含まれている、あります、アドレッシングモードを使用すると、直接アドレス登録します。
制御転送命令は、HLT命令は単一バイト、ダブルバイトBZCとJMP命令である、三つのクラスHLT、JMP、BZC、及び制御プログラム分岐を転送するために有しています。
ロード命令は、シングルバイトの命令MOV命令に加えて、IN、OUT、MOV、LDI、LAD、6のSTAの合計は、レジスタとレジスタ、レジスタ、I / O、およびメモリ・レジスタ間のデータの交換を完了しなければなりません残りはダブルバイト命令です。
3)命令フォーマット
次のようにすべてのシングルバイト命令(ADD、AND、DEC、SUB、OR、SAR、HLT、およびMOV)形式は次のとおりです。
7 6 5 4 | 3 2 | 1 0 |
---|---|---|
OP-CODE | RS | RD |
ここで、OP-CODEオペコード、RSが提供するソース・レジスタ、RDのデスティネーションレジスタです。
RSまたはRD | 選択されたレジスタ |
---|---|
00 | R0 |
01 | R1 |
10 | R2 |
11 | R3 |
INとOUT命令形式は次のとおりです。
7 6 5 4(1) | 3 2(1) | 1 0(1) | 7-0(2) |
---|---|---|---|
OP-CODE | RS | RD | P |
括弧内の最初の1つのバイトは、命令を表す、命令は、第二のバイト2、OP-CODEオペコード、RSによって表されるソース・レジスタであり、デスティネーションレジスタがRDであり、Pは、I / Oポート番号、ワード占めセクション、図1(アドレスバスユニット)に示されたシステムのI / Oアドレスデコーダ原理。
概略デコーダ図1のI / Oアドレス
表1に示すように、デコードされたアドレスバスと最上位ビットので、I / Oアドレス空間は、4つの領域に分割されています。
表1 I / Oアドレス空間の割り当て
A7 A6 | 選択 | アドレス空間 |
---|---|---|
00 | IOY0 | 00-3F |
01 | IOY1 | 40-7F |
10 | IOY2 | 80-BF |
11 | IOY3 | C0-FF |
すなわち、即時、直接、間接、相対アドレッシングインデックスは、LDI命令は直ちに、LAD、STA、JMP命令、及びBZCは、直接的、間接的、および索引を相対アドレッシングが設けられてアドレス指定されるデータ、の5種類のアドレッシングシステム容量。
LDI命令フォーマット、上記と同じ内容の最初のバイト、第二のバイトリテラル。
7 6 5 4(1) | 3 2(1) | 1 0(1) | 7-0(2) |
---|---|---|---|
OP-CODE | RS | RD | データ |
LAD、STA、JMP命令の形式とBZC。
7 6 5 4(1) | 3 2(1) | 1 0(1) | 7-0(2) |
---|---|---|---|
OP-CODE | M | RD | データ |
Mは、アドレッシング・モードであることを特徴とする請求インデックスがRIにレジスタR2として、表2に詳述されています。
アドレッシングモード表2
モードMアドレッシング | E有効なアドレス | 説明 |
---|---|---|
00 | E = D | 直接アドレッシング |
01 | E =(D) | 間接アドレッシング |
10 | E =(RI)+ D | RIは、アドレス指定のインデックス化 |
11 | E =(PC)+ D | 相対アドレッシング |
4)命令
ターゲットヘロンの公式計算実験は、15のデザインは、基本命令の次の命令フォーマットは、アセンブリのシンボル、コマンド機能を含みます。
命令の説明表3
第三に、全体的なデザイン
図2に示すモデルマシンデータパスのブロック図。
データパスの2ブロック図
複数の命令、複数のアドレッシングモードを使用したモデルマシン・実験は、回路をデコード命令は、複雑な設計を必要とします。図3は、INS-DEC IRユニットで実現しました。
命令デコード図3概略
この実験4つの一般的なレジスタR3〜R0に使用するために、レジスタがREG_DECに実装レジスタデコード回路、(GAL16V8)IRユニット、などを有していて、この目的のために設計された命令の下位4ビットを介して選択されます図4は、図3に示します。
図4概略デコードレジスタ
機械命令の設計要件、図に示すように、マイクロプログラムフローの設計およびマイクロアドレスを決定します。
按照系统建议的微指令格式,见表4,参照微指令流程图,将每条微指令代码化,译成二进制代码表,如表5,并将二进制代码表转化为联机操作时的十六进制格式文件。
表4 微指令格式
图5 微指令流程图
表5 二进制码表
地址 | 十六进制表示 | 高五位 | S3-S0 | A字段 | B字段 | C字段 | UA5-UA0 |
---|---|---|---|---|---|---|---|
00 | 000001 | 00000 | 0000 | 000 | 000 | 000 | 000001 |
01 | 006D43 | 00000 | 0000 | 110 | 110 | 101 | 000011 |
03 | 107070 | 00010 | 0000 | 111 | 000 | 001 | 110000 |
04 | 002405 | 00000 | 0000 | 010 | 010 | 000 | 000101 |
05 | 04B201 | 00000 | 1001 | 011 | 001 | 000 | 000001 |
06 | 002407 | 00000 | 0000 | 010 | 010 | 000 | 000111 |
07 | 013201 | 00000 | 0010 | 011 | 001 | 000 | 000001 |
08 | 106009 | 00010 | 0000 | 110 | 000 | 000 | 001001 |
09 | 183001 | 00011 | 0000 | 011 | 000 | 000 | 000001 |
0A | 106010 | 00010 | 0000 | 110 | 000 | 000 | 010000 |
0B | 000001 | 00000 | 0000 | 000 | 000 | 000 | 000001 |
0C | 103001 | 00010 | 0000 | 011 | 000 | 000 | 000001 |
0D | 200601 | 00100 | 0000 | 000 | 011 | 000 | 000001 |
0E | 005341 | 00000 | 0000 | 101 | 001 | 101 | 000001 |
0F | 0000CB | 00000 | 0000 | 000 | 000 | 011 | 001011 |
10 | 280401 | 00101 | 0000 | 000 | 010 | 000 | 000001 |
11 | 103001 | 00010 | 0000 | 011 | 000 | 000 | 000001 |
12 | 063201 | 00000 | 1100 | 011 | 001 | 000 | 000001 |
13 | 002414 | 00000 | 0000 | 010 | 010 | 000 | 010100 |
14 | 05B201 | 00000 | 1011 | 011 | 001 | 000 | 000001 |
15 | 002416 | 00000 | 0000 | 010 | 010 | 000 | 010110 |
16 | 01B201 | 00000 | 0011 | 011 | 001 | 000 | 000001 |
17 | 002418 | 00000 | 0000 | 010 | 010 | 000 | 011000 |
18 | 033201 | 00000 | 0110 | 011 | 001 | 000 | 000001 |
1B | 005341 | 00000 | 0000 | 101 | 001 | 101 | 000001 |
1C | 10101D | 00010 | 0000 | 001 | 000 | 000 | 011101 |
1D | 10608C | 00010 | 0000 | 110 | 000 | 010 | 001100 |
1E | 10601F | 00010 | 0000 | 110 | 000 | 000 | 011111 |
1F | 101020 | 00010 | 0000 | 001 | 000 | 000 | 100000 |
20 | 10608C | 00010 | 0000 | 110 | 000 | 010 | 001100 |
28 | 101029 | 00010 | 0000 | 001 | 000 | 000 | 101001 |
29 | 00282A | 00000 | 0000 | 010 | 100 | 000 | 101010 |
2A | 04E22B | 00000 | 1001 | 110 | 001 | 000 | 101011 |
2B | 04928C | 00000 | 1001 | 001 | 001 | 010 | 001100 |
2C | 10102D | 00010 | 0000 | 001 | 000 | 000 | 101101 |
2D | 002C2E | 00000 | 0000 | 010 | 110 | 000 | 101110 |
2E | 04E22F | 00000 | 1001 | 110 | 001 | 000 | 101111 |
2F | 04928C | 00000 | 1001 | 001 | 001 | 010 | 001100 |
30 | 001604 | 00000 | 0000 | 001 | 011 | 000 | 000100 |
31 | 001606 | 00000 | 0000 | 001 | 011 | 000 | 000110 |
32 | 006D48 | 00000 | 0000 | 110 | 110 | 101 | 001000 |
33 | 006D4A | 00000 | 0000 | 110 | 110 | 101 | 001010 |
34 | 003401 | 00000 | 0000 | 011 | 010 | 000 | 000001 |
35 | 000035 | 00000 | 0000 | 000 | 000 | 000 | 110101 |
36 | 006D51 | 00000 | 0000 | 110 | 110 | 101 | 010001 |
37 | 001612 | 00000 | 0000 | 001 | 011 | 000 | 010010 |
38 | 001613 | 00000 | 0000 | 001 | 011 | 000 | 010011 |
39 | 001615 | 00000 | 0000 | 001 | 011 | 000 | 010101 |
3A | 001617 | 00000 | 0000 | 001 | 011 | 000 | 010111 |
3B | 000001 | 00000 | 0000 | 000 | 000 | 000 | 000001 |
3C | 006D5C | 00000 | 0000 | 110 | 110 | 101 | 011100 |
3D | 006D5E | 00000 | 0000 | 110 | 110 | 101 | 011110 |
3E | 006D68 | 00000 | 0000 | 110 | 110 | 101 | 101000 |
3F | 006D6C | 00000 | 0000 | 110 | 110 | 101 | 101100 |
根据实验计算海伦公式的目标,以及基于此设计的机器指令,在模型机实现以下运算:从IN单元读入三角形三边(要求输入三边一定能构成三角形),求此三角形的面积平方,将所求结果存于61H单元,机器指令流程图如图6。
图6 机器指令流程图
根据流程图设计表6程序,地址和内容均为二进制。
表6 机器指令程序
地址 | 内容 | 助记符 | 说明 |
---|---|---|---|
00000000 | 00100000 | IN R0,00H | 读入a |
00000001 | 00000000 | ||
00000010 | 00100001 | IN R1,00H | 读入b |
00000011 | 00000000 | ||
00000100 | 00100010 | IN R2,00H | 读入c |
00000101 | 00000000 | ||
00000110 | 11010000 | STA 60H,R0 | 将a存入60H |
00000111 | 01100000 | ||
00001000 | 00000100 | ADD R0,R1 | a+b存入R0 |
00001001 | 00001000 | ADD R0,R2 | a+b+c存入R0 |
00001010 | 01100011 | LDI R3,01H | 将1存入R3 |
00001011 | 00000001 | ||
00001100 | 10101100 | SAR R0,R3 | a+b+c向右移一位,R0=P |
00001101 | 01000011 | MOV R3,R0 | 将p移入R3 |
00001110 | 10000100 | SUB R0,R1 | R0=P-B |
00001111 | 01001101 | MOV R1,R3 | 将P存入R1 |
00010000 | 10001001 | SUB R1,R2 | P-C存入R1 |
00010001 | 01000010 | MOV R2,R0 | 将R0移入R2,作为乘数准备 |
00010010 | 01110001 | DEC R1 | 将另一个乘数减1,做好准备 |
00010011 | 11110000 | BZC RESULT | 判断 |
00010100 | 00011011 | ||
00010101 | 00001000 | LOOP:ADD R0,R2 | 开始乘法 |
00010110 | 01110001 | DEC R1 | |
00010111 | 11110000 | BZC RESULT | 判断 |
00011000 | 00011011 | ||
00011001 | 11100000 | JMP LOOP | 回到LOOP开始 |
00011010 | 00010101 | ||
00011011 | 01001101 | MOV R1,R3 | 将P存回R1 |
00011100 | 01110001 | DEC R1 | 将另一个乘数减1,做好准备 |
00011101 | 11110000 | BZC RESULT | 判断 |
00011110 | 00100110 | ||
00011111 | 01000010 | MOV R2,R0 | 将R0移入R2,作为乘数准备 |
00100000 | 00001000 | LOOP:ADD R0,R2 | 开始乘法 |
00100001 | 01110001 | DEC R1 | |
00100010 | 11110000 | BZC RESULT | 判断 |
00100011 | 00100110 | ||
00100100 | 11100000 | JMP LOOP | 回到LOOP开始 |
00100101 | 00100000 | ||
00100110 | 11000001 | LAD 00 R1,60H | 将a重新放入R1 |
00100111 | 01100000 | ||
00101000 | 10000111 | SUB R3,R1 | R3=P-A |
00101001 | 01001101 | MOV R1,R3 | R3->R1 |
00101010 | 01000010 | MOV R2,R0 | R0->R2 |
00101011 | 01110001 | DEC R1 | |
00101100 | 11110000 | BZC RESULT | 判断 |
00101101 | 00110100 | ||
00101110 | 00001000 | LOOP:ADD R0,R2 | 开始乘法 |
00101111 | 01110001 | DEC R1 | |
00110000 | 11110000 | BZC RESULT | 判断 |
00110001 | 00110100 | ||
00110010 | 11100000 | JMP LOOP | 回到LOOP开始 |
00110011 | 00101110 | ||
00110100 | 11010000 | STA 61H,R0 | 将所得结果存入61H |
00110101 | 01100001 | ||
00110110 | 00110000 | OUT 40H,R0 | 将所得结果输出 |
00110111 | 01000000 |
四、实验步骤
1. 按图6连接实验线路,仔细检查连线后打开实验箱电源。
图7 实验连线图
2. 写入实验程序,并进行校验。
联机软件提供了微程序和机器程序下载功能,以代替手动读写微程序和机器程序,但是微程序和机器程序得以指定的格式写入到以TXT为后缀的文件中,本次实验程序如下,程序中分号';'为注释符,分号后面的内容在下载时将被忽略掉。 TXT文件如下:
; //*************************************** //
; // //
; // 复杂模型机实验指令文件 //
; // //
; // By TangDu CO.,LTD //
; // //
; //*************************************** //
; //****** Start Of Main Memory Data ****** //
$P 00 20 ;IN R0,00H
$P 01 00
$P 02 21 ;IN R1,00H
$P 03 00
$P 04 22 ;IN R2,00H
$P 05 00
$P 06 D0 ;STA 60H,R0
$P 07 60
$P 08 04 ;ADD R0,R1
$P 09 08 ;ADD R0,R2
$P 0A 63 ;LDI R3,01H
$P 0B 01
$P 0C AC ;SAR R0,R3
$P 0D 43 ;MOV R3,R0
$P 0E 84 ;SUB R0,R1
$P 0F 4D ;MOV R1,R3
$P 10 89 ;SUB R1,R2
$P 11 42 ;MOV R2,R0
$P 12 71 ;DEC R1
$P 13 F0 ;BZC RESULT
$P 14 1B
$P 15 08 ;LOOP:ADD R0,R2
$P 16 71 ;DEC R1
$P 17 F0 ;BZC RESULT
$P 18 1B
$P 19 E0 ;JMP LOOP
$P 1A 15
$P 1B 4D ;MOV R1,R3
$P 1C 71 ;DEC R1
$P 1D F0 ;BZC RESULT
$P 1E 26
$P 1F 22 ;MOV R2,R0
$P 20 08 ;LOOP:ADD R0,R2
$P 21 71 ;DEC R1
$P 22 F0 ;BZC RESULT
$P 23 26
$P 24 E0 ;JMP LOOP
$P 25 20
$P 26 C1 ;LAD 00 R1,60H
$P 27 60
$P 28 87 ;SUB R3,R1
$P 29 4D ;MOV R1,R3
$P 2A 42 ;MOV R2,R0
$P 2B 71 ;DEC R1
$P 2C F0 ;BZC RESULT
$P 2D 34
$P 2E 08 ;LOOP:ADD R0,R2
$P 2F 71 ;DEC R1
$P 30 F0 ;BZC RESULT
$P 31 34
$P 32 E0 ;JMP LOOP
$P 33 2E
$P 34 D0 ;STA 61H,R0
$P 35 61
$P 36 30 ;OUT 40H,R0
$P 37 40
; //***** End Of Main Memory Data *****//
; //** Start Of MicroController Data **//
$M 00 000001 ; NOP
$M 01 006D43 ; PC->AR, PC加1
$M 03 107070 ; MEM->IR, P<1>
$M 04 002405 ; RS->B
$M 05 04B201 ; A加B->RD
$M 06 002407 ; RS->B
$M 07 013201 ; A与B->RD
$M 08 106009 ; MEM->AR
$M 09 183001 ; IO->RD
$M 0A 106010 ; MEM->AR
$M 0B 000001 ; NOP
$M 0C 103001 ; MEM->RD
$M 0D 200601 ; RD->MEM
$M 0E 005341 ; A->PC
$M 0F 0000CB ; NOP, P<3>
$M 10 280401 ; RS->IO
$M 11 103001 ; MEM->RD
$M 12 063201 ; A减1->RD
$M 13 002414 ; RS->B
$M 14 05B201 ; A减B->RD
$M 15 002416 ; RS->B
$M 16 01B201 ; A或B->RD
$M 17 002418 ; RS->B
$M 18 033201 ; A右移->RD
$M 1B 005341 ; A->PC
$M 1C 10101D ; MEM->A
$M 1D 10608C ; MEM->AR, P<2>
$M 1E 10601F ; MEM->AR
$M 1F 101020 ; MEM->A
$M 20 10608C ; MEM->AR, P<2>
$M 28 101029 ; MEM->A
$M 29 00282A ; RI->B
$M 2A 04E22B ; A加B->AR
$M 2B 04928C ; A加B->A, P<2>
$M 2C 10102D ; MEM->A
$M 2D 002C2E ; PC->B
$M 2E 04E22F ; A加B->AR
$M 2F 04928C ; A加B->A, P<2>
$M 30 001604 ; RD->A
$M 31 001606 ; RD->A
$M 32 006D48 ; PC->AR, PC加1
$M 33 006D4A ; PC->AR, PC加1
$M 34 003401 ; RS->RD
$M 35 000035 ; NOP
$M 36 006D51 ; PC->AR, PC加1
$M 37 001612 ; RD->A
$M 38 001613 ; RD->A
$M 39 001615 ; RD->A
$M 3A 001617 ; RD->A
$M 3B 000001 ; NOP
$M 3C 006D5C ; PC->AR, PC加1
$M 3D 006D5E ; PC->AR, PC加1
$M 3E 006D68 ; PC->AR, PC加1
$M 3F 006D6C ; PC->AR, PC加1
3. 运行程序
进入软件界面,选择菜单命令"【实验】—【CISC 实验】",打开相应的数据通路图,选择相应的功能命令,即可联机运行、监控、调试程序。
按动CON单元的总清按钮CLR,然后通过软件运行程序,当模型机执行完OUT指令后,检查OUT单元显示的数是否正确。在数据通路图和微程序流中观测指令的执行过程,并观测软件中地址总线、数据总线以及微指令显示和下位机是否一致。
五、实验结果
考虑到模拟机的硬件约束,因此采用边长分别为3、4、5的三角形来测试程序。
順次入力3,4,5のステップは、プログラムされた後、最終的な出力(すなわち、十進数36)、期待に沿った結果、及び対応する機械語命令は、マイクロプログラミングと考えることができるプログラム24Hは、機械三角形のモデル式ヘレン正方形領域に応じて、正確です。
結果は図8
第六に、実験と解析の問題点
ヘロンの公式は、プログラムは、乗算累積的を使用して、必要な乗算を達成するために使用されるが、乗数から始まることではなく0から蓄積よりも、元の数を累積開始し、他の乗算器は、保存を掛ける前に、それは必要性に必要です1、それ以外の場合は、乗算の実装もう一度支払うことになります。