计算机组成原理课程设计:在复杂模型机上编写机器指令与微程序计算海伦公式

您所在的位置:网站首页 指令clr 计算机组成原理课程设计:在复杂模型机上编写机器指令与微程序计算海伦公式

计算机组成原理课程设计:在复杂模型机上编写机器指令与微程序计算海伦公式

#计算机组成原理课程设计:在复杂模型机上编写机器指令与微程序计算海伦公式| 来源: 网络整理| 查看: 265

文章目录 一、实验内容1. 实验目的2. 实验目标3.实验设备 二、实验原理1)数据格式2)指令设计3)指令格式4)指令系统 三、总体设计四、实验步骤1. 按图6连接实验线路,仔细检查连线后打开实验箱电源。2. 写入实验程序,并进行校验。3. 运行程序 五、实验结果六、实验中遇到的问题与分析

一、实验内容 1. 实验目的

综合运用所学计算机组成原理知识,设计并实现较为完整的计算机。

2. 实验目标

在充分理解复杂模型机原理的基础上,自行编写机器指令及其对应的微程序,达到使用复杂模型机计算海伦公式的目标。

3.实验设备

PC机一台,TD-CMA实验系统一套。

二、实验原理 1)数据格式

此次使用的模型机规定采用定点补码表示法表示数据,字长为8位,8位全用来表示数据(最高位不表示符号),数值表示范围是:0≤X≤28-1。

2)指令设计

根据海伦公式计算中所需要的指令,设计三大类模型机指令共十五条,其中包括运算类指令、控制转移类指令、数据传送类指令。

运算类指令包含三种运算,算术运算、逻辑运算和移位运算,设计有 6 条运算类指令,分别为:ADD、AND、DEC、SUB、OR、SAR,所有运算类指令都为单字节,寻址方式采用寄存器直接寻址。

控制转移类指令有三条 HLT、JMP、BZC,用以控制程序的分支和转移,其中HLT 为单字节指令,JMP和BZC为双字节指令。

数据传送类指令有IN、OUT、MOV、LDI、LAD、STA 共 6 条,用以完成寄存器和寄存器、寄存器和I/O、寄存器和存储器之间的数据交换,除 MOV指令为单字节指令外,其余均为双字节指令。

3)指令格式

所有单字节指令(ADD、AND、DEC、SUB、OR、SAR、HLT和MOV)格式如下:

7 6 4 53 21 0OP-CODERSRD

其中,OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,并规定:

RS或RD选定的寄存器00R001R110R211R3

IN和OUT的指令格式为:

7 6 5 4 (1)3 2 (1)1 0 (1)7-0(2)OP-CODERSRDP

其中括号中的 1 表示指令的第一字节,2 表示指令的第二字节,OP-CODE 为操作码,RS为源寄存器,RD 为目的寄存器,P为 I/O 端口号,占用一个字节,系统的 I/O地址译码原理见图1(在地址总线单元)。  I/O地址译码原理图 图1 I/O地址译码原理图

由于用的是地址总线的高两位进行译码,I/O地址空间被分为四个区,如表1所示:

表1 I/O地址空间分配

A7 A6选定地址空间00IOY000-3F01IOY140-7F10IOY280-BF11IOY3C0-FF

系统设计五种数据寻址方式,即立即、直接、间接、变址和相对寻址,LDI指令为立即寻址,LAD、STA、JMP和BZC指令均具备直接、间接、变址和相对寻址能力。

LDI的指令格式如下,第一字节内容与上文同,第二字节为立即数。

7 6 5 4 (1)3 2 (1)1 0 (1)7-0(2)OP-CODERSRDdata

LAD、STA、JMP和BZC指令格式如下。

7 6 5 4 (1)3 2 (1)1 0 (1)7-0(2)OP-CODEMRDdata

其中M为寻址模式,具体见表2,以R2作为变址寄存器RI。

表2 寻址方式

寻址模式M有效地址E说明00E=D直接寻址01E=(D)间接寻址10E=(RI)+DRI变址寻址11E=(PC)+D相对寻址 4)指令系统

根据实验计算海伦公式的目标,设计的15条基本指令如下,包括指令的格式、汇编符号、指令功能。

表3 指令描述

在这里插入图片描述

三、总体设计

模型机的数据通路框图如图2所示。 在这里插入图片描述

图2 数据通路框图

实验使用的模型机指令多,寻址方式多,指令译码电路需要复杂设计。图3所示在IR单元的INS-DEC中实现。

在这里插入图片描述 图3 指令译码原理图

本实验中要用到四个通用寄存器R3~R0,而对寄存器的选择是通过指令的低四位,为此还得设计一个寄存器译码电路,在IR单元的REG_DEC(GAL16V8)中实现,如图4所示。

在这里插入图片描述 图4 寄存器译码原理图

根据设计的机器指令要求,设计微程序流程图及确定微地址,如图5所示。

按照系统建议的微指令格式,见表4,参照微指令流程图,将每条微指令代码化,译成二进制代码表,如表5,并将二进制代码表转化为联机操作时的十六进制格式文件。

表4 微指令格式 在这里插入图片描述 在这里插入图片描述

图5 微指令流程图

表5 二进制码表

地址十六进制表示高五位S3-S0A字段B字段C字段UA5-UA00000000100000000000000000000000101006D4300000000011011010100001103107070000100000111000001110000040024050000000000100100000001010504B201000001001011001000000001060024070000000000100100000001110701320100000001001100100000000108106009000100000110000000001001091830010001100000110000000000010A1060100001000001100000000100000B0000010000000000000000000000010C1030010001000000110000000000010D2006010010000000000110000000010E0053410000000001010011010000010F0000CB000000000000000011001011102804010010100000000100000000011110300100010000001100000000000112063201000001100011001000000001130024140000000000100100000101001405B201000001011011001000000001150024160000000000100100000101101601B20100000001101100100000000117002418000000000010010000011000180332010000001100110010000000011B0053410000000001010011010000011C10101D0001000000010000000111011D10608C0001000001100000100011001E10601F0001000001100000000111111F1010200001000000010000001000002010608C000100000110000010001100281010290001000000010000001010012900282A0000000000101000001010102A04E22B0000010011100010001010112B04928C0000010010010010100011002C10102D0001000000010000001011012D002C2E0000000000101100001011102E04E22F0000010011100010001011112F04928C000001001001001010001100300016040000000000010110000001003100160600000000000101100000011032006D4800000000011011010100100033006D4A000000000110110101001010340034010000000000110100000000013500003500000000000000000011010136006D510000000001101101010100013700161200000000000101100001001038001613000000000001011000010011390016150000000000010110000101013A0016170000000000010110000101113B0000010000000000000000000000013C006D5C0000000001101101010111003D006D5E0000000001101101010111103E006D680000000001101101011010003F006D6C000000000110110101101100

根据实验计算海伦公式的目标,以及基于此设计的机器指令,在模型机实现以下运算:从IN单元读入三角形三边(要求输入三边一定能构成三角形),求此三角形的面积平方,将所求结果存于61H单元,机器指令流程图如图6。 在这里插入图片描述 图6 机器指令流程图

根据流程图设计表6程序,地址和内容均为二进制。

表6 机器指令程序

地址内容助记符说明0000000000100000IN R0,00H读入a00000001000000000000001000100001IN R1,00H读入b00000011000000000000010000100010IN R2,00H读入c00000101000000000000011011010000STA 60H,R0将a存入60H00000111011000000000100000000100ADD R0,R1a+b存入R00000100100001000ADD R0,R2a+b+c存入R00000101001100011LDI R3,01H将1存入R300001011000000010000110010101100SAR R0,R3a+b+c向右移一位,R0=P0000110101000011MOV R3,R0将p移入R30000111010000100SUB R0,R1R0=P-B0000111101001101MOV R1,R3将P存入R10001000010001001SUB R1,R2P-C存入R10001000101000010MOV R2,R0将R0移入R2,作为乘数准备0001001001110001DEC R1将另一个乘数减1,做好准备0001001111110000BZC RESULT判断00010100000110110001010100001000LOOP:ADD R0,R2开始乘法0001011001110001DEC R10001011111110000BZC RESULT判断00011000000110110001100111100000JMP LOOP回到LOOP开始00011010000101010001101101001101MOV R1,R3将P存回R10001110001110001DEC R1将另一个乘数减1,做好准备0001110111110000BZC RESULT判断00011110001001100001111101000010MOV R2,R0将R0移入R2,作为乘数准备0010000000001000LOOP:ADD R0,R2开始乘法0010000101110001DEC R10010001011110000BZC RESULT判断00100011001001100010010011100000JMP LOOP回到LOOP开始00100101001000000010011011000001LAD 00 R1,60H将a重新放入R100100111011000000010100010000111SUB R3,R1R3=P-A0010100101001101MOV R1,R3R3->R10010101001000010MOV R2,R0R0->R20010101101110001DEC R10010110011110000BZC RESULT判断00101101001101000010111000001000LOOP:ADD R0,R2开始乘法0010111101110001DEC R10011000011110000BZC RESULT判断00110001001101000011001011100000JMP LOOP回到LOOP开始00110011001011100011010011010000STA 61H,R0将所得结果存入61H00110101011000010011011000110000OUT 40H,R0将所得结果输出0011011101000000 四、实验步骤 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 42 ;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 $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 $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 $M 1E 10601F ; MEM->AR $M 1F 101020 ; MEM->A $M 20 10608C ; MEM->AR, P $M 28 101029 ; MEM->A $M 29 00282A ; RI->B $M 2A 04E22B ; A加B->AR $M 2B 04928C ; A加B->A, P $M 2C 10102D ; MEM->A $M 2D 002C2E ; PC->B $M 2E 04E22F ; A加B->AR $M 2F 04928C ; A加B->A, P $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后,程序最终输出24H(即十进制36),结果符合预期,可认为机器指令及对应的微程序设计正确,模型机可按海伦公式计算三角形面积的平方。 在这里插入图片描述 图8 实验结果图

六、实验中遇到的问题与分析

海伦公式的实现需要用到乘法,程序中使用累加的方式实现乘法,但乘数一开始是从原数开始累加,而不是从0开始累加,因此需要在乘法前就需要将另一个乘数减1,否则执行乘法时会多加一次。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3