MOV R?,A MOV A,R? AND A,#II 000010XX 000011xx 000100xx II II MM MM II II 将累加器A的值送到寄存器R?中 将寄存器R?的值送入累加器A中 将立即数与累加器A中的数相与 将立即数与寄存器R?中的数相与 寄存器R?带进位右移 寄存器R?带进位左移 若进位标志置1,跳转到MM地址 若零标志置1,跳转到MM地址 将寄存器R?中的数与立即数相加 将累加器与寄存器R?相加,结果存入累加器 将寄存器R?中的值与立即数相减 将累加器与寄存器R?的值相减,结果存入累加器 AND R?,#II 000101xx SHR R? SHL R? JC MM JZ MM ADD R?,#II ADD A,R? 000110xx 000111xx 001000xx 001001xx 001010xx 001011xx SUB R?,#II 001100xx SUB A,R? 001101xx CMP A,R? JMP MM PUSH A POP A SHRN R? SHLN R? 001110xx 001111xx 010000xx 010001xx 010010xx 010011xx MM 累加器与寄存器R?的值比较,结果影响进位、零标志 无条件跳转到MM处 将累加器中的值暂存 将暂存结果送回到累加器A中 寄存器R?不带进位右移 寄存器R?不带进位左移
(2) 新的微指令集
助记符 状态 _FATCH_ T0 微地址 00 微程序 数据输出 CBFFFFF 数据打入 地址 运 移位 输出 算器 控制 uPC PC 指令寄存器IR PC输 01 FFFFFF A输出 02 FFFFFF A输出 03 FFFFFF A输出 MOV R?,#II T1 04 E7FBFF 存储器EM 寄存器R? PC出 T0 05 CBFFFF 指令寄存器 PC出 06 FFFFFF 输输A输出 A输出 A输出 07 FFFFFF A输出 MOV R?,A T1 08 FFFB9F ALU直通 寄存器R? A输出 T0 09 CBFFFF 指令寄存器IR PC输A输 写+1 +1 +1 写入 +1 +1 +1 +1 +1 +1 +1 A输 写入 +1 出 出 出 0A 出 A输出 入 +1 0B A输出 +1 MOV A,R? T1 OC FFF7F7 寄存器值R? 寄存器A A输出 T0 OD CBFFFFF 指令寄存器IR PC出 输A输出 A输出 写入 +1 0E FFFFFF +1 0F FFFFFF A输出 +1 AND A,#II T2 10 C&7FFEF 存储器值EM 寄存器W PC出 输A输出 与运算 +1 +1 T1 11 FFFE93 ALU直通 寄存器A标志位C、Z +1 T0 12 CBFFFF 指令寄存器IR PC出 输A输出 A输出 写入 +1 13 FFFFFF +1 AND R?,#II T3 14 C7FFEF 存储器EM 寄存器W PC出 输A输出 A输出 +1 +1 T2 15 FFF7F7 寄存器值R? 寄存器A +1 T1 16 FFFA9B ALU直通 寄存器R?标志位C、Z 与运算 输A输出 A输出 +1 T0 17 CBFFFF 指令寄存器IR PC出 +1 +1 SHR R? T3 18 FFEF9F ALU直通 堆栈寄存器ST +1 T2 19 FFF7F7 寄存器值R? 寄存器A A输出 +1 T1 1A FFFABF ALU右移 寄存器R?标志位C、Z A输出 带进位右移 +1 T0 1B CBFF57 堆栈寄存器ST 寄存器A指令寄存器IR PC出 输A输出 A输出 写入 +1 SHL R? T3 1C FFEF9F AlU直通 推展寄存器ST +1 T2 1D FFF7F7 寄存器值R? 寄存器A A输出 +1 T1 1E FFFADF ALU左移 寄存器R?标志位C、Z A输出 带进位左移 +1 T0 1F CBFF57 堆栈寄存器ST 寄存器A指令寄存器IR 寄存器PC PC出 PC出 输A输出 写入 +1 JC MM T1 20 C6FFFF 存储器值EM 输A输出 +1 +1 T0 21 CBFFFF 指令寄存器IR PC出 输A输出 A输出 写入 +1 22 FFFFFF +1 23 FFFFFF A输出 +1 JZ MM T1 24 C6FFFF 存储器值EM 寄存器PC PC出 输A输出 +1 +1 T0 25 CBFFFF 指令寄存器IR PC出 输A输出 A输出 写入 +1 26 FFFFFF +1 27 FFFFFF A输出 +1 ADD R?,#II T3 28 FFF7F7 寄存器值R? 寄存器A A输出 +1 T2 29 C7FFEF 存储器值EM 寄存器W PC出 输A输出 加运算 +1 +1 T1 2A FFFA98 ALU直通 寄存器R?标志位C、Z +1 T0 2B CBFFFF 指令寄存器IR PC出 输A输出 A输出 写入 +1 ADD A,R? T2 2C FFF7EF 寄存器值R? 寄存器W +1 T1 2D FFFE90 ALU直通 寄存器R?标志位C、Z 加运算 输A输出 A输出 +1 T0 2E CBFFFF 指令寄存器IR PC出 写入 +1 2F FFFFFF +1 SUB R?,#II T3 30 FFF7F7 寄存器值R? 寄存器A A输出 +1 T2 31 C7FFEF 存储器值EM 寄存器W PC出 输A输出 减运算 +1 +1 T1 32 FFFA99 ALU直通 寄存器R?标志位C、Z +1 T0 33 CBFFFF 指令寄存器IR PC出 输A输出 A输 写入 +1 SUB A,R? T2 34 FFF7EF 寄存器值寄存器W +1 R? T1 35 FFFE91 ALU直通 寄存器A标志位C、Z T0 36 CBFFFF 指令寄存器IR PC出 37 FFFFFF 输 出 减运算 A输出 A输出 写入 +1 +1 +1 CMP A,R? T3 38 FFF7EF 寄存器值R? 寄存器W A输出 +1 T2 39 FFEF9F ALU直通 堆栈寄存器ST A输出 +1 T1 3A FFFE91 ALU直通 寄存器A标志位C、Z 减运算 +1 T0 3B CBFF57 堆栈寄存器 寄存器A指令寄存器IR PC出 PC出 输A输出 +1 +1 JMP MM T1 3C C6FFFF 存储器EM 寄存器PC 输A输出 +1 +1 T0 3D CBFFFF 指令寄存器IR PC出 输A输出 A输出 写入 +1 3E FFFFFF +1 3F FFFFFF A输出 +1 PUSH A T1 40 FFEF9F ALU直通 堆栈寄存器ST A输出 +1 T0 41 CBFFFF 指令寄存器IR PC出 输A输出 A输出 写入 +1 42 FFFFFF +1 43 FFFFFF A输出 +1 POP A T1 44 FFFF57 堆栈寄存器ST 寄存器A A输出 +1 T0 45 CBFFFF 指令寄存器IR PC出 输A输出 A输出 写入 +1 46 FFFFF +1 47 FFFFF A输出 +1 SHRN R? T3 48 FFEF9F ALU直通 堆栈寄存器ST A输出 +1 T2 49 FFF7F7 寄存器值R? 寄存器A A输出 +1 T1 4A FFF9BF ALU右移 寄存器R? A输出 右移 +1 T0 4B CBFF57 堆栈寄存器ST 寄存器A指令寄存器IR PC出 输A输出 A输出 写入 +1 SHLN R? T3 4C FFEF9F ALU直通 堆栈寄存器ST +1 T2 4D FFF7F7 寄存器值R? 寄存器A A输出 +1 T1 4E FFF9DF ALU左移 寄存器R? A输出 左移 +1 T0 4F CBFF57 堆栈寄存器 寄存器A指令寄存器IR PC出 输A输出 写入 +1 5.用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序
(1)乘法
4位乘法的算法流程图与汇编语言程序清单: 1)流程图如下:
开始
被乘数送入R0 乘数送入R1 将4送入R3作计数送 寄存器A清0 R1带进位右移 CF=1?