首页 > 试题广场 >

回答下面问题

[问答题]
某计算机采用 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)进行数之间的比较通常是对两个数进行减法,题目中要求“无符号数比较小于等于时转移”,即两数相减的结果为0或者负数时应当转移。若结果为0,则ZF标志应当为1,若结果为负数,则CF借位标志应该为1,无符号数并不涉及符号标志NF
那么符号标志NF什么情况下会为1?什么时候需要检测符号标志?
编辑于 2019-09-23 16:06:15 回复(0)

(1)因为指令长度为 16 位,且下条指令地址为( PC) +2, 故编址单位是字节。
偏移OFFSET 为 8 位补码,范围为-128~127,故相对于当前条件转移指令,向后最多可跳转127 条指令。

(2)指令中 C = 0, Z = 1, N = 1,故应根据 ZF 和 NF 的值来判断是否转移。当 CF=0, ZF=0,NF=1 时,需转移。已知指令中偏移量为 1110 0011B=E3H,符号扩展后为 FFE3 H,左移一位(乘 2)后为 FFC6 H,故 PC 的值(即转移目标地址)为 200CH+2+FFC6H=1FD4H。
(2 分)当 CF = 1, ZF = 0, NF = 0 时不转移。 PC 的值为: 200CH+2=200EH。
(3)指令中的 C、 Z 和 N 应分别设置为 C=Z=1, N=0。
(4)部件①:指令寄存器(用于存放当前指令);部件②:移位寄存器(用于左移一位);
部件③:加法器(地址相加)。

发表于 2016-11-19 17:01:50 回复(0)