问答题
某计算机采用16位定长指令字格式,其CPU中有一个标志寄存器,其中包含进位/借位标志CF、零标志ZF和符号标志NF。假定为该机设计了条件转移指令,其格式如下:

其中,00000为操作码OP;C、Z和N分别为CF、ZF和NF的对应检测位,某检测位为1时表示需检测对应标志,需检测的标志位中只要有一个为1就转移,否则不转移,例如,若C=1,Z=0,N=1,则需检测CF和NF的值,当CF=1或NF=1时发生转移;OFFSET是相对偏移量,用补码表示。转移执行时,转移目标地址为(PC)+2+2×OFFSET;顺序执行时,下条指令地址为(PC)+2。请回答下列问题。(1)该计算机存储器按字节编址还是按字编址?该条件转移指令向后(反向)最多可跳转多少条指令?(2)某条件转移指令的地址为200CH,指令内容如下图所示,若该指令执行时CF:0,ZF=0,NF=1,则该指令执行后PC的值是多少?若该指令执行时CF=1,ZF=0,NF=0,则该指令执行后PC的值又是多少?请给出计算过程。

(3)实现“无符号数比较小于等于时转移”功能的指令中,C、Z和N应各是什么?(4)以下是该指令对应的数据通路示意图,要求给出图中部件①~③的名称或功能说明。
【正确答案】正确答案:(1)指令长度为16位,下条指令地址为(PC)+2,故每条指令占用两个地址,因此编址单位是字节。 指令中给出的偏移量为8位补码,范围为-128~127,转移执行时,转移目标地址为(PC)+2+2×OFFSET故相对于当前执行的条件转移指令,向后(高地址)最多可跳转2×127个地址,也即向后最多可跳转127条指令。 (2)指令中C=0,Z=1,N=1,故应根据ZF和NF的值来判断是否转移。当CF=0,ZF=0,NF=1时,需转移。 指令中偏移量为补码1110 0011B,乘2即左移一位,为11000110B=C6H,为与16位PC相加,做16位符号扩展,得FFC6H。故该指令执行后PC的值为200CH+2+FFC6H=1FD4H 当CF=1,ZF=0,NF=0时不转移。PC的值为:200CH+2=200EH。 (3)“无符号数比较小于等于时转移”,指令中的C、Z和N应分别设置为C=1,Z=1,N=0。 (4)部件①用于存放当前正在执行的指令,故为指令寄存器O; 部件②用于对指令中的偏移量进行左移一位操作,故为移位寄存器; 部件③实现转移成功时的地址相加操作,故为专用地址加法器。
【答案解析】