【机组】单元模块实验的综合调试与驻机键盘和液晶显示器的使用方式

🌈个人主页:Sarapines Programmer
🔥 系列专栏:《机组 | 模块单元实验》
⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。


目录
1. 综合实验的调试
1.1 实验目的
1.2 实验连线
1.3 指令系统
1.4 微指令表
1.5 程序调试
实验一:实现普通的加、减法指令
实验二:带进位运算的模型机
实验三:数据传送实验
实验四:移位实验
实验五:转移实验
2. 驻机键盘和液晶显示器的使用方式
2.1 键盘定义
2.2 操作方法
2.2.1 读/写控存微指令(保存在6264)
2.2.2 读/写内存单元指令或数据(保存在6264)
2.2.3 控存块微代码信息与flash memory数据交换操作
2.2.4 从flash memory读回控存块
2.2.5 控存块数据写入flash memory
2.2.6 从flash memory读回到内存RAM块
2.2.7 内存块保存到flash memory中
2.2.8 微单步运行程序
2.2.9 连续运行程序
2.2.10 寄存器显示
📝总结
1. 综合实验的调试
1.1 实验目的
1、通过使用调试软件,了解程序编译、加载的过程。
2、通过微单步、单拍调试,理解模型机中的数据流向。
1.2 实验连线
各模块控制信号连接表:(或者使用提供的连线板)


1.3 指令系统
| 指令助记符 | 指令功能 | 指令编码 | 微周期 | 微操作 | 
| 取指微指令 | T0: | PC->地址总线->RAM RAM->数据总线->IR1 | ||
| ADD A,R0 ADD A,R1 ADD A,R2 ADD A,R3 | (A)+(Ri)->A | 0C 0D 0E 0F | T0: T1: T2: T3: | A->数据总线->DR1 Ri->数据总线->DR2 ALU->数据总线->A、置CY 取指微指令 | 
| SUB A,R0 SUB A,R1 SUB A,R2 SUB A,R3 | (A)-(Ri)->A | 1C 1D 1E 1F | T0: T1: T2: T3: | A->数据总线->DR1 Ri->数据总线->DR2 ALU->数据总线->A、置CY 取指微指令 | 
| MOV A,@R0 MOV A,@R1 MOV A,@R2 MOV A,@R3 | (Ri)->A | 2C 2D 2E 2F | T0: T1: T2: | Ri->数据总线->IR2 IR2->地址总线->RAM->A 取指微指令 | 
| MOV A,R0 MOV A,R1 MOV A,R2 MOV A,R3 | (Ri)->A | 3C 3D 3E 3F | T0: T1: | Ri->数据总线->A 取指微指令 | 
| MOV R0,A MOV R1,A MOV R2,A MOV R3,A | (A)->Ri | 4C 4D 4E 4F | T0: T1: | A->数据总线->Ri 取指微指令 | 
| MOV A,#data | Data->A | 5F | T0: T1: | RAM->数据总线->A 取指微指令 | 
| MOV R0,#data MOV R1,#data MOV R2,#data MOV R3,#data | Data->Ri | 6C 6D 6E 6F | T0: T1: | RAM->数据总线->A 取指微指令 | 
| LDA addr | (addr)->A | 7F | T0: T1: T2: | RAM->数据总线->IR2 IR2->地址总线,RAM->A 取指微指令 | 
| STA addr | (A)->addr | 8F | T0: T1: T2: | RAM->数据总线->IR2 IR2->地址总线,A->RAM 取指微指令 | 
| RLC A | C、A左移1位 | AF | T0: T1: | A<<1、置CY 取指微指令 | 
| RRC A | C、A右移1位 | 9F | T0: T1: | A>>1、置CY 取指微指令 | 
| JZ addr | A=0 ,Addr->PC | B3 | T0: T1: | 条件成立:RAM->PC 取指微指令 | 
| JC addr | Cy=0,Addr->PC | B7 | T0: T1: | 条件成立:RAM->PC 取指微指令 | 
| JMP addr | Addr->PC | BF | T0: T1: | RAM->PC 取指微指令 | 
| ORL A,#data | (A)或data->A | CF | T0: T1: T2: T3: | A->数据总线->DR1 RAM->数据总线->DR2 ALU->数据总线->A 取指微指令 | 
| ANL A,#data | (A) 与data->A | DF | T0: T1: T2: T3: | A->数据总线->DR1 RAM->数据总线->DR2 ALU->数据总线->A 取指微指令 | 
| HALT | 停机 | FF | T0: | 停机 | 
1.4 微指令表
| 指令助记符 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
| 微地址 | MLD | WM | RM | EIR1 | EIR2 | IR2-O | PC-O | ELP | RR | WR | HALT | X0 | X1 | ERA | RA-O | EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 | 16进制 | |
| 有效值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | * | * | 0 | 0 | 0 | 0 | 0 | * | * | * | * | * | * | ||
| 00H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | |
| 取指微指令 | 01H | |||||||||||||||||||||||||
| 02H | ||||||||||||||||||||||||||
| ADD A,RI | 03H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | FFFCF9 | 
| 
 | 04H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | FF7F79 | 
| 
 | 05H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | FFFBA9 | 
| 
 | 06H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | 
| SUB A,RI | 07H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | FFFCD6 | 
| 
 | 08H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | FF7F56 | 
| 
 | 09H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | FFFB86 | 
| 
 | 0AH | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | 
| MOV A,@RI | 0BH | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | F77FFF | 
| 
 | 0CH | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | DBFBFF | 
| 
 | 0DH | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | 
| 
 | 0EH | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| MOV A,RI | 0FH | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | FF7BFF | 
| 
 | 10H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | 
| 
 | 11H | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 12H | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| MOV RI,A | 13H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | FFBDFF | 
| 
 | 14H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | 
| 
 | 15H | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 16H | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 指令助记符 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
| 微地址 | MLD | WM | RM | EIR1 | EIR2 | IR2-O | PC-O | ELP | RR | WR | HALT | X0 | X1 | ERA | RA-O | EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 | 16进制 | |
| 有效值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | * | * | 0 | 0 | 0 | 0 | 0 | * | * | * | * | * | * | ||
| MOV A,#data | 17H | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | DDFBFF | 
| 18H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | |
| 19H | ||||||||||||||||||||||||||
| 1AH | ||||||||||||||||||||||||||
| MOV Ri,#data | 1BH | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | DDBFFF | 
| 1CH | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | |
| 1DH | ||||||||||||||||||||||||||
| 1EH | ||||||||||||||||||||||||||
| LDA A,addr | 1FH | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | D5FFFF | 
| 20H | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | DBFBFF | |
| 21H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | |
| 22H | ||||||||||||||||||||||||||
| STA addr | 23H | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | D5FFFF | 
| 24H | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | BBFDFF | |
| 25H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | |
| 26H | ||||||||||||||||||||||||||
| RRC | 27H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | FFF1EF | 
| 
 | 28H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | 
| 
 | 29H | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 2AH | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| RLC | 2BH | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | FFE9EF | 
| 
 | 2CH | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | 
| 
 | 2DH | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 2EH | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 指令助记符 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
| 微地址 | MLD | WM | RM | EIR1 | EIR2 | IR2-O | PC-O | ELP | RR | WR | HALT | X0 | X1 | ERA | RA-O | EDR1 | EDR2 | ALU-O | CN | M | S3 | S2 | S1 | S0 | 16进制 | |
| 有效值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | * | * | 0 | 0 | 0 | 0 | 0 | * | * | * | * | * | * | ||
| JZ addr | 2FH | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | D4FFFF | 
| JC addr | 30H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | 
| JMP addr | 31H | |||||||||||||||||||||||||
| 32H | ||||||||||||||||||||||||||
| ORL A,#data | 33H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | FFFCFE | 
| 34H | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | DDFF7E | |
| 35H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | FFFBBE | |
| 36H | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | |
| ANL A,#data | 37H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | FFFCFB | 
| 38H | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | DDFF7B | |
| 39H | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | FFFBBB | |
| 3AH | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4DFFFF | |
| 3BH | ||||||||||||||||||||||||||
| 3CH | ||||||||||||||||||||||||||
| 3DH | ||||||||||||||||||||||||||
| 3EH | ||||||||||||||||||||||||||
| HALT | 3FH | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | FFDFFF | 
1.5 程序调试
(实验程序要使用16进制的数字后必须带H,不然程序会默认是10进制的)
实验一:实现普通的加、减法指令
在软件HKCPT中,输入以下程序,并且编译、加载到实验平台中。

或通过键盘(键盘使用方法见第四章)输入微程序及以下程序:
| 内存地址 | 指令助记符 | 指令码或立即数 | 说明 | 
| 00H | MOV A,#55 | 5FH | 立即数55H->A | 
| 01H | 55H | ||
| 02H | MOV R0,#66 | 6CH | 立即数66H->寄存器R0 | 
| 03H | 66H | ||
| 04H | ADD A,R0 | 0CH | A内容+R0内容->A | 
| 05H | MOV R1,#33 | 6DH | 立即数33H->寄存器R1 | 
| 06H | 33H | ||
| 07H | SUB A,R1 | 1DH | A内容-R1内容->A | 
| 08H | STA 10 | 8FH | 将A内容写入RAM地址10H | 
| 09H | 10H | ||
| 0AH | HALT | FFH | 停机 | 
运行结果为:RAM 10H单元中的内容为88H
运行程序:通过软件HKCPT的微单步功能可观察各个变量的变化。
微单步运行过程显示如下:
| 微地址 | 数据流程 | 数据总线 | 地址总线 | 操作寄存器 | 
| 00H | 取指微指令 RAM->BUS->IR1 | 5FH | 00H | IR1=5FH | 
| MOV A,#55 | ||||
| 17H | BUS-> A | 55H | 01H | A=55H | 
| 18H | 取指微指令 RAM->BUS->IR1 | 6CH | 02H | IR1=6CH | 
| MOV R0,#66 | ||||
| 1BH | RAM->寄存器R0 | 66H | 03H | 寄存器R0=66H | 
| 1CH | 取指微指令 RAM->BUS->IR1 | 0CH | 04H | IR1=0CH | 
| ADD A,R0 | ||||
| 03H | A->锁存器DR1 | 55H | 无效 | DR1=55H | 
| 04H | 寄存器R0->锁存器DR2 | 66H | 无效 | DR2=66H | 
| 05H | ALU-> A | BBH | 无效 | A=BBH | 
| 06H | 取指微指令 RAM->BUS->IR1 | 6DH | 05H | IR1=6DH | 
| MOV R1,#33 | ||||
| 1BH | RAM->寄存器R1 | 33H | 06H | 寄存器R1=33 | 
| 1CH | 取指微指令 RAM->BUS->IR1 | 1DH | 07H | IR1=1DH | 
| SUB A,R1 | ||||
| 07H | A->锁存器DR1 | BBH | 无效 | DR1=BBH | 
| 08H | 寄存器R1->锁存器DR2 | 33H | 无效 | DR2=33H | 
| 09H | ALU->A | 88H | 无效 | A=88H | 
| 0AH | 取指微指令 RAM->BUS->IR1 | 8FH | 08H | IR1=8FH | 
| STA 10 | ||||
| 23H | RAM->BUS->IR2 | 10H | 09H | IR2=10H | 
| 24H | A->RAM(10H) | 88H | 10H | RAM(10)=88H | 
| 25H | 取指微指令 RAM->BUS->IR1 | 7FH | 0AH | IR1=7FH | 
| 1FH | 10H | 0BH | ||
| 20H | 88H | 10H | ||
| 21H | FFH | 0CH | IR1=FFH | |
| HALT | ||||
| 3FH | 置模型机为停止状态 | 无效 | 无效 | 置停止状态 | 
如果在运行微单步时,发现有错误或对微单步中的时序过程不清楚,可用时序单元中的按钮来手动给出4个节拍。
| 微周期 | 数据流程 | 节拍 | 数据总线 | 地址总线 | 操作寄存器 | 
| T0: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址清零 PLS2:置模型机运行 PLS3:取指微指令输出 PLS4:BUS->IR1 | 无效 无效 5FH 5FH | 无效 无效 00H 00H | 微地址:00H PC=00H 锁存微指令 IR=5FH | 
| MOV A,#55 | |||||
| T0: | BUS->A | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->A | 5FH 5FH 55H 55H | 00H 00H 01H 01H | 微地址:17H PC=01H 锁存微指令 A=55H | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC+1 PLS3:取指微指令输出 PLS4:BUS->IR1 | 55H 55H 6CH 6CH | 01H 01H 02H 02H | 微地址:18H PC=02H 锁存微指令 IR1=6CH | 
| MOV R0,#66 | |||||
| T0: | RAM->寄存器R0 | PLS1:置微地址 PLS2:PC+1 PLS3:取指微指令输出 PLS4:BUS->寄存器R0 | 6CH 6CH 66H 66H | 02H 02H 03H 03H | 微地址:1BH PC=03H 锁存微指令 寄存器R0=66H | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC+1 PLS3:取指微指令输出 PLS4:BUS->IR1 | 66H 66H 0CH 0CH | 03H 03H 04H 04H | 微地址:1CH PC=04H 锁存微指令 IR1=0CH | 
| ADD A,R0 | |||||
| T0: | A->锁存器DR1 | PLS1:置微地址 PLS2:PC+1 PLS3:取指微指令输出 PLS4:BUS->锁存器DR1 | 0CH 0CH 55H 55H | 04H 04H 无效 无效 | 微地址:03H PC=05H 锁存微指令 DR1=55H | 
| T1: | 寄存器R0->锁存器DR2 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->锁存器DR2 | 55H 55H 66H 66H | 无效 无效 无效 无效 | 微地址:04H PC=05H 锁存微指令 DR2=66H | 
| T2: | ALU->A | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->A | 66H 66H BBH BBH | 无效 无效 无效 无效 | 微地址:05H PC=05H 锁存微指令 A=BBH | 
| T3: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->IR1 | BBH BBH 6DH 6DH | 无效 无效 05H 05H | 微地址:06H PC=05H 锁存微指令 IR1=6DH | 
| MOV R1,#33 | |||||
| T0: | RAM->寄存器R1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR1 | 6DH 6DH 33H 33H | 05H 05H 06H 06H | 微地址:1BH PC=06H 锁存微指令 寄存器R1=33 | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR1 | 33H 33H 1DH 1DH | 06H 06H 07H 07H | 微地址:1CH PC=07H 锁存微指令 IR1=1DH | 
| SUB A,Ri | |||||
| T0: | A->锁存器DR1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->DR1 | 1DH 1DH BBH BBH | 07H 07H 无效 无效 | 微地址:07H PC=08H 锁存微指令 DR1=BBH | 
| T1: | 寄存器R1->锁存器DR2 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->DR2 | BBH BBH 33H 33H | 无效 无效 无效 无效 | 微地址:08H PC=08H 锁存微指令 DR2=33H | 
| T2: | ALU->A | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:ALU->A | 33H 33H 88H 88H | 无效 无效 无效 无效 | 微地址:09H PC=08H 锁存微指令 A=88H | 
| T3: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->IR1 | 88H 88H 8FH 8FH | 无效 无效 08H 08H | 微地址:0AH PC=08H 锁存微指令 IR1=8FH | 
| STA 10 | |||||
| T0: | RAM->BUS->IR2 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR2 | 8FH 8FH 10H 10H | 08H 08H 09H 09H | 微地址:23H PC=09H 锁存微指令 IR2=10H | 
| T1: | A->RAM(10H) | PLS1:微地址+1 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->RAM | 10H 10H 88H 88H | 09H 09H 10H 10H | 微地址:24H PC=0AH 锁存微指令 RAM(10)=88H | 
| T2: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->IR1 | 88H 88H FFH FFH | 10H 10H 0AH 0AH | 微地址:25H PC=0AH 锁存微指令 IR1=FFH | 
| HALT | |||||
| T0: | 置模型机为停止状态 | PLS1:置微地址 PLS2:停机 PLS3:微指令输出 PLS4:BUS->IR2 | FFH 无效 | 0AH 无效 | 微地址:3FH PC=0BH | 
实验二:带进位运算的模型机
(实验程序要使用16进制的数字后必须带H,不然程序会默认是10进制的。)
本实验提供了4条带进位的运算指令:RRC(带进位的右移),RLC(带进位的左移),ADD A,Ri(加法指令,可有进位溢出),JC addr (条件跳转),JMP addr(无条件跳转)。
RRC A 将A寄存器中的内容带进位位一起循环右移。
RLC A 将A寄存器中的内容带进位位一起循环左移
ADD A,Ri 将A寄存器的内容与Ri的内容相加,如果加法溢出将进位到CY。
JC addr 条件跳转指令,如果进位位CY溢出,跳转到addr。
JMP addr 无条件跳转指令,跳转到addr
本实验的指令如下:

用软件HKCPT来编辑、编译、加载实验平台,或通过键盘(键盘使用方法见第四章)把以下程序以16进制输入程序存储器,在调试时请关注进位位CY、A寄存器中的值。
| 内存地址 | 指令助记符 | 指令码 | 说明 | 
| 00H | MOV A,#81 | 5FH | 立即数81H->A | 
| 01H | 81H | ||
| 02H | RRC A | 9FH | A >>1 | 
| 03H | MOV A,#18 | 5FH | 立即数18H-> A | 
| 04H | 18H | ||
| 05H | RLC A | AFH | A<<1 | 
| 06H | MOV R0,#40 | 6CH | 立即数40H->寄存器R0 | 
| 07H | 40H | ||
| 08H | MOV A,#18 | 5FH | 立即数18H-> A | 
| 09H | 18H | ||
| 0AH | RLC A | AFH | A<<1 | 
| 0BH | ADD A,R0 | 0CH | (A)+(R0)->A | 
| 0CH | JC 10 | B7H | CY有进位 跳转到0FH | 
| 0DH | 10H | ||
| 0EH | JMP 0A | BFH | 跳转到0AH | 
| 0FH | 0AH | ||
| 10H | STA 20 | 8FH | 将A内容写入RAM地址20H | 
| 11H | 20H | ||
| 12H | HALT | FFH | 停机 | 
运行结果为:RAM 20H单元中的内容为20H
运行程序:
通过软件HKCPT的微单步功能可观察各个变量的变化。
微单步运行过程显示如下:
| 微地址 | 数据流程 | 数据总线 | 地址总线 | 操作寄存器 | 
| 00H | 取指微指令 RAM->BUS->IR1 | 5FH | 00H | IR1=5FH | 
| MOV A,#81 | ||||
| 17H | BUS-> A | 81H | 01H | A=81H | 
| 18H | 取指微指令 RAM->BUS->IR1 | 9FH | 02H | IR1=9FH | 
| RRC A | ||||
| 27H | A>>1 | 40H | 无效 | A=40,CY溢出 | 
| 28H | 取指微指令 RAM->BUS->IR1 | 5FH | 03H | IR1=5FH | 
| MOV A,#18 | ||||
| 17H | BUS-> A | 18H | 04H | A=18H | 
| 18H | 取指微指令 RAM->BUS->IR1 | AFH | 05H | IR1=AFH | 
| RLC A | ||||
| 2BH | A<<1 | 31H | 无效 | A=31H CY无溢出 | 
| 2CH | 取指微指令 RAM->BUS->IR1 | 6CH | 06H | IR1=6CH | 
| MOV R0,#40 | ||||
| 1BH | BUS->寄存器R0 | 40H | 07H | R0=40H | 
| 1CH | 取指微指令 RAM->BUS->IR1 | 5FH | 08H | IR1=5FH | 
| MOV A,#18 | ||||
| 17H | BUS-> A | 18H | 09H | A=18H | 
| 18H | 取指微指令 RAM->BUS->IR1 | AFH | 0AH | IR1=AFH | 
| RLC A | ||||
| 2BH | (A)<<1 | 30H | 无效 | A=30H | 
| 2CH | 取指微指令 RAM->BUS->IR1 | 0CH | 0BH | IR1=0CH | 
| ADD A,R0 | ||||
| 03H | A->锁存器DR1 | 30H | 无效 | DR1=30H | 
| 04H | 寄存器R0->锁存器DR2 | 40H | 无效 | DR2=40H | 
| 05H | ALU-> A | 70H | 无效 | ALU=70 CY无溢出 | 
| 06H | 取指微指令 RAM->BUS->IR1 | B7H | 0CH | IR1=B7H | 
| JC 0F | ||||
| 2FH | RAM->BUS->IR2 | 10H | 0DH | IR2=10H | 
| 30H | 取指微指令 RAM->BUS->IR1 | BFH | 0EH | IR1=BFH CY无溢出 | 
| JMP 0A | ||||
| 2FH | RAM->BUS->IR2 | 0AH | 0FH | IR2=0AH | 
| 30H | 取指微指令 RAM->BUS->IR1 | AFH | 0AH | IR1=AFH 跳转0AH | 
| RLC A | ||||
| 2BH | (A)<<1 | E0H | 无效 | A=E0H | 
| 2CH | 取指微指令 RAM->BUS->IR1 | 0CH | 0BH | IR1=0CH | 
| ADD A,R0 | ||||
| 03H | A->锁存器DR1 | E0H | 无效 | DR1=E0H | 
| 04H | 寄存器R0->锁存器DR2 | 40H | 无效 | DR2=40H | 
| 05H | ALU-> A | 20H | 无效 | ALU=20H CY有溢出 | 
| 06H | 取指微指令 RAM->BUS->IR1 | B7H | 0CH | IR1=B7H | 
| JC 0F | ||||
| 2FH | RAM->BUS->IR2 | 10H | 0DH | IR2=10H | 
| 30H | 取指微指令 RAM->BUS->IR1 | 8FH | 10H | IR1=8FH CY有溢出 | 
| STA 20 | ||||
| 23H | RAM->BUS->IR2 | 20H | 11H | IR2=20H | 
| 24H | A->RAM(20H) | 20H | 20H | RAM(20)=20 | 
| 25H | 取指微指令 RAM->BUS->IR1 | FFH | 12H | IR1=FFH | 
| HALT | ||||
| 3FH | 置模型机为停止状态 | 无效 | 无效 | 置停止状态 | 
如果在运行微单步时,发现有错误或对微单步中的时序过程不清楚,可用时序单元中的按钮来手动给出4个节拍。
| 微周期 | 数据流程 | 节拍 | 数据总线 | 地址总线 | 操作寄存器 | 
| T0: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址清零 PLS2:置模型机运行 PLS3:取指微指令输出 PLS4:BUS->IR1 | 无效 无效 5FH 5FH | 无效 无效 00H 00H | 微地址:00H PC=00H 锁存微指令 IR=5FH | 
| MOV A,#81 | |||||
| T0: | BUS-> A | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS-> A | 5FH 5FH 81H 81H | 00H 00H 01H 01H | 微地址:17H PC=01H 锁存微指令 A=81H | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC+1 PLS3:取指微指令输出 PLS4:BUS->IR1 | 55H 55H 9FH 9FH | 01H 01H 02H 02H | 微地址:18H PC=02H 锁存微指令 IR1=9FH | 
| RRC A | |||||
| T0: | A>>1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->寄存器R0 | 9FH 9FH 无效 无效 | 03H 03H 无效 无效 | 微地址:27H PC=03H 锁存微指令 A=40H CY=1 | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC+1 PLS3:取指微指令输出 PLS4:BUS->IR1 | 无效 无效 5FH 5FH | 无效 无效 03H 03H | 微地址:28H PC=03H 锁存微指令 IR1=5FH | 
| MOV A,#18 | |||||
| T0: | RAM->BUS->A | PLS1:置微地址 PLS2:PC+1 PLS3:取指微指令输出 PLS4:BUS->锁存器DR1 | 5FH 5FH 18H 18H | 03H 03H 04H 04H | 微地址:17H PC=04H 锁存微指令 A=18H | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->锁存器DR2 | 18H 18H AFH AFH | 04H 04H 05H 05H | 微地址:18H PC=05H 锁存微指令 IR1=AFH | 
| RLC A | |||||
| T0: | A<<1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR1 | AFH AFH 无效 无效 | 05H 05H 无效 无效 | 微地址:2BH PC=06H 锁存微指令 A=31H | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->IR1 | 无效 无效 6CH 6CH | 无效 无效 06H 06H | 微地址:2CH PC=06H 锁存微指令 IR1=6CH | 
| MOV R0,#40 | |||||
| T0: | RAM->BUS->寄存器R0 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->DR1 | 6CH 6CH 40H 40H | 06H 06H 07H 07H | 微地址:1BH PC=07H 锁存微指令 A=40H | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->DR2 | 40H 40H 5FH 5FH | 07H 07H 08H 08H | 微地址:1CH PC=08H 锁存微指令 IR1=5FH | 
| MOV A,#18 | |||||
| T0: | RAM->BUS-> A | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->A | 8FH 8FH 18H 18H | 08H 08H 09H 09H | 微地址:17H PC=09H 锁存微指令 A=18H | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->RAM | 18H 18H AFH AFH | 09H 09H 0AH 0AH | 微地址:18H PC=0AH 锁存微指令 IR1=AFH | 
| RLC A | |||||
| T0: | A>>1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->A | AFH AFH 无效 无效 | 0AH 0AH 无效 无效 | 微地址:2BH PC=0BH 锁存微指令 A=30H | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->RAM | 无效 无效 0CH 0CH | 无效 无效 0BH 0BH | 微地址:2CH PC=0BH 锁存微指令 IR1=0CH | 
| ADD A,R0 | |||||
| T0: | A->BUS->锁存器DR1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->A | 0CH 0CH 30H 30H | 0BH 0BH 无效 无效 | 微地址:03H PC=0CH 锁存微指令 DR1=30H | 
| T1: | R0->BUS->锁存器DR2 | PLS1:微地址+1 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->RAM | 30H 30H 40H 40H | 无效 无效 无效 无效 | 微地址:04H PC=0CH 锁存微指令 DR2=40H | 
| T2: | ALU->BUS->A | PLS1:置微地址 PLS2:停机 PLS3:微指令输出 PLS4:BUS->IR2 | 40H 40H 70H 70H | 无效 无效 无效 无效 | 微地址:05H PC=0CH 锁存微指令 A=70 CY=0 | 
| T3: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->RAM | 70H 70H B7H B7H | 无效 无效 0CH 0CH | 微地址:06H PC=0CH 锁存微指令 A=70 CY=0 | 
| JC 10 | |||||
| T0: | RAM->BUS->IR2 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR2 | B7H B7H 10H 10H | 0CH 0CH 0DH 0DH | 微地址:2FH PC=0DH 锁存微指令 IR2=10H | 
| T1: | 因CY=0 不跳转 取指 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->A | 10H 10H BFH BFH | 0DH 0DH 0EH 0EH | 微地址:30H PC=0EH 锁存微指令 无操作 | 
| JMP 0A | |||||
| T0: | RAM->BUS->IR2 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR2 | BFH B7H 0AH 0AH | 0EH 0EH 0FH 0FH | 微地址:2FH PC=0FH 锁存微指令 IR2=0AH | 
| T1: | 取指微指令 RAM->BUS->IR1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR2 | 0AH 0AH AFH AFH | 0FH 0FH 0AH 0AH | 微地址:30H PC=0AH 锁存微指令 IR1=AFH | 
| RLC A | |||||
| T1: | A<<1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR2 | 0AH 0AH AFH AFH | 0FH 0FH 0AH 0AH | 微地址:2BH PC=0BH 锁存微指令 IR1=E0H | 
| T2: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->RAM | 70H 70H B7H B7H | 无效 无效 0CH 0CH | 微地址:2CH PC=0BH 锁存微指令 A=70 CY=0 | 
| ADD A,R0 | |||||
| T0: | A->BUS->锁存器DR1 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->A | 0CH 0CH 30H 30H | 0BH 0BH 无效 无效 | 微地址:03H PC=0CH 锁存微指令 DR1=E0H | 
| T1: | R0->BUS->锁存器DR2 | PLS1:微地址+1 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->RAM | 30H 30H 40H 40H | 无效 无效 无效 无效 | 微地址:04H PC=0CH 锁存微指令 DR2=40H | 
| T2: | ALU->BUS->A | PLS1:置微地址 PLS2:停机 PLS3:微指令输出 PLS4:BUS->IR2 | 40H 40H 70H 70H | 无效 无效 无效 无效 | 微地址:05H PC=0CH 锁存微指令 A=20 CY=1 | 
| T3: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->RAM | 70H 70H B7H B7H | 无效 无效 0CH 0CH | 微地址:06H PC=0CH 锁存微指令 A=70 CY=0 | 
| JC 10 | |||||
| T0: | RAM->BUS->IR2 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR2 | B7H B7H 10H 10H | 0CH 0CH 0DH 0DH | 微地址:2FH PC=0DH 锁存微指令 IR2=10H | 
| T1: | 因CY=1 跳转 取指 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->A | 10H 10H 8FH 8FH | 0DH 0DH 10H 10H | 微地址:30H PC=10H 锁存微指令 无操作 | 
| STA 20 | |||||
| T0: | RAM->BUS->IR2 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR2 | B7H B7H 20H 20H | 10H 10H 11H 11H | 微地址:13H PC=11H 锁存微指令 IR2=10H | 
| T1: | A->BUS->RAM(20) | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->A | 10H 10H 20H 20H | 0DH 0DH 20H 20H | 微地址:14H PC=12H 锁存微指令 A->RAM(20) | 
| T3: | 取指微指令 RAM->BUS->IR1 | PLS1:微地址+1 PLS2:PC不变 PLS3:微指令输出 PLS4:BUS->RAM | 20H 20H B7H B7H | 20H 20H 0CH 0CH | 微地址:15H PC=12H 锁存微指令 IR1=FFH | 
| HALT | |||||
| T0: | 置模型机为停止状态 | PLS1:置微地址 PLS2:PC+1 PLS3:微指令输出 PLS4:BUS->IR2 | FFH 无效 | 12H 无效 | 微地址:3FH PC=13H | 
| T1: | 置模型机为停止状态 | ||||
实验三:数据传送实验
(实验程序要使用16进制的数字后必须带H,不然程序会默认是10进制的。)

或通过键盘(键盘使用方法见第四章)输入微程序及以下程序:
| 内存地址 | 指令助记符 | 指令码或立即数 | 说明 | 
| 00H | MOV R0, #03H | 6CH | 立即数12H->A | 
| 01H | 03H | ||
| 02H | MOV R1, #66H | 6DH | 立即数66H->R0 | 
| 03H | 66H | ||
| 04H | MOV A, 12H | 5FH | |
| 05H | 12H | 寄存器R0内容->A | |
| 06H | MOV A, R0 | 3CH | R0内容->A | 
| 07H | MOV A, @R0 | 2CH | |
| 08H | STA 10 | 8FH | 将A内容写入RAM地址10H | 
| 09H | 10 | ||
| 0AH | HALT | FFH | 停机 | 
运行结果为:RAM 10H单元中的内容为66H
运行程序:通过软件HKCPT的微单步功能可观察各个变量的变化。
微单步运行过程显示如下:
| 微地址 | 数据流程 | 数据总线 | 地址总线 | 操作寄存器 | 
| 00H | 取指微指令 RAM->BUS->IR1 | 6CH | 00H | IR1=6CH | 
| MOV R0, #03H | ||||
| 1BH | RAM->寄存器R0 | 03H | 01H | 寄存器R0=03H | 
| 1CH | 取指微指令 RAM->BUS->IR1 | 6DH | 02H | IR1=6DH | 
| MOV R1,#66 | ||||
| 1BH | RAM->寄存器R1 | 66H | 03H | 寄存器R1=66H | 
| 1CH | 取指微指令 RAM->BUS->IR1 | 5FH | 04H | IR1=5FH | 
| MOV A, #12H | ||||
| 17H | RAM->A | 12H | 05H | A=12H | 
| 18H | 取指微指令 RAM->BUS->IR1 | 3CH | 06H | IR1=3CH | 
| MOV A,R0 | ||||
| 0FH | R0寄存器>A | 03H | 无效 | A=03H | 
| 10H | 取指微指令 RAM->BUS->IR1 | 2CH | 07H | IR1=2CH | 
| MOV A,@R0 | ||||
| 0BH | R0寄存器->BUS->IR2寄存器 | 03H | 无效 | IR2=03H | 
| 0CH | IR2->地址BUS,RAM->数据BUS->A | 66H | 03H | A=66H | 
| 0DH | 取指微指令 RAM->BUS->IR1 | 8FH | 08H | IR1=8FH | 
| STA 10 | ||||
| 23H | RAM->BUS->IR2 | 10H | 09H | IR2=10H | 
| 24H | A->RAM(10H) | 66H | 10H | RAM(10)=66H | 
| 25H | 取指微指令 RAM->BUS->IR1 | FFH | 0AH | IR1=FFH | 
| HALT | ||||
| 3FH | 置模型机为停止状态 | 无效 | 无效 | 置停止状态 | 
实验四:移位实验
(实验程序要使用16进制的数字后必须带H,不然程序会默认是10进制的。)
 在软件HKCPT中,输入以下程序,并且编译、加载到实验平台中。
或通过键盘(键盘使用方法见第四章)输入微程序及以下程序:
| 内存地址 | 指令助记符 | 指令码或立即数 | 说明 | 
| 00H | MOV A,#55H | 5FH | 立即数55H->A | 
| 01H | 55H | ||
| 02H | RRC A | 9FH | A >>1 | 
| 03H | RLC A | AFH | A<<1 | 
| 05H | STA 10 | 8FH | 将A内容写入RAM地址10H | 
| 06H | 10 | ||
| 07H | HALT | FFH | 停机 | 
运行结果为:RAM 10H单元中的内容为55H
运行程序:通过软件HKCPT的微单步功能可观察各个变量的变化。
微单步运行过程显示如下:
| 微地址 | 数据流程 | 数据总线 | 地址总线 | 操作寄存器 | 
| 00H | 取指微指令 RAM->BUS->IR1 | 5FH | 00H | IR1=5FH | 
| MOV A,#55H | ||||
| 17H | RAM->寄存器A | 55H | 01H | A=55H | 
| 18H | 取指微指令 RAM->BUS->IR1 | 9FH | 02H | IR1=9F | 
| RRC A | ||||
| 27H | A>>1 | 2AH | 无效 | A=2A | 
| 28H | 取指微指令 RAM->BUS->IR1 | AFH | 03H | IR1=AFH | 
| RLC A | ||||
| 2BH | A<<1 | 55H | 无效 | A=55H | 
| 2CH | 取指微指令 RAM->BUS->IR1 | 8FH | 04H | IR1=8FH | 
| STA 10 | ||||
| 23H | RAM->BUS->IR2 | 10H | 05H | IR2=10H | 
| 24H | A->RAM(10H) | 55H | 10H | RAM(10)=88H | 
| 25H | 取指微指令 RAM->BUS->IR1 | FFH | 06H | IR1=FFH | 
| HALT | ||||
| 3FH | 置模型机为停止状态 | 无效 | 无效 | 置停止状态 | 
实验五:转移实验
(实验程序要使用16进制的数字后必须带H,不然程序会默认是10进制的。)
 在软件HKCPT中,输入以下程序,并且编译、加载到实验平台中。
或通过键盘(键盘使用方法见第四章)输入微程序及以下程序:
| 内存地址 | 指令助记符 | 指令码或立即数 | 说明 | 
| 00H | MOV A,#01 | 5FH | 立即数01H->A | 
| 01H | 01H | ||
| 02H | MOV R0,#01 | 6CH | 立即数01H->R0 | 
| 03H | 01H | ||
| 04H | SUB A,R0 | 1CH | A内容-R0内容->A | 
| 05H | JC 4 | B7H | 条件跳转至04H | 
| 06H | 04H | ||
| 07H | JZ 4 | B3H | 条件跳转至04H | 
| 08H | 04H | ||
| 09H | JMP D | BFH | 无条件跳转至0DH | 
| 0AH | 0DH | ||
| 0BH | MOV A,88H | 5FH | 立即数88H->A | 
| 0CH | 88H | ||
| 0DH | STA 10 | 8FH | 将A内容写入RAM地址10H | 
| 0EH | 10 | ||
| 0FH | HALT | FFH | 停机 | 
运行结果为:RAM 10H单元中的内容为FEH
运行程序:通过软件HKCPT的微单步功能可观察各个变量的变化。
微单步运行过程显示如下:
| 微地址 | 数据流程 | 数据总线 | 地址总线 | 操作寄存器 | 
| 00H | 取指微指令 RAM->BUS->IR1 | 5FH | 00H | IR1=5FH | 
| MOV A #01H | ||||
| 17H | RAM->寄存器R0 | 01H | 01H | A=01H | 
| 18H | 取指微指令 RAM->BUS->IR1 | 6CH | 02H | IR1=6CH | 
| MOV R0,#01H | ||||
| 1BH | RAM->寄存器R0 | 01H | 03H | 寄存器R0=01H | 
| 1CH | 取指微指令 RAM->BUS->IR1 | 1CH | 04H | IR1=1CH | 
| SUB A,R0 | ||||
| 07H | A->Dbus->DR1 | 01H | 无效 | DR1=01H | 
| 08H | Ri->Dbus->DR2 | 01H | 无效 | DR2=01H | 
| 09H | ALU->Dbus->A | 00H | 无效 | A=00H | 
| 0AH | 取指微指令 RAM->BUS->IR1 | B7H | 05H | IR1=B7H | 
| JC 4 | ||||
| 2FH | Dbus->IR2 | 04H | 06H | IR2=04H | 
| 30H | IR2内容->Abus, Dbus->PC | B3H | 07H | IR1=B3H | 
| JZ 4 | ||||
| 2FH | Dbus->IR2 | 04H | 08H | IR2=04H | 
| 30H | IR2内容->Abus, Dbus->PC | 1CH | 04H | IR1=1CH | 
| SUB A,R0 | ||||
| 07H | A->Dbus->DR1 | 00H | 无效 | DR1=00H | 
| 08H | Ri->Dbus->DR2 | 01H | 无效 | DR2=01H | 
| 09H | ALU->Dbus->A | FFH | 无效 | A=FFH | 
| 0AH | 取指微指令 RAM->BUS->IR1 | B7H | 05H | IR1=B7H | 
| JC 4 | ||||
| 2FH | Dbus->IR2 | 04H | 06H | IR2=04H | 
| 30H | IR2内容->Abus, Dbus->PC | 1CH | 04H | IR1=1CH | 
| SUB A,R0 | ||||
| 07H | A->Dbus->DR1 | FFH | 无效 | DR1=FFH | 
| 08H | Ri->Dbus->DR2 | 01H | 无效 | DR2=01H | 
| 09H | ALU->Dbus->A | FEH | 无效 | A=FEH | 
| 0AH | 取指微指令 RAM->BUS->IR1 | B7H | 05H | IR1=B7H | 
| JC 4 | ||||
| 2FH | Dbus->IR2 | 04H | 06H | IR2=04H | 
| 30H | IR2内容->Abus, Dbus->PC | B3H | 07H | IR1=B3H | 
| JZ 4 | ||||
| 2FH | Dbus->IR2 | 04H | 08H | IR2=04H | 
| 30H | IR2内容->Abus, Dbus->PC | BFH | 09H | IR1=BFH | 
| JMP D | ||||
| 2FH | Dbus->IR2 | 0DH | 0AH | IR2=0DH | 
| 30H | 取指微指令 RAM->BUS->IR1 | 8FH | 0DH | IR1=8FH | 
| STA 10 | ||||
| 23H | RAM->BUS->IR2 | 10H | 0EH | IR2=10H | 
| 24H | A->RAM(10H) | FEH | 10H | RAM(10)=FEH | 
| 25H | IR2内容->Abus, Dbus->PC | FFH | 0FH | IR1=FFH | 
| HALT | ||||
| 3FH | 置模型机为停止状态 | 无效 | 无效 | 置停止状态 | 
2. 驻机键盘和液晶显示器的使用方式
2.1 键盘定义
打开电源上电后按实验仪任意键,即可进入键盘监控。液晶显示器作为键盘监控的输出,用于显示地址、指令、数据或微指令信息等。24个键中有16个数字键,8个控制键。表X-1列出这8个控制键的名称和功能,数字键用于输入地址、指令和数据信息。
表X-1 控制键说明
| TAB | 光标键 | 用于移动光标选择菜单项或将光标从地址到数据之间来回切换 | 
| MENU | 主菜单键 | 无论在何种操作下,按下此键,将返回到主菜单 | 
| LAST | 减1键 | 地址减1 | 
| NEXT | 加1键 | 地址加1 | 
| STEP | 单拍键 | 单步运行程序 | 
| GO/STOP | 运行/停止键 | 奇数次按此键,启动运行程序,偶数次停止运行 | 
| SFR | 寄存器键 | 显示寄存器 | 
| Enter | 确认键 | 对修改,备份操作时的确认 | 
进入键盘监控后,液晶屏上显示主菜单:
1、Mcode 2、Rcode
3、2416 4、RUN
在主菜单下可以进行以下操作:
(1)选择1进行微代码操作
(2)选择2进行RAM程序和数据操作
(3)选择3进行把微代码和RAM程序备份到24C08中去,或者从24C08中读取微代码和RAM程序
(4)选择4运行程序
以上操作可以按数字键“1-4”进行选择执行,也可以按TAB键移动光标来选择,并由按“确认”键来执行,其中选“4”等同于按RUN键,如果要停止运行程序,再按“RUN/STOP”键即可。
(5)按“STEP”键单步执行程序
(6)按“SFR”键,显示特殊寄存器内容
下面按功能分类介绍实验系统监控功能及操作方法:
(7)监控单元的“RST”键只作调试用,与实验无关。
2.2 操作方法
2.2.1 读/写控存微指令(保存在6264)
在主菜单下选择“1”
屏幕上显示:ADDR MICRO CODE
00 xx xx xx
地址 微代码
光标定位在地址处,按“TAB”键,在地址与微代码之间切换;在光标所在处,按数字键即可对地址或微代码进行修改;按“Last”键,修改后的微指令写入相应单元后,地址减1;按“Next”键或“Enter”键,修改后的微指令写入相应单元后,地址加1。
2.2.2 读/写内存单元指令或数据(保存在6264)
在主菜单下选择“2”
屏幕上将显示:ADDR RAM CODE
xx xx
地址 指令或数据
光标定位在地址处,按“TAB”键,光标在地址与指令或数据之间切换;按数字键即可对光标所在处的地址或者指令数据进行修改;按“Last”键或者“Next”和“Enter”键,可将修改后的指令或数据写入相应单元中去,然后地址减1或加1。
2.2.3 控存块微代码信息与flash memory数据交换操作
首先在主菜单下选“3”,液晶屏上将显示子菜单:
1、RD→M 2、M→WR
3、RD→R 4、R→WR
(1)选择1进行里面flash memory存储的数据读回控存块。
(2)选择2进行控存块数据写入flash memory操作。
(3)选择3进行flash memory里面存储的数据读回到RAM。
(4)选择4进行RAM块写入flash memory操作。
2.2.4 从flash memory读回控存块
主菜单选“3”
子菜单选“1”,屏幕上将显示:
flash memory源地址 长度 微代码目标地址
ADDR LEN ADDR
00 001 00
光标定义在flash memory源地址处,按“TAB”键将光标在源地址、长度、目标地址之间切换,可供修改地址和长度;按“Enter”键将flash memory的源地址处开始的内容读到控存块目标地址处,长度由LEN决定。
2.2.5 控存块数据写入flash memory
主菜单选“3”
在子菜单下选择“2”,液晶屏上将显示:
微程序地址 长度
ADDR LEN 24C08
00 001
光标定位在微程序地址处,按“TAB”键可将光标在地址和长度之间切换,一旦地址和长度确定后,按“Enter”键即可以将指定地址,指定长度单元的微代码信息保存到flash memory中0地址开始的存储单元中去,并返回到上一级子菜单。
2.2.6 从flash memory读回到内存RAM块
主菜单选“3”
子菜单选“3”,屏幕上将显示:
flash memory源地址 长度 RAM目标地址
ADDR LEN ADDR
00 001 00
光标定义在flash memory源地址处,按“TAB”键将光标在源地址、长度、目标地址之间切换,可供修改地址和长度;按“Enter”键将flash memory的源地址处开始的内容读到RAM目标地址处,长度由LEN决定。
2.2.7 内存块保存到flash memory中
主菜单选“3”
在子菜单下选择“4”液晶屏上将显示:
RAM地址 长度
ADDR LEN 24C08
00 001
光标定位在RAM地址处,按“TAB”键可将光标在地址和长度之间切换,一旦地址和长度确定后,按“Enter”键即可以将指定地址,指定长度单元的RAM程序或数据保存到flash memory中0地址开始的存储单元中去,并返回到上一级子菜单。
2.2.8 微单步运行程序
在主菜单下按“STEP”键,再按ENTER,实验系统将单拍执行程序一次,然后屏幕上显示执行后的结果。
MA:XX 微代码地址
PC=:XX PC 指针
2.2.9 连续运行程序
在主菜单下按“RUN/STOP”键或“4”,实验系统将连续执行程序,如果遇到HALT指令或再次按“RUN/STOP”键,停止运行,並在液晶屏上显示执行结果。
MA:XX 微代码地址
PC=:XX PC 指针
2.2.10 寄存器显示
在主菜单下按“SFR”键,液晶屏上显示微指令代码、指令或数据地址、程序指针、累加器内容。
PC DR1 DR2 A ALU
XX XX XX XX XX
程序指针 数据地址 累加器内容 算术逻辑单元内容
📝总结
计算机组成原理领域就像一片广袤而未被完全探索的技术海洋,邀请你勇敢踏足数字世界和计算机组成原理的神秘领域。这是一场结合创造力和技术挑战的学习之旅,从基础概念到硬件实现,逐步揭示更深层次的计算机结构、指令集架构和系统设计的奥秘。渴望挑战计算机组成原理的学习路径和掌握计算机硬件的技能?不妨点击下方链接,一同探讨更多数字技术的奇迹吧。我们推出了引领趋势的💻 计算机组成原理专栏:《机组 | 模块单元实验》,旨在深度探索计算机系统技术的实际应用和创新。🌐💡


相关文章:
 
【机组】单元模块实验的综合调试与驻机键盘和液晶显示器的使用方式
🌈个人主页:Sarapines Programmer🔥 系列专栏:《机组 | 模块单元实验》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 1. 综合实验的调试 1.1 实验…...
React中实现虚拟加载滚动
前言:当一个页面中需要接受接口返回的全部数据进行页面渲染时间,如果数据量比较庞大,前端在渲染dom的过程中需要花费时间,造成页面经常出现卡顿现象。 需求:通过虚拟加载,优化页面渲染速度 缺点:…...
 
vue中的Mutations
目录 一:介绍 二:例子 一:介绍 Vuex 中的 mutation 非常类似于事件: 每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的函数,并且它会接受 sta…...
 
C#用 DateAndTime.DateAdd方法和DateTime.Add(TimeSpan) 方法分别添加一段时间间隔
目录 一、基本方法 1.用 DateAndTime.DateAdd方法添加一段时间间隔 2.用DateTime.Add方法添加一段时间间隔 二、实例 1.实例1:用 DateAndTime.DateAdd方法 2.实例2:用DateTime.Add方法 一、基本方法 1.用 DateAndTime.DateAdd方法添加一段时间间隔…...
 
四、Kotlin 表达式
1. 常量 & 变量 1.1 可读写变量(var) var x initValue // x 称为可读写变量注意:当 var 声明的变量做成员属性时,默认提供 setter/getter 方法。 1.2 只读变量(val) val x initValue // x 称为只…...
 
Web开发4:单元测试
在Web开发中,单元测试是一种重要的开发实践,它可以帮助我们确保代码的质量和可靠性。通过编写和运行单元测试,我们可以验证代码的正确性,减少错误和缺陷,并提高代码的可维护性。本文将介绍单元测试的概念、好处以及如何…...
Ubuntu 16 让ufw防火墙控制docker容器中所有端口
使用docker ps 查询docker在运行端口。 rootai-0003:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …...
 
<蓝桥杯软件赛>零基础备赛20周--第18周--动态规划初步
报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周。 在QQ群上交流答疑&am…...
vb如何获取鼠标形状的特征码
vb如何获取鼠标形状的特征码 好像按键精灵有一个GetCursorShape()函数可以获取特征码,不知道VB6能不能实现类似的功能? 附注: 1 最好是机器无关的,不是也可以。 2 特征码就是一串数字,用来区分不同的鼠标形状。 3 获取…...
 
chroot: failed to run command ‘/bin/bash’: No such file or directory
1. 问题描述及原因分析 在busybox的环境下,执行 cd rootfs chroot .报错如下: chroot: failed to run command ‘/bin/bash’: No such file or directory根据报错应该rootfs文件系统中缺少/bin/bash,进入查看确实默认是sh,换成…...
 
蓝桥杯备战——2.矩阵键盘
1.分析原理图 由上图可以看到若J5跳线帽接地,就S4~S7就可以当做四路独立按键,若接到P44,则就是4*4的矩阵键盘。 2.独立按键处理 相对传统的按键延时消抖方案,这里我采用更高效,更经典,更偏向产品级应用的…...
 
Docker部署思维导图工具SimpleMindMap并实现公网远程访问
文章目录 1. Docker一键部署思维导图2. 本地访问测试3. Linux安装Cpolar4. 配置公网地址5. 远程访问思维导图6. 固定Cpolar公网地址7. 固定地址访问 SimpleMindMap 是一个可私有部署的web思维导图工具。它提供了丰富的功能和特性,包含插件化架构、多种结构类型&…...
 
机器学习实验2——线性回归求解加州房价问题
文章目录 🧡🧡实验内容🧡🧡🧡🧡数据预处理🧡🧡代码缺失值处理特征探索相关性分析文本数据标签编码数值型数据标准化划分数据集 🧡🧡线性回归🧡&am…...
 
宝塔+nextcloud+docker+Onlyoffice 全开启https
折腾了我三天的经验分享 1.宝塔创建网站 nextcloud版本为28.0.1 php8.2 ,导入nextcloud绑定域名对应的证书 ,不用创建mysql 因为nextcloud 要求是mariadb:10.7 宝塔里没有,就用docker安装一个 端口设置为3307 将数据库文件映射出来/ww…...
呼吸机电机控制主控MCU方案
呼吸机是一种能代替、控制或改变人的正常生理呼吸,增加肺通气量,改善呼吸功能,减轻呼吸功消耗,节约心脏储备能力的装置。呼吸机连接一条管子到患者的嘴或鼻子,氧气量可以通过监视器加以控制。 基于灵动微控制器的呼吸…...
 
gitlab备份-迁移-升级方案9.2.7升级到15版本最佳实践
背景 了解官方提供的版本的升级方案 - GitLab 8: 8.11.Z 8.12.0 8.17.7 - GitLab 9: 9.0.13 9.5.10 9.2.7 - GitLab 10: 10.0.7 10.8.7 - GitLab 11: 11.0.6 11.11.8 - GitLab 12: 12.0.12 12.1.17 12.10.14 - GitLab 13: 13.0.14 13.1.11 13.8.8 13.12.15 - G…...
redis面试题合集-基础
前言 又来到每日的复习时刻,昨天我们学习了mysql相关基础知识,还有分布式数据库介绍(后续总结时再持续更新)。今日继续学习缓存杀器:redis redis基础面试题合集 什么是Redis? Redis是一个开源的、内存中…...
(Unity)C# 中的字符串格式化
前言 在软件开发中,理解和掌握字符串的格式化及调试技巧对于编写高效和可维护的代码至关重要。 字符串插值 ($ 符号) 在 C# 中,字符串插值是通过在字符串前加 $ 符号来实现的。这允许我们将变量、表达式或函数调用直接嵌入到字符串中。 string name &qu…...
 
【项目日记(五)】第二层: 中心缓存的具体实现(上)
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:项目日记-高并发内存池⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你做项目 🔝🔝 开发环境: Visual Studio 2022 项目日…...
 
使用PSIM软件生成DSP28335流水灯程序
最近在学习DSP28335芯片,然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片,于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。 工程下载链接 https://download.csdn.net/download/qq_20…...
 
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
 
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
 
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
 
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
 
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
