
如图B,Z都是寄存器,也都是将内容传到右边,为什么一个加了括号,一个没加。
而且为什么MDR->IR时,MDR也不加括号
------解决思路----------------------
楼主一定是不太了解CPU内部结构,我详细解释一下这段文字的意思
1)ADD B,C
PC→MAR
PC+1→PC
M(MAR)→MDR→IR
B→Y
(Y)+(C)→Z
(Z)→B
这些东西仅仅只是解释了CPU内部各种寄存器运算器是如何处理 ADD B,C这个指令的
PC是程序计数器(本质是指针),指向ADD B,C这个指令在内存中的地址
MAR是总地址缓存寄存器(存地址)
MDR是总数据缓存寄存器(存数据)
IR是指令寄存器(存指令)
根据后面的解释文字,Z在这里指 累加器,Y指暂存寄存器TMPR
()在汇编里的意思是 取内容,因此可以知道,被送入数据的寄存器都不用加()【即箭头右边的都不用加括号】
所以(Y)指暂存器里的数据,(Z)指累加器里的数据
对于ADD指令,B是寄存器AX,BX,CX,DX,DI,SI中的一种,里面只会储存数据,所以不需要加括号
全部解释下来就是:
1.PC指向ADD B,C这条指令,并将指令地址送入MAR地址缓存寄存器
2指令取出来后,PC自动指向下一条指令
3MAR里的值通过内部地址总线送入指令寄存器IR(EU分析指令后操作指令)
4将B寄存器中数据传到暂存寄存器
(此时要分类讨论
1.)若C为寄存器,则不需要加括号(加不加无所谓)
2.)若C为内存的地址,则(C)表示C地址中存的数据,必须加括号
3.)若C为一个数,则不需加括号
综上,C带上了括号)
5将暂存寄存器和(C)于ALU中相加并送入累加器A
6将累加器的结果送回B寄存器
以上就是对于ADD B,C这条指令CPU内部做的大概的事情,有许多都被省略了,如果不了解CPU硬件结构,那么是看不懂这些的。
对于楼主的问题,我总结一下
1如果是汇编可操作的那14个寄存器,加不加括号都表示寄存器里的内容【涉及到内存寻址方式的格式时,请忽略这句话】
2只要不是这些寄存器,必须打括号表明使用的是这些东西里的数据
楼主给的这些句子,只有B,C这两个是需要考虑打不打括号的,其他的都是CPU内部自己处理数据时需要的寄存器,汇编程序不会用到
对于ADD B,C楼主只需要知道这句指令的意思是:把C中存的数据和B相加并且把结果存在B里面,就可以了,CPU内部运行这个指令的结构不需要十分了解