目录
本章总览
一、指令格式:如何用二进制表示指令。
(1)指令的基本了解。
(2)指令格式。
(2.1)四、三、二、一、零地址指令。
(2.2)定长-变长指令字结构、定长-扩展操作码。
(2.3)扩展操作码。
(3)操作类型。
(4)本节回顾。
二、指令寻址。
(1)数据存放。
(2)指令地址寻址。
三、数据寻址。
(1)操作数类型。
(2)数据寻址方式。
(3)寻址方式特点。
(4)偏移寻址。(对形式地址进行加减法得到有效地址)
(5)堆栈寻址。
四、CISC和RISC。
五、本节回顾。
指令(机器指令):计算机执行操作的行为(加减乘除等等)。
指令集:计算机中所有指令的集合。
指令:操作码+地址码。
操作码:加减乘除等。
地址码:操作数或下一条指令的地址。
指令字长:(操作码+地址码)的位数长度。
注意:每台计算机的指令可能不一样。(如0001在这台可能是加法,另一台可能不一样)
四地址指令:操作码+地址码+地址码+地址码+下条指令地址码。
三地址指令:操作码+地址码+地址码+地址码。(指令、数据分开放一起,下个地址是下条指令)
二地址指令:操作码+地址码+地址码。
一地址指令:操作码+地址码。
零地址指令:操作码。(只需要访问指令,操作数不在内存,结果也不存回内存)
注意:地址码(操作数地址)+地址码(操作数地址)+地址码(计算结果存回的内存地址)+下条指令地址码。
定长指令字结构:指令长度固定。
变长指令字结构:指令长度不等。
定长操作码:操作码长度固定。
扩展操作码:操作码长度可变。
好处:当操作码的位数有限时,可以增加操作码的状态表示,操作码的执行方式更加多。
在操作码的留一种或几种状态,当出现这种状态:后一个地址码的二进制也当作操作码处理。
后一个地址码是操作码的时候,也可以留一种或几种状态:出现这种状态则再下一个地址码的二进制数据也要当操作码处理。
1、数据传输。
2、算数逻辑操作。
3、移位操作。
4、转移操作。
5、输入输出操作。
单字长指令:指令长度=机器长度。
半字长指令:指令长度=机器长度/2。
双字长指令:指令长度=2*机器长度。
边界对齐存储:可以减少访问次数。
寻址分为:顺序寻址、跳跃寻址。
地址码=寻址特征+形式地址。(寻址特征:表示寻址方式)
1、立即寻址:形式地址=操作数。
2、直接寻址:形式地址=内存操作数地址。
3、间接寻址:形式地址=指向 -》内存操作数地址的地址。(可能好几级地址)
4、寄存器寻址:形式地址=CPU寄存器的操作数地址。
5、寄存器间接寻址:形式地址=指向 -》内存操作数地址的CPU寄存器地址。(可能好几级地址)
6、隐含寻址:隐含有一个操作数在ACC寄存器中。(如把操作数取出来和ACC中的相加结果放回ACC中)
编制浮动程序:不管程序放到内存哪个地方,都能正常运行。
1、基址寻址:基址寄存器里的地址(基地址)+形式地址(偏移量)=有效地址。
特点:程序的内存地址修改后,只需要改变基址寄存器里的地址(程序的起始地址)。
2、变址寻址:变址寄存器里的地址(偏移量)+形式地址(基地址)=有效地址。
特点:用于循环程序,变址寄存器里的地址自增1或自减1等等。
3、相对寻址(跟指令跳跃寻址很相似):PC(基地址)+形式地址(偏移量)=有效地址。
特点:适合用于转移指令,如把地址跳转到当前地址+40。
特点:用一个指针指向栈顶元素,进行读写操作,操作数不需要访问内存。
用寄存器作为堆栈:硬堆栈。
用存储器(内存)作为堆栈:软堆栈。