逆向之汇编(2),寄存器

寄存器

  • 定义:cpu中用来存储数据的地方

  • 大小:按CPU的类别

  • 寄存器可在三个地方存储数据:

  • CPU > 内存 > 硬盘

32位CPU:有8,16,32位的寄存器
64位CPU:8,16,32,64位的寄存器(四种类型)

问:为什么如今大多是64位,我们依旧还要学32位的

(32位CPU到64位CPU并没有整体结构上的变化,只是增添了内容)
部分程序依旧是32位的(???)

通用寄存器

*非通用寄存器
比如:EIP
在这里插入图片描述

只能用于存储cpu下一个指令的寄存器不是通用寄存器*

1. 32位寄存器

在这里插入图片描述
在这八个32位寄存器里面存储的数据宽度不能超过32位,否则,高位丢弃。
在这里插入图片描述
为什么这里的ESP和EBP可以作为指针??

(1)MOV指令(寄存器操作)

1. 立即数------存----->寄存器
在这里插入图片描述

将2存入EAX寄存器
按f8后:
在这里插入图片描述

2. 寄存器(中的数据)----------->(另一)寄存器

将EAX寄存器里的数据复制存入EDX里
将EAX寄存器里的数据 复制存入 EDX里。
在这里插入图片描述

2.多种通用寄存器

在这里插入图片描述
(1)16位寄存器
在这里插入图片描述
在这里插入图片描述
EAX寄存器,里面包含了32位,16位,甚至8位寄存器

上图,后面的“0005” 即16位寄存器内数据

(2)8位寄存器

在这里插入图片描述
AL与AH这两个8位寄存器
分别对应EAX里
在这里插入图片描述
AL对应“02”部分
AH对应“05”部分

H后缀的是低16位的高八位
L后缀的是低16位的 低八位

猜你喜欢

转载自blog.csdn.net/weixin_51325053/article/details/117511668