汇编—通用寄存器

1.通用寄存器

1)寄存器

存储数据:

CPU > 内存 > 硬盘

32位CPU: 8 16 32

64位CPU:8 16 32 64

2)32位通用寄存器:

EAX ESP

ECX EBP

EDX ESI

EBX EDI

​ 计算机最常见的指令就是移动指令:mov ecx eax

​ 在mov,ecx,eax中,后面的是,前面的是目标,中间是逗号,不区分大小写。寄存器间相互移动。

​ mov是操作码,两个寄存器是操作数,操作码除了mov之外还有很多,如ADD(加),SUB(减),AND(与),OR(或),XOR(异或),NOT(非)。

比如:add eax,ecx 将两个寄存器的值相加,然后将结果赋值给前面的目标寄存器。

​ 8个寄存器是分段的。我们可以用一半,也可以用四分之一等等

eax可以分成四部分:eax共32位0-31,0-7叫做AL,8-15叫做AH。整个0-15又叫做AX。

​ AL:low;AH:high。ecx,edx,ebx也是一样的。

所以上面的寄存器实际都可以分成三段:0-7(AL),8-15(AH),16-31

然而不同的是,ESP,EBP,ESI,EDI,这四个寄存器只分成两段,比如ESP整体0-31位叫做ESP,0-15位叫做SP。

寄存器编号
寄存器编号(二进制)编号(十进制)
32位|16位|8位
EAX |AX |AL0000
ECX |CX |CL0011
EDX |DX |DL0102
EBX |BX |BL0113
ESP |SP |AH1004
EBP |BP |CH1015
ESI |SI |DH1106
EDI |DI |BH1117

​ 32位寄存器有自己的编号,16位寄存器也有自己独立的编号。它们是重叠的,当改变了32位的寄存器,相应的16位寄存器也会跟着改变。

通用寄存器即cpu常用的寄存器。通用寄存器的功能:通用目的寄存器主要实现逻辑和算数运算、地址计算和内存指针。

​ 在早期的技术还没有现在成熟时,8 个通用寄存器宽度是 8 位(这里指的是二进制的 8 位):AL,AH,CL,CH,DL,DH,BL,BH。后来 cpu 技术逐渐发展,由 8 位发展成 16 位,于是寄存器由 8 位演变成 16 位:AX,CX,DX,BX,SP,BP,SI,DI。但是为了兼容前面的 8 位技术,将之前的 8 个 8 位寄存器封装到 AX,CX,DX,BX 寄存器中。

32 位通用目的寄存器的指定用途如下:
·EAX:累加器(Accumulator)
·ECX:计数(Counter)
·EDX:I/O 指针
·EBX:DS 段的数据指针
·ESP:堆栈(Stack)指针
·EBP:SS 段的数据指针
·ESI:字符串操作的源(Source)指针;SS 段的数据指针
·EDI:字符串操作的目标(Destination)指针;ES 段的数据指针

总结:

汇编就是在“寄存器与寄存器”或者“寄存器与内存之间来回移动数据”。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值