逆向学习笔记之汇编01

寄存器

电脑可以在三个地方存储数据,CPU>RAM>ROM
寄存器就是CPU内的存储器
存储格式:
32位CPU:8 16 32
64位CPU:8 16 32 64

通用寄存器

16位是32位的低位,两个8位组成一个16位。
32位   16位    8位
EAX    AX    AH+AL
ECX    CX    CH+CL
EDX    DX    DH+DL
EBX    BX    BH+BL
ESP    SP     
EBP    BP     
ESI    SI     
EDI    DI     

MOV指令

1.把数存到寄存器。例:MOV EAX,1
2.把寄存器的值存到另一寄存器。例:MOV EDX,EAX(注意是后面的值赋给前面)

内存

内存地址

每个内存地址对应1Byte,内存地址大小为32位,前面的0可以省略,表示时用十六进制。
每个应用程序都有独立的4GB空间就是这个大小,但是这并非是完全可用的,使用前需要先申请。
从0x00000000到0xFFFFFFFF

MOV指令

注意前后数据宽度一致,大于一个字节的数据是从给的编号开始,向后存储。
1.数到内存,例如:MOV BYTE PTR DS:[0018FFF0],1  注:内存空间是要被申请的才行
2.寄存器到内存,例如:MOV DWORD PTR DS:[0018FFFC],EAX  注:EAX是4个字节(DWORD),AX是2个字节(WORD),AL是1个字节(BYTE)
3.内存到寄存器,例如:MOV EAX,DWORD PTR DS:[0018FFF8] 

汇编中绝大多数指令不允许从内存到内存。

内存地址的五种形式

前面MOV指令中[]的内容
1.立即数,例如:0x13FFC4
2.reg,reg为8个通用寄存器中的任意一个,例如:EAX,此时就是把EAX中的数据当做内存地址
3.reg+立即数,例如:EAX+4
4.reg+reg*{1,2,4,8},数组赋值的汇编一般是这种形式,例如:EAX+ECX*4
5.reg+reg*{1,2,4,8}+立即数,例如:EAX+ECX*4+4

数据的存储模式

大端模式:数据高位存低位,数据低位存高位
小端模式:数据高位存高位,数据低位存低位
X86大多采用小端模式存储,ARM大多采用大端模式存储

DTdebug命令

db/dw/dd xxxxxxxx
db是一个字节为单位查看,dw是两个字节为单位查看,dd是四个字节为单位查看。后跟内存地址
注意:想查看存储模式时,要用db,直接用dd看不出来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PlumpBoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值