通用寄存器_内存_堆栈
寄存器 | (编号)二进制 | (编号)十六进制 | ||
---|---|---|---|---|
32位 | 16位 | 8位 | ||
eax | ax | al | 000 | 0 |
ecx | cx | cl | 001 | 1 |
edx | dx | dl | 010 | 2 |
ebx | bx | bl | 011 | 3 |
esp | sp | ah | 100 | 4 |
ebp | bp | ch | 101 | 5 |
esi | si | dh | 110 | 6 |
edi | di | bh | 111 | 7 |
r通用寄存器
m代表内存
imm代表立即数
r8代表8位通用寄存器
imm8代表8位立即数
m8代表8位内存
通用寄存器
mov指令
mov 目标操作数,源操作数
- 源操作数可以是立即数,通用寄存器,段寄存器,内存单元
- 源操作数和目标操作数不能同时为内存单元
- 操作数宽度必须一样
- mov r/m8, r8
- mov r/m16, r16
- mov r/m32, r32
- mov r8, r/m8
- mov r16, r/m16
- mov r32, r/m32
- mov r8, imm8
- mov r16, imm16
- mov r32, imm32
add指令
同理,替换掉mov指令成add指令,上述也是成立的
sub指令
同理,替换掉mov指令成sub指令,上述也是成立的
and指令
同理,替换掉mov指令成sub指令,上述也是成立的
or指令
同理,替换掉mov指令成sub指令,上述也是成立的
xor指令
同理,替换掉mov指令成sub指令,上述也是成立的
not指令
not r/m8
not r/m16
not r/m32
内存
寄存器与内存的区别
- 寄存器位于CPU内部,执行速度块,但比较贵
- 内存速度相对较慢,成本较低,可以做的很大
- 计算机中几个常用计量单位: byte, word, dword, qword
byte 字节 = 8bit
word 字 = 16bit
dword 双字 = 32bit
qword 四字 = 64bit
1kb = 1024 byte
1mb = 1024kb
1gb = 1024mb
1024 = 2的10次方
32位计算机是因为地址总线总共有32条,最大寻址范围是0-0xFFFFFFFF, 内存中最多能存储信息0+0xFFFFFFFF = 100000000即4g
32位寻址最多识别内存为4g对吗?
通常情况下是4g
不对,可以通过打补丁
内存与立即数区别
内存:[编号]
立即数: 数值
内存读写
涉及内存读写要指定数据宽度,也就是word,dword指定
mov word ptr ds:[0x12345678],0xffff
mov dword ptr ds[0x12345678],0xffff
从高位往低写,比如写word,小端存储的话,是高位存高位,低位存低位
寻址公式
立即数寻址
mov eax,dword ptr ds:[0x13ffc4]
获取内存编号
lea eax,dword ptr ds:[0x13ffc4]
lea还可以用来计算
寄存器寻址
mov ecx,12ffc4
mov eax,dword ptr ds:[ecx]
lea eax,dword ptr ds:[ecx]
寄存器+立即数寻址
mov eax,dword ptr ds:[ecx+4]
lea eax,dword ptr ds:[ecx+8]
[reg+reg*{1,2,4,8}]
mov eax,13ffc4
mov ecx,2
mov edx,dword ptr ds:[eax+ecx*4]
[reg+reg*{1,2,4,8}+立即数]
mov eax,13ffc4
mov ecx,2
mov edx,dword ptr ds:[eax+ecx*4+4]
堆栈
EBP跟ESP,
EBP栈底
ESP栈顶
push 一次 esp-4
pop 一次 esp+4
push
push r32
push r16
push m32
push m16
push imm8,imm16,imm32
pop
pop r32
pop r16
pop m16
pop m32
pushad
pushad将通用寄存器全部push进去,按照寄存器顺序,eax,ecx,edx,ebx,esp,ebp,esi,edi,8个通用寄存器8*4=32个字节,所以是sub esp,0x20
popad
恢复全部通用寄存器
总结
32位通用寄存器,
位通用寄存器,8位寄存器
EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI寄存器eax-ax-ah-al的关系
EAX > ax > ah=al
子集关系
本文作者:NoOne
本文地址: https://noonegroup.xyz/posts/f8f1fb54/
版权声明:转载请注明出处!