汇编基础1.1——内存

内存运行方式

进程1 4GB
物理内存
进程2 4GB
内存条/其他硬件存储设备

内存地址

十六进制 0x00000000

读写内存的方式

//将立即数写入内存
MOV BYTE PTR DS:[00000000],1
//将寄存器中的内容写入内存
MOV DWORD PTR DS:[00000000],EAX

//当寄存器宽度超过一个内存地址宽度时,内存会自动向后分配空间,连续使用;
//被赋值内容宽度需大于等于赋值寄存器的宽度,若大于,则被复制内存自动缩小宽度。

//将内存写入寄存器
MOV EAX,DWORD PTR DS:[0x00000000]	//0x可省略

//在汇编中,绝大多数指令不允许将内存中的数据移动到内存,必须经过寄存器

内存地址的5中表示形式

  • 立即数:中括号里直接写数字
  • [reg]:reg表示8个通用寄存器中的任意一个
  • [reg + 立即数]
  • [reg + reg * {1, 2, 4, 8}]:用于数组
//例:
//读取内存中的值
MOV EAX,13FFC4
MOV ECX,2
MOV EDX,DWORD PTR DS:[EAX + ECX * 4]

//向内存中写入数据
MOV EAX,13FFC4
MOV ECX,2
MOV DWORD PTR DS:[EAX + ECX * 4],87654321
  • [reg + reg * {1, 2, 4, 8} + 立即数]

猜你喜欢

转载自blog.csdn.net/Dugege007/article/details/107140515