目录
一、指令的定义
1.1 扩展操作码指令格式
二、指令寻址方式
2.1 顺序寻址
2.2 跳跃寻址
三、 数据寻址
3.1 直接寻址
3.2 间接寻址
3.3 寄存器寻址
3.4 寄存器间接寻址
3.5 隐含寻址
3.6 立即寻址
3.7 偏移地址
3.7.1 基址寻址
3.7.2 变址寻址
3.7.3 相对寻址
2.8 堆栈寻址
一、指令的定义
指示计算机执行某种操作的命令,是计算机运行的最小功能单位(X86架构,ARM架构两种指令)
指令包含:操作码(OP)+地址码(A)
一条指令可能包含0个、1个、2个、3个、4个地址吗...
根据地址码数目划分为零地址指令、一地址指令、二地址指令、三地址指令、四地址指令......
1.1 扩展操作码指令格式
设计扩展码指令格式时,必须注意两点:
①:不允许短码是长码的前缀。即短操作码不能与长操作码前面部分相同 (类似哈夫曼编码)
②:各指令操作码一定不能重复
通常情况,对使用频率高的指令,分配较短操作码(地址码就长),频率低分配长操作码,从而尽可能减少指令译码和分析时间
另一种扩展码设计方法
二、指令寻址方式
pc计数器:下一条欲执行指令的地址
2.1 顺序寻址
pc+1
2.2 跳跃寻址
执行了转移指令,直接执行转移地址指向的指令
三、 数据寻址
3.1 直接寻址
指令字中的形式地址A就是操作数的真实地址EA。即EA=A
指令执行过程:取指令访存1次,执行指令访存一次,暂不考虑存结果,共访存2次
3.2 间接寻址
指令的地址字段给出的形式地址不是真实的地址,而是操作数有效地址所在的地址,也就是操作数地址的地址,即EA=(A)
3.3 寄存器寻址
指令字中给的是操作数所在的寄存器编号,即,其操作数在由所在寄存器中
3.4 寄存器间接寻址
寄存器给是不是一个操作数,而是主存单元的地址,即时 <上面2种寻址套娃>
3.5 隐含寻址
不是明显给出操作数地址,而是指令中隐含操作数的地址
加法另一个操作数在ACC中
3.6 立即寻址
形式地址A就是操作数本身,又称立即数,一般补码形式
3.7 偏移地址
3.7.1 基址寻址
以程序的起始存放地址作为起点 EA=(BR)+A
3.7.2 变址寻址
程序员自己决定从哪开始为起点 EA=(IX)+A
3.7.3 相对寻址
以程序计数器pc所指地址为起点 EA=(PC)+A
2.8 堆栈寻址
操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址