带移位运算的模型机实验原理图
图(2)
带移位运算的模型机的设计与实现
本实验是在实验(一)基本模型机的基础上搭接移位控制电路,实现移位控制运算,原理图如上图(2)所示。实现移位控制运算。因此实验中新增4条移位运算指令:RL(左环移);RLC带进位左环移);RR(右环移);RRC(带进位右环移),其指令格式如下:
操作码
RR 01010000
RRC 01100000
RL 01110000
RLC 10000000
以上4条指令都为单字长指令(8位)。
RR为将R0寄存器中的内容循环右移一位。
RRC为将R0寄存器中的内容带进位右移一位,它将R0寄存器中数据右边第一位移入进位,同时将进位寄存器的数移至R0寄存器的最左位。
RL为将R0寄存器中的数据循环左移一位。
RLC为将R0寄存器中的数据带进位循环左移一位。
设计机器指令程序见模块四机器指令程序。
地址(二进制) 内容(二进制) 助记符 说明
00000000 00000000 IN 输入 “INPUT DEVICE”->R0,
//任意输入数据
00000001 00010000 ADD[16H] R0+[16H]->R0
00000010 00010110
00000011 10000000 RLC 带进位左移
00000100 00000000 IN “INPUT DEVICE”->R0,
00000101 01100000 RRC 带进位右移
00000110 01110000 RL 左环移
00000111 00100000 STA[0EH] R0->[0EH]
00001000 00001l10
00001001 00110000 OUT[0EH] [0EH] ->BUS
00001010 00001110
0000101l 01000000 JMP 00H 00H->PC
00001100 00000000
00010110 00010000 自定,10H(16D)
00001110
设计如下微程序流程图
(1)、基本模型机的设计与实现的为程序代码:
基本模型机的设计和实现的程序设计如下:
(1)IN 输入 “INPUT DEVICE”->R0,
(2)SUB [16H] R0+[16H]->R0 ,
(3)STA [0BH] R0->[0BH]
(4)OUT [0BH] [0BH] ->BUS
(5)JMP [00H] 00H->PC
机器指令程序 微指令程序
|
$M00108101
$M0182ED01
$M0248C000
$M0304E000
$M0405B000
$M0506A201
$M06019A61
$M070DE000
$M08011000
$M0983ED01
$M0A87ED01
$M0B8EED01
$M0C96ED01 |
| $P0000
$P0110
$P0216
$P0320
$P040B
$P0530
$P060B
$P0740
$P0800
$P1608 |
$M0D018202
$M0E0FE000
$M0F15A000
$M1092ED01
$M1194ED01
$M1217A000
$M13018001
$M14182000
$M15010A07
$M1681D100
$M17100A07
$M18118A06
(2)、以下是带移位运算的模型机的设计与实现:
1.移位运算的模型机的设计和实现:
(1)IN 输入 “INPUT DEVICE”->R0,
(2)ADD [03H] R0+[03H]->R0 ,
(3)RLC 带进位左移
(4)IN “INPUT DEVICE”->R0,
(5)RRC 带进位右移
(6)RL 左环移
(7)STA [0EH] R0->[0EH]
(8)OUT [0EH] [0EH] ->BUS
(9)JMP [00H] 00H->PC
机器指令程序 微指令程序
$M151D8231
$M161F8231
$M17218231
$M18238231
$M191AE000
$M1A1BA000
$M1B010A07
$M1C81D100
$M1D1E8821
$M1E019801
$M1F208829
$M20019801
$M21228811
$M22019801
$M23248819
$M24019801
|
$P0000
$P0110
$P0216
$P0380
$P0400
$P0560
$P0670
$P0720
$P080E
$P0930
$P0A0E
$P0B40
$P0C00
$P1610
$M10011000
$M1183ED01
$M00088101
$M0182ED01
$M151D8231
$M161F8231
$M17218231
$M18238231
$M191AE000
$M1A1BA000
$M1B010A07
$M1C81D100
$M1D1E8821
$M1E019801
$M1F208829
$M20019801
$M21228811
$M22019801
$M23248819
$M24019801
|
按照规定格式,将机器指令及微指令二进制表编辑成十六进制的如下格式文件。
机器指令格式说明:
$ P ´ ´ ´ ´ 例:$P 00 00
机器指令代码
十六进制地址
0 微指令格式说明:
$ M ´ ´ ´ ´ ´ ´ ´ ´ 例:$M 00 018110
十六进制地址 微指令代码
注意:因系统文件格式要求,微指令代码的第一个字节(前8位)与第三字节(后8位)对换一下。
将微程序流程图按微指令格式转化而成的“二进制微代码表”。
|
微地址 |
S3 S2 S1 S0 M CN WE A9 A8 |
A |
B |
C |
UA5…UA0 |
|
0 0 |
0 0 0 0 0 0 0 1 1 |
0 0 0 |
0 0 0 |
1 0 0 |
0 1 0 0 0 0 |
|
0 1 |
0 0 0 0 0 0 0 1 1 |
1 1 0 |
1 1 0 |
1 1 0 |
0 0 0 0 1 0 |
|
0 2 |
0 0 0 0 0 0 0 0 1 |
1 0 0 |
0 0 0 |
0 0 1 |
0 0 1 0 0 0 |
|
0 3 |
0 0 0 0 0 0 0 0 1 |
1 1 0 |
0 0 0 |
0 0 0 |
0 0 0 1 0 0 |
|
0 4 |
0 0 0 0 0 0 0 0 1 |
0 1 1 |
0 0 0 |
0 0 0 |
0 0 0 1 0 1 |
|
0 5 |
0 0 0 0 0 0 0 1 1 |
0 1 0 |
0 0 1 |
0 0 0 |
0 0 0 1 1 0 |
|
0 6 |
0 1 1 0 0 0 0 1 1 |
0 0 1 |
1 0 1 |
0 0 0 |
0 0 0 0 0 1 |
|
0 7 |
0 0 0 0 0 0 0 0 1 |
1 1 0 |
0 0 0 |
0 0 0 |
0 0 1 1 0 1 |
|
1 0 |
0 0 0 0 0 0 0 0 0 |
0 0 1 |
0 0 0 |
0 0 0 |
0 0 0 0 0 1 |
|
1 1 |
0 0 0 0 0 0 0 1 1 |
1 1 0 |
1 1 0 |
1 1 0 |
0 0 0 0 1 1 |
|
1 2 |
0 0 0 0 0 0 0 1 1 |
1 1 0 |
1 1 0 |
1 1 0 |
0 0 0 1 1 1 |
|
1 3 |
0 0 0 0 0 0 0 1 1 |
1 1 0 |
|