数据传送类 / 运算类 / 程序控制类 / 输入输出类(I/O)
若干字节称为字
12H = 0001 0010 B
这里4字节为1个字 (一行)
计算机运行的最小功能单位
指令集:所有指令的集合
一台计算机智能执行自己指令系统中的指令
四地址指令 -> 优化后 三地址指令
如果把数据和指令放在一起,访存空间比较小
所以 优化为三地址: 我们数据的放数据, 指令的放指令 ,指令执行完自动+1
优化为二地址:OP操作后的结果覆盖A1地址的数据
一地址指令:默认目的操作对象 是ACC(累加器 )
如果读到1111 就证明 这是一个二地址操作码
1111 OP dataA dataB // 二地址指令
同理 如果读到1111 1111 就证明 这是一个一地址操作码
OP操作码用0000-1110编号表示
最顶层: 12条二地址指令 :
∵二地址 :1111
∵12条:OP由12个数表示 (零到十一)
0000 - 1011
0 - 11
操作码
∴ 1111 0000 - 1111 1011 A1 A2
2 2 2 2 2 2 2 2
1 1 1 1 1 1 1 1
2 4 8 16 32 64 128 356
指令地址存储在PC(程序计数器)中,
PC在CPU的控制器里
PC中存储的是当前的指令地址
(PC)+1 ->PC
寻址特征: 区分用哪种方式寻址
形式地址: 偏移地址
CPU中的基址寄存器BR + 偏移地址
基地址由操作系统给出,用户只能改变偏移地址
- 有利于多道程序设计,有利于编制浮动程序,多用于分配程序到主存当中
隐式: 有专门的基址寄存器BR
显示: 一堆通用寄存器R中,选一个作为基址寄存器
基址寻址 比起 直接寻址的好处:
基址寻址的BR基址地址由操作系统分配,不需要客户去寻真正的物理地址,更加的灵活,不用担心真实地址被占用的情况
CPU中的变址寄存器IX + 偏移地址
偏移地址不变,基地址由用户进行改变
程序计数器PC内容 +偏移地址
尝尝用来跳转 , 转移指令 , 比较好根据偏移地址找到对应数据
堆栈指针SP
硬堆栈: 寄存器作为堆栈
软堆栈: 主存堆栈段作为堆栈
80%的程序只用到了20%的指令,所以对于指令集进行精简