复杂模型机实验Word文件下载.docx
《复杂模型机实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《复杂模型机实验Word文件下载.docx(21页珍藏版)》请在冰点文库上搜索。
地址空间
IOY0
00-3F
IOY1
40-7F
IOY2
80-BF
IOY3
C0-FF
系统设计五种数据寻址方式,即立即、直接、间接、变址和相对寻址,LDI指令为立即寻址,LAD、STA、JMP和BZC指令均具备直接、间接、变址和相对寻址能力。
LDI的指令格式如下,第一字节同前一样,第二字节为立即数。
data
LAD、STA、JMP和BZC指令格式如下。
M
D
其中M为寻址模式,具体见表5-3-2,以R2做为变址寄存器RI。
表5-3-2寻址方式
寻址模式M
有效地址E
说 明
E=D
E=(D)
E=(RI)+D
E=(PC)+D
直接寻址
间接寻址
RI变址寻址
相对寻址
4.指令系统
本模型机共有15条基本指令,表5-3-3列出了各条指令的格式、汇编符号、指令功能。
表5-3-3指令描述
5.3.4总体设计
本模型机的数据通路框图如图5-3-2所示。
图5-3-2数据通路框图
和前面的实验相比,复杂模型机实验指令多,寻址方式多,只用一种测试已不能满足设计要求,为此指令译码电路需要重新设计。
如图5-3-3所示在IR单元的INS_DEC中实现。
图5-3-3指令译码原理图
本实验中要用到四个通用寄存器R3…R0,而对寄存器的选择是通过指令的低四位,为此还得设计一个寄存器译码电路,在IR单元的REG_DEC(GAL16V8)中实现,如图5-3-4所示。
图5-3-4寄存器译码原理图
根据机器指令系统要求,设计微程序流程图及确定微地址,如图5-3-5所示。
按照系统建议的微指令格式,见表5-3-4,参照微指令流程图,将每条微指令代码化,译成二进制代码表,见表5-3-5,并将二进制代码表转换为联机操作时的十六进制格式文件。
表5-3-4微指令格式
图5-3-5微程序流程图
表5-3-5二进制代码表
地址
十六进制表示
高五位
S3-S0
A字段
B字段
C字段
UA5-UA0
000001
00000
0000
000
000001
006D43
110
101
000011
03
107070
00010
111
001
110000
04
002405
010
011
000101
05
04B201
1001
06
002407
000111
07
013201
0010
08
106009
001001
09
183001
00011
0A
106010
010000
0B
0C
103001
0D
200601
00100
100
0E
005341
0F
0000CB
001011
280401
00101
12
06B201
1101
13
002414
010100
14
05B201
1011
15
002416
010110
16
01B201
0011
17
002418
011000
18
02B201
0101
1B
1C
10101D
011101
1D
10608C
001100
1E
10601F
011111
1F
101020
00010
100000
20
28
101029
101001
29
00282A
101010
2A
04E22B
101011
2B
04928C
2C
10102D
101101
2D
002C2E
101110
2E
04E22F
101111
2F
30
001604
000100
31
001606
000110
32
006D48
001000
33
006D4A
001010
34
003401
35
000035
110101
36
006D51
010001
37
001612
010010
38
001613
010011
39
001615
010101
3A
001617
010111
3B
3C
006D5C
011100
3D
006D5E
011110
3E
006D68
101000
3F
006D6C
101100
根据现有指令,在模型机上实现以下运算:
从IN单元读入一个数据,根据读入数据的低4位值X,求1+2+…+X的累加和,01H到0FH共15个数据存于60H到6EH单元。
根据要求可以得到如下程序,地址和内容均为二进制数。
地址内容助记符说明
0000000000100000;
START:
INR0,00H从IN单元读入计数初值
0000000100000000
0000001001100001;
LDIR1,0FH立即数0FH送R1
0000001100001111
0000010000010100;
ANDR0,R1得到R0低四位
0000010101100001;
LDIR1,00H装入和初值00H
0000011000000000
0000011111110000;
BZCRESULT计数值为0则跳转
0000100000010110
0000100101100010;
LDIR2,60H读入数据始地址
0000101001100000
0000101111001011;
LOOP:
LADR3,[RI],00H从MEM读入数据送R3,
变址寻址,偏移量为00H
0000110000000000
0000110100001101;
ADDR1,R3累加求和
0000111001110010;
INCRI变址寄存加1,指向下一数据
0000111101100011;
LDIR3,01H装入比较值
0001000000000001
0001000110001100;
SUBR0,R3
0001001011110000;
BZCRESULT相减为0,表示求和完毕
0001001100010110
0001010011100000;
JMPLOOP未完则继续
0001010100001011
0001011011010001;
RESULT:
STA70H,R1和存于MEM的70H单元
0001011101110000
0001100000110100;
OUT40H,R1和在OUT单元显示
0001100101000000
0001101011100000;
JMPSTART跳转至START
0001101100000000
0001110001010000;
HLT停机
0110000000000001;
数据
0110000100000010
0110001000000011
0110001100000100
0110010000000101
0110010100000110
0110011000000111
0110011100001000
0110100000001001
0110100100001010
0110101000001011
0110101100001100
0110110000001101
0110110100001110
0110111000001111
5.3.5实验步骤
1.按图5-3-6连接实验线路,仔细检查接线后打开实验箱电源。
2.写入实验程序,并进行校验,分两种方式,手动写入和联机写入。
1)手动写入和校验
(1)手动写入微程序
将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘编程’档,KK4置为‘控存’档,KK5置为‘置数’档。
使用CON单元的SD05——SD00给出微地址,IN单元给出低8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的低8位。
将时序与操作台单元的开关KK5置为‘加1’档。
IN单元给出中8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的中8位。
IN单元给出高8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的高8位。
重复
、
四步,将表5-3-5的微代码写入2816芯片中。
(2)手动校验微程序
将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘校验’档,KK4置为‘控存’档,KK5置为‘置数’档。
使用CON单元的SD05——SD00给出微地址,连续两次按动时序与操作台的开关ST,MC单元的指数据指示灯M7——M0显示该单元的低8位。
连续两次按动时序与操作台的开关ST,MC单元的指数据指示灯M15——M8显示该单元的中8位,MC单元的指数据指示灯M23——M16显示该单元的高8位。
四步,完成对微代码的校验。
如果校验出微代码写入错误,重新写入、校验,直至确认微指令的输入无误为止。
(1)手动写入机器程序
将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘编程’档,KK4置为‘主存’档,KK5置为‘置数’档。
使用CON单元的SD7——SD0给出地址,IN单元给出该单元应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该存储器单元。
IN单元给出下一地址(地址自动加1)应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元中。
然后地址会又自加1,只需在IN单元输入后续地址的数据,连续两次按动时序与操作台的开关ST,即可完成对该单元的写入。
亦可重复
两步,将所有机器指令写入主存芯片中。
(2)手动校验机器程序
将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘校验’档,KK4置为‘主存’档,KK5置为‘置数’档。
使用CON单元的SD7——SD0给出地址,连续两次按动时序与操作台的开关ST,CPU内总线的指数据指示灯D7——D0显示该单元的数据。
连续两次按动时序与操作台的开关ST,地址自动加1,CPU内总线的指数据指示灯D7——D0显示该单元的数据。
此后每两次按动时序与操作台的开关ST,地址自动加1,CPU内总线的指数据指示灯D7——D0显示该单元的数据,继续进行该操作,直至完成校验,如发现错误,则返回写入,然后校验,直至确认输入的所有指令准确无误。
两步,完成对指令码的校验。
如果校验出指令码写入错误,重新写入、校验,直至确认指令的输入无误为止。
2)联机写入和校验
联机软件提供了微程序和机器程序下载功能,以代替手动读写微程序和机器程序,但是微程序和机器程序得以指定的格式写入到以TXT为后缀的文件中,本次实验程序如下,程序中分号‘;
’为注释符,分号后面的内容在下载时将被忽略掉。
图5-3-6实验接线图
;
//***************************************//
////
//复杂模型机实验指令文件//
//ByTangDuCO.,LTD//
//******StartOfMainMemoryData******//
$P0020;
$P0100
$P0261;
$P030F
$P0414;
$P0561;
$P0600
$P07F0;
$P0816
$P0962;
$P0A60
$P0BCB;
$P0C00
$P0D0D;
$P0E72;
$P0F63;
$P1001
$P118C;
$P12F0;
$P1316
$P14E0;
$P150B
$P16D1;
STA70H,R1和存于MEM的70H单元
$P1770
$P1834;
$P1940
$P1AE0;
$P1B00
$P1C50;
$P6001;
$P6102
$P6203
$P6304
$P6405
$P6506
$P6607
$P6708
$P6809
$P690A
$P6A0B
$P6B0C
$P6C0D
$P6D0E
$P6E0F
//*****EndOfMainMemoryData*****//
//**StartOfMicroControllerData**//
$M00000001;
NOP
$M01006D43;
PC->
AR,PC加1
$M03107070;
MEM->
IR,P<
1>
$M04002405;
RS->
B
$M0504B201;
A加B->
$M06002407;
$M07013201;
A与B->
$M08106009;
AR
$M09183001;
IO->
$M0A106010;
$M0B000001;
$M0C103001;
$M0D200601;
RD->
MEM
$M0E005341;
A->
PC
$M0F0000CB;
NOP,P<
3>
$M10280401;
IO
$M11103001;
$M1206B201;
A加1->
$M13002414;
$M1405B201;
A减B->
$M15002416;
$M1601B201;
A或B->
$M17002418;
$M1802B201;
A右环移->
$M1B005341;
$M1C10101D;
A
$M1D10608C;
AR,P<
2>
$M1E10601F;
$M1F101020;
$M2010608C;
$M28101029;
$M2900282A;
RI->
$M2A04E22B;
$M2B04928C;
A,P<
$M2C10102D;
$M2D002C2E;
$M2E04E22F;
$M2F04928C;
$M30001604;
$M31001606;
$M32006D48;
$M33006D4A;
$M34003401;