整数寄存器

       今天学习了一下汇编语言的基础知识,自己将整数寄存器的内容简单整理了一下。

       一个32位CPU中,包含了8个存储32位值的寄存器,分别表示为:%eax、%ecx、%edx、%ebx、%esi、%edi、%esp、%ebp 。可见名字都是以%e开头。


        这些寄存器用来存储整数数据和指针。它们的大致功能如下:
%eax,可存放一般数据,而且可作为累加器使用;
%ebx,可存放一般数据,而且可用来存放数据的指针(偏移地址);
%ecx,可存放一般数据,而且可用来做计数器,常常将循环次数用它来存放;
%edx,可存放一般数据,而且可用来存放乘法运算产生的部分积,或用来存放输入输出的端口地址(指针);
%esi,可存放一般数据,还可用于串操作中,存放源地址,对一串数据访问;
%edi,可存放一般数据,还可用于串操作中,存放目的地址,对一串数据访问;
%esp,用于寻址一个称为堆栈的存储区,通过它来访问堆栈数据;
%ebp,可存放一般数据,用来存放访问堆栈段的一个数据区,作为基地址;
    在大多数情况下,%eax、%ecx、%edx、%ebx、%esi、%edi等6个寄存器可以看做通用寄存器,对它们的使用没有限制;%esp、%ebp两个寄存器保存着指向程序栈中重要位置的指针,只有根据栈管理的标准惯例才能修改这两个寄存器中的值。
    刚刚提到的8个寄存器都可以作为16位或32位来访问。字节操作指令可以独立访问%eax、%ecx、%edx、%ebx等4个寄存器的两个低位字节,因为%ax、%cx、%dx、%bx这4个16位寄存器又可分别分成ah,al ;bh,bl;ch,cl;dh,dl的8位寄存器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值