寻址方式(产生操作数的有效地址)
1、直接寻址:
指令直接给操作数(立即数),存放方式有两种:操作数包含在指令中、和指令后
2、主存直接寻址:
指令直接给出操作数的有效主存地址,根据该地址从主存储器中读取写入操作数
优点:简单直观,便于硬件实施,适用于寻找地址固定的操作数
缺点:①只能访问某个固定主存单元,想多处重复利用就受限了、②指令需给出全字长地址码,导致指令长度很长
3、寄存器直接寻址:指令给出寄存器号,操作数实际存储在指定编号的寄存器,其中可编程访问的是通用寄存器
寄存器号→操作数
优点:减少指令中地址位的宽度,提高cpu工作效率
4、主存间接寻址:
操作数存放在某个主存单元,操作数地址又放在另一单元,该主存单元被称为间址单元,间址单元的地址(操作数地址的地址)
间址单元地址→操作数地址→操作数
优:支持程序循环性,实现程序共享
缺:增加访存次数,严重拖慢CPU执行指令的速度
5、寄存器间接寻址:指令给出寄存器号,寄存器存放操作数有效地址,按照地址访问主存,读取写入操作数,操作数加一
优:让寄存器充当地址指针,比主存中读取有效地址及修改主存单位内容快很多
6、变址寻址:
寄存器内容作偏移量,形式地址为基准地址
有效地址=形式地址+变址量
例:某计算机主有容量为2 GB,目标数据大小为512B,可存放主存任意区域,则形式地址应有多少位?偏移量多少位?
2gb = 21*230
512=29
故形式地址31位,偏移量(变址量)为9
7、基址寻址方式:与上面不同的是,寄存器中的内容作为基准地址,形式地址为偏移量