文章目录
指令格式
指令的基本格式
跳转指令
指令操作码
定长操作码
- 定长操作码 :指令系统中所有指令的操作码长度都相同
- n位操作码字段的指令系统最大能够表示2n条指令
拓展操作码
寻址类别
指令寻址【找下⼀条要执⾏的指令 影响PC的值】
数据寻址【找数据 找到你要操作的数据】
常见的寻址方式【 数据寻址】
0.寻址方式位、
1.直接寻址
2.间接寻址
3. 寄存器寻址配【不访存】
4.寄存器间接寻址
5. 隐含寻址
6. 立即寻址【不访存】
三种偏移寻址(指令执行期间访存一次)
相对寻址
相对寻址:以PC所指地址作为‘’起点‘’
A应该是相对于下一条指令地址的位移量
因为取出指令A之后,PC直接就会自动+1
相对寻址:以PC所指地址作为‘’起点‘’,
便于一段代码在整个程序中浮动
基址寻址
以程序的起始存放地址为起点
内容由OS决定,用哪个寄存器由用户决定
便于一个完整的程序进行浮动
BR中的值由OS决定
变址寻址
IX: index register
IX:程序员自己决定从哪儿开始作为起点
基址变址复合寻址
访存次数总结
CISC 和 RISC
典型的CISC:X86 架构的计算机
典型的RISC:ARM(主要用于手机、平板)MIPS架构的计算机
高级语言与机器语言的对应
编译器、汇编器、链接器
X86 汇编语言
X86 汇编语言:OP 数
这个数有两个来源:寄存器 or 内存
如何区别 数据来源于 寄存器 or 内存?
看到OP后面跟了一个以X结尾的,或者以E开头的操作数,那就说明数据来源于寄存器
前四条中,带有E的取出的是寄存器的整个数据内容,不带的,取出的是后16位
如果你在一条汇编语言中看到了中括号,那么这个中括号里面的内容一定是主存的地址
书上的内容
栈底指针ebp
执行了call指令之后,会把当前执行指令的pc值压栈保存,
而执行了ret指令之后,会把上一层指令的pc值给恢复