汇编 Day4 (数据之间的宽度)
8位(b)= 1字节(Byte)
WORD = 2Byte
DWORD = 4Byte
MOV指令
- 立即数到内存
MOV BYTE PTR DS:[0019FEB0],1
注意:宽度为一个字节
- 寄存器到内存
MOV DWORD PTR DS:[0019FEB4],EAX
注意:宽度为四个字节
- 内存到寄存器
MOV CX,WORD PTR DS:[0019FEBC]
注意:宽度为两个字节
内存能不能到内存呢?
在汇编中绝大部分的汇编指令是不允许从内存到内存的
汇编地址的五种形式
形式一:[立即数]
读取内存的值:
mov eax,dword ptr ds:[0xffffffff]
向内存中写入数据:
mov dword ptr ds:[0xffffffff],eax
形式二:[reg] reg代表任意一个通用寄存器
读取内存的值:
mov ecx,0xffffffff
mov eax,dword ptr ds:[ecx]
向内存中写入数据:
mov ecx,0xffffffff
mov dword ptr ds:[ecx],0x1
形式三:[ret + 立即数]
读取内存的值:
mov ecx,0xfffffffb
mov eax,dword ptr ds:[ecx + 4]
向内存中写入数据:
mov ecx,0xffffffff
mov dword ptr ds:[ecx - 4],0x2
形式四:[reg + reg * {1,2,4,8}]
读取内存的值:
mov ecx,0xfffffffb
mov eax,2
mov eax,dword ptr ds:[ecx + eax * 1]
向内存中写入数据:
mov ecx,0xffffffff
mov eax,2
mov dword ptr ds:[ecx - eax * 1],0x3
形式五:[reg + reg * {1,2,4,8} + 立即数]
读取内存的值:
mov ecx,0xfffffffb
mov eax,2
mov eax,dword ptr ds:[ecx + eax * 1 + 1]
向内存中写入数据:
mov ecx,0xffffffff
mov eax,2
mov dword ptr ds:[ecx - eax * 1 + 1],0x4