8位机基本指令微程序表

微地址
操作功能
指令名称及编码
下址
CI3~0 SCC3~0
0MRW 0I2~0
SAI8~6 SBI5~3
B口
A口
0SST
SSHSCI
DC2
DC1
00
R5(PCH)<-0,DI#=0  
00
1110
0000
0100
0001
1011
1001
0101
0101
0000
0001
0111
1000
01
R4(PCL)<-0  
00
1110
0000
0100
0001
1011
1001
0100
0100
0000
0001
0000
1000
02
ARL<-R4;C0,R4<-R4+1  
00
1110
0000
0100
0011
1010
1000
0100
0100
0000
0001
0010
1000
03
ARH<-R5;R5<-R5+C0  
00
1110
0000
0100
0011
1010
1000
0101
0101
0000
0011
1011
1000
04
IR<-MEM;读内存  
00
1110
0000
0001
0000
1001
1000
0000
0000
0000
0000
0001
1000
05
/MAP  
00
0010
0000
0100
0000
1001
1000
0000
0000
0000
0000
0000
1000
06
DR<-DR+SR;CZVS ADD; 0000DRSR
40
0011
0000
0100
0001
0011
0000
0000
0000
0001
0000
0000
1000
07
DR<-DR-SR;CZVS SUB; 0001DRSR
40
0011
0000
0100
0001
0011
0001
0000
0000
0001
0001
0000
1000
08
DR<-DRùSR;CZVS AND; 0010DRSR
40
0011
0000
0100
0001
0011
0100
0000
0000
0001
0000
0000
1000
09
DR<-DR-SR;CZVS CMP; 0011DRSR
40
0011
0000
0100
0001
0001
0001
0000
0000
0001
0001
0000
1000
0A
DR<-SR MOV; 0100DRSR
40
0011
0000
0100
0100
0011
0000
0000
0000
0000
0000
0000
1000
0B
DR<-DR-1 DEC; 100100DR
40
0011
0000
0100
0011
0011
0001
0000
0000
0001
0000
0000
1000
0C
DR,C<-DR/2 SHR; 101000DR
40
0011
0000
0100
0011
0101
0000
0000
0000
0101
0000
0000
1000
0D
DR,C<-DR*2 SHL; 101001DR
40
0011
0000
0100
0011
0111
0000
0000
0000
0110
0000
0000
1000
0E
R0<-(PORT) IN; 101010IO
40
0011
0000
0011
0111
1011
1000
0000
0000
0000
0000
0000
0000
0F
(PORT)<-R0 OUT; 101011IO
40
0011
0000
0010
0011
1001
1000
0000
0000
0000
0000
0000
0001
10
C<-0 CLC; 11111000
40
0011
0000
0100
0000
1001
1000
0000
0000
0011
0000
0000
1000
11
C<-1 STC; 11111001
40
0011
0000
0100
0000
1001
1000
0000
0000
0100
0000
0000
1000
12
DR<-DR+1 INC; 1100DR
40
0011
0000
0100
0011
0011
0000
0000
0000
0001
0001
0000
1000
13
MEM<-SR;写内存  
40
0011
0000
0000
0011
0001
0000
0000
0000
0000
0000
0000
1001
14
ARL<-R8 STO; 101110SRLOD; 101111DR
00
1110
0000
0100
0011
1001
1000
1000
0000
0000
0000
0010
1000
15
ARH<-R9  
13
0011
0001
0100
0011
1001
1000
1001
0000
0000
0000
0011
1000
16
DR<-MEM;读内存  
40
0011
0000
0001
0111
0011
0000
0000
0000
0000
0000
0000
1000
17
ARL<-R4;C0,R4<-R4+1 MVD; 1101DRJR,JZ,JNZ,JC,JNC
00
1110
0000
0100
0011
1010
1000
0100
0100
0000
0001
0010
1000
18
ARH<-R5;R5<-R5+C0  
16
0011
0100
0100
0011
1010
1000
0101
0101
0000
0011
0011
1000
19
/CC=CND  
40
0011
1000
0100
0000
1001
1000
0000
0000
0000
0000
0000
1000
1A
C0,R4<-R4+OFFSET  
00
1110
0000
0001
0101
1011
1000
0100
0100
0000
0000
0000
1000
1B
R5<-R5+C0  
40
0011
0000
0100
0101
1010
1000
0101
0101
0000
0011
0000
1100
1C
MEM<-SR;写内存  
40
0011
0000
0000
0011
0001
0000
0000
0000
0000
0000
0000
1001
1D
ARL,C0,R6<-R6-1 PUSH; 101100SRPUSHF;11111010
00
1110
0000
0100
0011
1011
1001
0110
0000
0000
0000
0010
1000
1E
ARH,R7<-R7-C0  
1C
0011
0010
0100
0011
1011
1001
0111
0000
0000
0011
0011
1000
1F
写内存<-状态  
40
0011
0000
0000
0000
0001
0000
0000
0000
0000
0000
0000
1011
20
DR<-MEM;读内存  
40
0011
0000
0001
0111
0011
0000
0000
0000
0000
0000
0000
1000
21
ARL<-R6C0,R6<-R6+1 POP; 101101DRPOPF; 11111011
00
1110
0000
0100
0011
1010
1000
0110
0110
0000
0001
0010
1000
22
ARH<-R7R7<-R7+C0  
20
0011
0010
0100
0011
1010
1000
0111
0111
0000
0011
0011
1000
23
状态<-读内存  
40
0011
0000
0001
0000
0001
0000
0000
0000
0010
0000
0000
1000
24
ARL, C0,R6<-R6-1 CALL; 11111100
00
1110
0000
0100
0011
1011
1001
0110
0000
0000
0000
0010
1000
25
ARH, R7<-R7-C0  
00
1110
0000
0100
0011
1011
1001
0111
0000
0000
0011
0011
1000
26
写内存<-R5  
00
1110
0000
0000
0011
1001
1000
0101
0000
0000
0000
0000
1001
27
ARL,C0,R6<-R6-1  
00
1110
0000
0100
0011
1011
1001
0110
0000
0000
0000
0010
1000
28
ARH, R7<-R7-C0  
00
1110
0000
0100
0011
1011
1001
0111
0000
0000
0011
0011
1000
29
写内存<-R4  
00
1110
0000
0000
0011
1001
1000
0100
0000
0000
0000
0000
1001
2A
R5<-R11 JMP; 11111111
00
1110
0000
0100
0100
1011
1000
0101
1011
0000
0000
0000
1000
2B
R4<-R10  
40
0011
0000
0100
0100
1011
1000
0100
1010
0000
0000
0000
1000
2C
ARL<-R6C0,R6<-R6+1 RET; 11111101
00
1110
0000
0100
0011
1010
1000
0110
0110
0000
0001
0010
1000
2D
ARH<-R7R7<-R7+C0  
00
1110
0000
0100
0011
1010
1000
0111
0111
0000
0011
0011
1000
2E
R4<-MEM;读内存  
00
1110
0000
0001
0111
1011
1000
0100
0000
0000
0000
0000
1000
2F
ARL<-R6C0,R6<-R6+1  
00
1110
0000
0100
0011
1010
1000
0110
0110
0000
0001
0010
1000
30
ARH<-R7R7<-R7+C0  
00
1110
0000
0100
0011
1010
1000
0111
0111
0000
0011
0011
1000
31
R5<-MEM;读内存  
40
0011
0000
0001
0111
1011
1000
0101
0000
0000
0000
0000
1000
32
R5<-R13 TPC; 11000100
00
1110
0000
0100
0100
1011
1000
0101
1101
0000
0000
0000
1000
33
R4<-R12  
40
0011
0000
0100
0100
1011
1000
0100
1100
0000
0000
0000
1000
34
R13<-R5 FPC; 11000101
00
1110
0000
0100
0100
1011
1000
1101
0101
0000
0000
0000
1000
35
R12<-R4  
40
0011
0000
0100
0100
1011
1000
1100
0100
0000
0000
0000
1000
36
R7<-R15 TSP; 11000110
00
1110
0000
0100
0100
1011
1000
0111
1111
0000
0000
0000
1000
37
R6<-R14  
40
0011
0000
0100
0100
1011
1000
0110
1110
0000
0000
0000
1000
38
R15<-R7 FSP; 11000111
00
1110
0000
0100
0100
1011
1000
1111
0111
0000
0000
0000
1000
39
R14<-R6  
40
0011
0000
0100
0100
1011
1000
1110
0110
0000
0000
0000
1000
40
STR->Q、CC#=INT# ALL
44
0011
0011
0100
0111
0000
0000
0000
0000
0000
0000
0000
1011
41
ARL<-R4;C0,R4<-R4+1 PCL+1->PCL,C0
00
1110
0000
0100
0011
1010
1000
0100
0100
0000
0001
0010
1000
42
ARH<-R5;R5<-R5+ C0 PCH+C0->PCH
04
0011
0000
0100
0011
1010
1000
0101
0101
0000
0011
1011
1000
44
本行微指令代替中断处理,用户做中断实验时,自写中断隐指令代替本行微指令.  
41
0011
0000
0100
0000
0001
0000
0000
0000
0000
0000
0000
1000


 注:微地址为44H的微指令,是伪中断隐指令,未执行任何操作,直接跳回41H。用户在作中断实验时,应在44H开始的微地址存放中断隐指令,同时还应实现EI、DI、IRET指令。建议扩展指令存放在中断隐指令之后的微地址中。这种处理办法,是为解决未扩展中断隐指令等之前,按了作为中断请求源的3个无锁按钮可能带来的非预期问题。