1、第5章指令系统5.6实验设计5.6.1PC机的指令系统 Intel 8086/8088 CPU的指令系统分成6个功能组,共有一百多条指令,有较丰富的寻址方式。数据传送类指令是汇编语言程序设计中最常用的指令。数据传送类指令有MOV/XCHG/XLAT/PUSH/POP/LEA/IN/OUT/LAHF/SAHF/PUSHF/POPF/LDS/LES等指令。当需要对CF、DF和IF等标志位进行操作时,可以直接使用标志设置指令CLC/STC/CLD/STD/CLI/STI等指令。算术运算类指令执行数据的加减乘除运算。进行一次数据运算除需将运算结果保存为目的操作数外,通常还会涉及或影响到状态标志。加法和
2、减法类指令有ADD/ADC/SUB/SBB/CMP/INC/DEC/NEG等指令。乘法和除法指令有MUL/IMUL/DIV/IDIV等指令。逻辑运算指令有AND/OR/NOT/XOR/TEST等指令。移位指令有SHL/SAL/SHR/SAR/ROL/ROR/RCL/RCR等指令。5.6.1PC机的指令系统 串操作类指令是80 x86 CPU指令系统中比较独特的一类指令。它处理主存中一个连续的数据串。串操作类指令有MOVS/STOS/LODS/SCAS/CMPS等指令。程序中的分支、循环和子程序等结构都需要与控制转移类指令配合才能实现。控制转移类指令有 JMP/JNZ/JNE/JS/JNS/JP
3、/JPE/JNP/JPO/JO/JNO/JC/JB/JNAE/JNC/JNB/JAE/JBE/JNA/JNBE/JA/JL/JNGE/JNL/JGE/JLE/JNG/JNLE/JG/LOOP等指令。5.6.2AEDK实验机的指令系统(1)指令部件模块实验的构成 实验机由1片74LS374作为指令模块的数据寄存器IR1,1片74LS374作为地址锁存器IR2。2片74LS161作为PC计数器。2片74LS245(同时只有1片输出)作为当前PC地址的输出,PC-OUT作为地址输出端,可通过8芯扁平电缆直接连接到地址总线。1片74LS153来实现多种条件跳转指令(JZ,JC等跳转指令)。5.6.2A
4、EDK实验机的指令系统 实验机指令部件模块的构成如图5-8所示。5.6.2AEDK实验机的指令系统(2)指令部件模块原理 指令数据寄存器IR1(74LS374)的 EIR1为低电平并且IR1CK为上升沿时,把来自数据总线的数据打入寄存器IR1,IR1的输出就作为本系统内的8位指令I0I7代码。在本系统内由这8位指令可最多译码256条不同的指令,通过编码可对应这些指令在微程序存储器中入口地址,并且输出相应的微指令。2片74LS161组成了PC指针寄存器,它有信号ELP、信号PC-O,脉冲PCCK来控制PC指针+1和PC指针置数等操作。当ELP=0,PCCK来上升沿时可重新置PC值。当PC-O=1
5、、ELP=1、PCCK来上升沿时把PC的值加1,并且把PC的值作为地址输出到地址总线上。当EIR2为低电平,并且IR2CK上有上升沿时,数据总线上的数据打入IR2锁存器。当EIR2=0,PC-O=1,IR2-O=0时,把IR2的值作为地址输出到地址总线上。5.6.2AEDK实验机的指令系统 74LS153是4选1的芯片,可通过JS0、JS1来选择JC还是JZ来实现条件跳转的指令,功能如表5-3。5.6.2AEDK实验机的指令系统(3)指令系统 模型机指令系统表见表5-4。5.6.3EL实验机的指令系统(1)EL实验系统的指令部件结构 EL实验系统的指令寄存器和指令译码器都是EP1K10 实现。逻辑结构图如图5-9所示。5.6.3EL实验机的指令系统5.6.3EL实验机的指令系统 指令寄存器电路和指令译码器电路由EP1K10实现。P1P4、LRi、RAG、RBG、RCG为微程序译码产生的控制信号。T3为时钟,I7I0为指令寄存器的输出。CA1、CA2为机器指令的读、写、运行的控制端。P1-P4是微指令的4个测试位。RAG、RBG、RCG根据机器指令产生工作寄存器R0、R1、R2的选通译码信号LR0LR2。LRi是工作寄存器的信号译码使能控制位。RG0RG2是三个寄存器总线输出信号。SA0SA4是微程序地址信号。