4.寻址模式与数据访问

来源:互联网 发布:切尔诺贝利核事故 知乎 编辑:程序博客网 时间:2024/06/06 20:39

4.寻址模式与数据访问

IA32 CPU中央处理单元会提供一组8个存储32位的整数寄存器。名字以%e开头,一般来说前6个寄存器都可堪称通用寄存器,它的使用没有限制。

 

注意:

·        这组IA32整数寄存器,有些可以存储C语言中的指针和整数数据,有些用来记录某些重要的程序状态,而有些用来保存临时数据如局部变量和函数的返回值

·        所有的8个寄存器都可以作为一个字(16)32个字(双字)来访问。并且可以独立访问前4个寄存器的两个低位字节

·        过程处理中%eax %ecx %edx的保存和恢复不同于接下来的三个寄存器%ebx %esi %edi

·        堆栈管理中%ebp表示帧指针,%esp表示栈指针。运行时,栈指针可以移动,因而信息的访问都是相对于帧指针的

在机器指令中这些存储的数据通常称为操作数,它指出执行一个操作中要引用的源数据值,以及放置结果的目标位置。源数据值可以以立即数或从寄存器或存储器中读出,结果可以存放在寄存器或存储器中。

操作数有三种类型:

l  立即数: 书写方式为$0xFF

l  寄存器: 用来表示寄存器的内容。用Ea表示任意寄存器a,用引用R[Ea]表示其内容。

l  存储器引用:根据计算出来的有效存储器地址,访问某存储器位置。用M[Addr]表示对存储在存储器地址Addr开始的b个字节值的引用


1.1     数据传送命令

MOV类的指令是将源操作数的值复制到目的操作数中。其中源操作数指定的值要么是一个立即数,要么是存储在寄存器或存储器中,目的操作数指定一个位置,要么是一个寄存器,要么是一个存储器地址。

注意传送指令的两个操作数不能都指向存储器位置,将一个值从一个存储器位置复制到另一个存储器位置需要两条指令-第一条指令由源值加载到寄存器中,第二条将该寄存器写入目的存储器位置中。




0 0