指令格式设计
指令地址码的个数
冯诺依曼结构计算机采用的是“存储程序”的工作方式。根据存储结构的思想,计算机的程序一旦被启动运行,则必须能够自动的逐条从主存取出指令执行。也就是说,不仅每一条指令的执行是自动的,而且在一条指令执行结束后能够自动转入下一条指令执行。 为此,一条指令必须明确地(显式)或隐含地包括以下信息:
1.操作码。指定操作类型,如位移,加,减,乘,除。
2.源操作数或其地址。指出一个或多个源操作数或其所在地址,可以是主(虚)存地址,寄存器编号或I/O端口,也可以在指令中直接给出立即数。
3.结果地地址。
4.下一条地址。
寻址方式
首先,地址分为形式地址和有效地址(虚拟地址)。
1.立即寻址
指令中直接给出操作数本身,这种操作数称为立即数。
2.直接寻址
指令中给出地地址码是操作数地有效地址,这种地址称为直接地址或绝对地址。
3.间接寻址
指令中给出地地址码是存放操作数有效地址地主存单元地址。
4.寄存器间接寻址
指令中给出地地址码操作数所在的寄存器编号,操作数在寄存器中。寄存器寻址有以下优点:
1.寄存器数量远远小于内存单元数,故寄存器编号比存储地址要短,因而寄存器的寻址方式的指令较短。
2.操作数以在CPU中,不用访存,因而指令执行速度快。
5.寄存器间接寻址
跟上面的间接寻址差不多
6.变址寻址
操作数有效地址 EA=(I)+A (地址码字段A给出的一个基准地址,I为变址寄存器的内容,即偏移量)
7.偏移寻址
EA = A + ®
- 相对寻址: EA=A+(PC) 相对于当前指令处位移量为A的单元
- 基址寻址: EA=A+(B) 相对于基址(B)处位移量为A的单元
- 变址寻址: EA=A+(I) 相对于首址A处位移量为(I)的单元