助记符 微地址 微程序 数据输出 数据打入 地址输出 运算器 移位控制 PC PC MOV R?,#II 04 MOV A,R? ADD R?,A 05 08 09 0C 0D 0E C7FBFF CBFFFF FFF7F7 CBFFFF FFF7EF FFFA98 CBFFFF FFF7F7 C7FFEF FFFA98 CBFFFF FFFF8F FFF7F7 FFFA99 CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF C6FFFF 存储器值EM 浮空 寄存器值R? 浮空 寄存器R? ALU直通 浮空 寄存器值R? 存储器值EM ALU直通 浮空 ALU直通 寄存器R? ALU直通 浮空 存储器值EM 寄存器值R? ALU直通 浮空 存储器EM 浮空 存储器值寄存器R? 指令寄存器IR 寄存器W 指令寄存器IR 寄存器W PC输出 PC输出 浮空 PC输出 浮空 A输出 A输出 A输出 A输出 A输出 加运算 A输出 A输出 A输出 加运算 A输出 A输出 A输出 减运算 A输出 A输出 A输出 与运算 A输出 A输出 A输出 A输出 +1 写入 +1 +1 写入 +1 +1 +1 寄存器R?浮空 标志位C,Z 指令寄存器IR 寄存器A 寄存器W PC输出 浮空 PC输出 写入 +1 +1 ADD R?,#II 10 SUB R?,A CHECK R?,#II JMP MM JC MM 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 20 写入 +1 +1 寄存器R?浮空 标志位C,Z 指令寄存器IR 寄存器W 寄存器A PC输出 浮空 浮空 写入 +1 +1 +1 +1 寄存器R?浮空 标志位C,Z 指令寄存器IR 寄存器W 寄存器A 寄存器A标志位C,Z 指令寄存器IR 寄存器PC 指令寄存器IR 寄存器PC PC输出 PC输出 浮空 浮空 PC输出 PC输出 PC输出 PC输出 写入 +1 +1 +1 +1 +1 写入 +1 +1 写入 写入 +1 +1 写入 EM JZ MM SHL R? SHR R? CMP R?,A OUT R?
汇 编 指 令 程序地址 机器码 MOV R0,#0 00 01 MOV R1,#9 02 03 04 00 05 09 初始化被乘数 初始化过程积 C7FBFF CBFFFF C7FBFF CBFFFF 01 04 02 05 03 04 04 05 R1=09H 指令说明 微程序 PC PC 运行时寄存器或存储器的值 R0=00H 21 24 25 2C 2D 2E 30 31 32 34 35 36 37 38 39 3A CBFFFF C6FFFF CBFFFF FFF7F7 FFF9DF CBFFFF FFF7F7 FFF9BF CBFFFF FFFF8F FFF7F7 FFFE99 CBFFFF FFD7FF FFD7F7 CBFFFF 浮空 存储器值EM 浮空 寄存器值R? ALU左移 浮空 寄存器值R? ALU右移 浮空 ALU直通 寄存器值R? ALU直通 浮空 寄存器值R? 寄存器值R? 浮空 指令寄存器IR 寄存器PC 指令寄存器IR 寄存器A 寄存器R? 指令寄存器IR 寄存器A 寄存器R? 指令寄存器IR 寄存器W 寄存器A PC输出 PC输出 PC输出 浮空 浮空 PC输出 浮空 浮空 PC输出 浮空 浮空 A输出 A输出 A输出 A输出 A输出 A输出 A输出 A输出 A输出 A输出 A输出 减运算 A输出 A输出 A输出 A输出 写入 +1 +1 写入 写入 +1 +1 左移 +1 写入 +1 +1 右移 +1 写入 +1 +1 +1 +1 标志位C,Z 浮空 指令寄存器IR 用户OUT PC输出 浮空 写入 +1 +1 +1 寄存器A 浮空 用户OUT 指令寄存器IR PC输出 写入 +1 MOV R2,#6 04 05 06 06 1A 0F 初始化乘数 C7FBFF CBFFFF 05 04 06 05 07 18 08 19 08 1A 08 1B 09 24 0A 25 0B 18 0C 19 0C 1A 0C 1B 0D 24 10 25 11 2C 11 2D 11 2E R2=06H LAB: CHECK R2,#0FH 06 07 检测乘数是否为0(将0FH送至寄存器W,将R2送至寄存器A中,进C7FFEF FFF7F7 CBFFFF W=0FH A=06H 行与运算,结果由D送至A中。) FFFE93 JZ LAST 08 09 24 14 1A 01 乘数为0(ZF=1),则跳转到LAST C6FFFF CBFFFF 检测乘数最后一位是否为1(将01H送至寄存器W,将R2送至寄存器A中,进行与运算,结果由D送至A中。) C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF FFF7F7 FFF9DF CBFFFF CHECK R2,#01H 0A 0B W=01H A=06H JZ NEXT 0C 0D 24 10 2D 乘数最后一位为0(ZF=1),则跳转到NEXT 被乘数左移一位(将R1值送至寄存器A中,左移将L中的值送回R1) NEXT: SHL R1 10 R1=12H SHR R2 11 32 乘数右移一位(将R2值送至寄存FFF7F7 CBFFFF 12 30 12 31 12 32 13 1C 06 1D 07 18 08 19 08 1A 08 1B 09 24 0A 25 0B 18 0C 19 0C 1A 0C 1B 0D 24 0E 25 0F 08 0F 09 10 1C 10 1D 10 1E 11 2C 11 2D 11 2E R2=03H 器A中,右移将R中的值送回R2) FFF9BF JMP LAB 12 13 1C 06 1A 0F 无条件跳转至LAB C6FFFF CBFFFF LAB: CHECK R2,#0FH 06 07 检测乘数是否为0(将0FH送至寄存器W,将R2送至寄存器A中,进C7FFEF FFF7F7 CBFFFF W=0FH A=03H 行与运算,结果由D送至A中。) FFFE93 JZ LAST 08 09 24 14 1A 01 乘数为0(ZF=1),则跳转到LAST C6FFFF CBFFFF 检测乘数最后一位是否为1(将01H送至寄存器W,将R2送至寄存器A中,进行与运算,结果由D送至A中。) C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF FFF7F7 CBFFFF CHECK R2,#01H 0A 0B W=01H A=03H JZ NEXT 0C 0D 24 10 09 乘数最后一位为0(ZF=1),则跳转到NEXT 将被乘数R1送至寄存器A中 MOV A,R1 0E A=12H ADD R0,A 0F 0C 过程积加上被乘数(将R0上送至W中,A与W做加法运算) FFF7EF FFFA98 CBFFFF R0=12H NEXT: SHL R1 10 2D 被乘数R1左移一位(将R1值送至寄存器A中,左移将L中的值送回R1) FFF7F7 FFF9DF CBFFFF R1=24H SHR R2 11 32 乘数右移一位(将R2值送至寄存FFF7F7 CBFFFF 12 30 12 31 12 32 13 1C 06 1D 07 18 08 19 08 1A 08 1B R2=01H 器A中,右移将R中的值送回R2) FFF9BF JMP LAB 12 13 1C 06 1A 0F 无条件跳转至LAB C6FFFF CBFFFF LAB: CHECK R2,#0FH 06 07 检测乘数是否为0(将0FH送至寄存器W,将R2送至寄存器A中,进C7FFEF FFF7F7 CBFFFF W=0FH A=01H 行与运算,结果由D送至A中。) FFFE93 JZ LAST 08 09 24 14 1A 01 乘数为0(ZF=1),则跳转到LAST C6FFFF CBFFFF 检测乘数最后一位是否为1(将01H送至寄存器W,将R2送至寄存器A中,进行与运算,结果由D送至A中。) C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF FFF7F7 CBFFFF 09 24 0A 25 0B 18 0C 19 0C 1A 0C 1B 0D 24 0E 25 0F 08 0F 09 10 0C 10 0D 10 0E CHECK R2,#01H 0A 0B W=01H A=01H JZ NEXT 0C 0D 24 10 09 乘数最后一位为0(ZF=1),则跳转到NEXT 将被乘数R1送至寄存器A中 MOV A,R1 0E A=24H ADD R0,A 0F 0C 过程积加上被乘数(将R0上送至W中,A与W做加法运算) FFF7EF FFFA98 W=12H R0=36H NEXT: SHL R1 10 2D 被乘数左移一位(将R1值送至寄存器A中,左移将L中的值送回R1) FFF7F7 FFF9DF CBFFFF 11 2C 11 2D 11 2E R1=48H SHR R2 11 32 乘数右移一位(将R2值送至寄存FFF7F7 CBFFFF 12 30 12 31 12 32 13 1C 06 1D 07 18 08 19 08 1A 08 1B 09 24 14 25 15 38 15 39 R2=00H 器A中,右移将R中的值送回R2) FFF9BF JMP LAB 12 13 1C 06 1A 0F 无条件跳转至LAB C6FFFF CBFFFF LAB: CHECK R2,#0FH 06 07 检测乘数是否为0(将0FH送至寄存器W,将R2送至寄存器A中,进C7FFEF FFF7F7 CBFFFF W=OFH A=00H 行与运算,结果由D送至A中。) FFFE93 JZ LAST 08 09 24 14 38 乘数为0(ZF=1),则跳转到LAST C6FFFF CBFFFF 将结果积R0输出到OUT寄存器 FFD7FF CBFFFF LAST: OUT R0
14 0UT=R0=36H
因篇幅问题不能全部显示,请点此查看更多更全内容