简要分析:
计算机的工作过程就是周而复始执行指令的过程,指令在主存中连续存放。一般情况下,指令被顺序执行,只有遇到转移指令(如,无条件转移、条件分支、调用和返回等指令)才可能改变指令执行的顺序。
选项A和选项B::指令执行的顺序由程序计数器PC的值来控制。PC中存放了下一步将要执行的指令在内存的地址。CPU在执行指令时,根据指令规定的目标地址计算方式和指令执行的结果标志(如,进位标志CF、符号标志SF等),对PC进行修改,用户无法直接修改PC的值,因而是用户不可见的寄存器。
选项C:当执行到转移指令时,有两种情况:(1) 如果是无条件转移或调用、返回等指令,则PC的值直接修改为目标指令地址;(2)如果是条件转移(分支)指令,则必须根据前面指令或当前指令执行的结果标志,确定是把转移目标地址还是把下条指令地址送到PC。所以转移指令时,PC的值并不总是直接修改为转移目标指令的地址;当顺序执行(非转移指令)时,通过对PC加“1”来使PC指向下一条顺序执行的指令,这里的“1”是指一条指令的长度。即当前指令占用的内存单元个数,不是加1。现代计算机一般都采用字节编址方式,所以,实际上PC应该加上当前指令的字节个数。
选项D:PC和MAR都是用来存放内存单元地址的。每次取指令时,PC的值先要被送到MAR,然后访问存储器,所以,它们的位数应该相同。
综上所述,错误的应该是C。