寄存器 内存

2020-03-26  本文已影响0人  欧皇ff

计算机中数据存储的位置
CPU 内存 硬盘


寄存器
通用寄存器对应关系
验证结果
mov eax,0xAAAAAAAA //EAX AAAAAAAA
mov ax,0xBBBB //EAX AAAABBBB
mov ah,0xCC//EAX AAAACCBB
mov al,0xDD//EAX AAAACCDD

32位 CPU 8 16 32
64位 CPU 8 16 32 64

2005年以后的电脑都是64位CPU了。

32位通用寄存器:存储数据不能超过32个01,多余被丢弃。
通用寄存器

32位 16位 8位
EAX AX AL 高8位
ECX CX CL
EDX DX DL
EBX BX BL
ESP SP AH 低8位
EBP BP CH
ESI SI DH
EDI DI BH

MOV指令 「寄存器操作」

<1>立即数到寄存器 mov eax,1
<2>寄存器到寄存器 mov eax,ecx 【注:同位赋值,否则语法错误。】

MOV指令 「内存操作」

数据宽度 byte,word,dword 8位 16位 32位
<1>存立即数到内存 mov dword ptr ds:[地址],1
<2>存寄存器的值到内存 mov dword ptr ds:[地址],eax
<3>存内存的值到寄存器 mov eax,dword ptr ds:[地址] 【注:1.数据宽度要一致,否则语法错误,同理与寄存器操作;2.汇编中绝大多数指令不支持内存到内存赋值。】

内存地址的5中表示形式

表示形式 取值方式 赋值方式
[立即数] MOV EAX,DWORD PTR DS:[0x13ffc4] MOV DWORD PTR DS:[0x13ffc4],EAX
[reg]
reg代表寄存器,可以是8个通用寄存器中任意一个
MOV ECX,0x13ffd0
MOV EAX,DWORD PTR DS:[ECX]
MOV EDX,0x13FFD8
MOV DWORD PTR DS:[EDX],0x87654321
[reg+立即数] MOV ECX,0x13FFD0
MOV EAX,DWORD PTR DS:[ECX+4]
MOV EDX,0x13FFD8
MOV DWORD PTR DS:[EDX+0xC],0x87654321
[reg+reg*{1,2,4,8}]
常见于数组类型操作
MOV EAX,13FFC4
MOV ECX,2
MOV,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}+立即数] MOV EAX,13FFC4
MOV ECX,2
MOV EDX,DWORD PTR DS:[EAX+ECX*4+4]
MOV EAX,13FFC4
MOV EXC,2
MOV DWORD PTR DS:[EAX+ECX*4+4],87654321

内存存储模式

4G虚拟内存
<1>MOV BTYE PTR DS:[0x00000000],0x1A
<2>MOV WORD PTR DS:[0x00000000],0x1A2B
<3>MOV DWORD PTR DS:[0x00000000],0x1A2B3C4D
大端模式:数据高位在地址低位,数据低位在地址高位.
小端模式:数据低位在地址低位,数据高位在地址高位.
顺序 大端模式(7-0) 小端模式(7-0) 地址
1A 4D [0x00000000]
... 2B 3C [0x00000001]
... 3C 2B [0x00000002]
... 4D 1A [0x00000003]
... [0x00000004]
[0x…………]
[0xFFFFFFFF]

DEBUG内存窗口使用

指令表

字节 双字
db dw dd

向内存中存入4个字节的数据,并观察存储形式(大端存储or小端存储)

示例:

mov dword ptr ds:[12ffcc],11223344
db 12ffcc
image.png

数据可以存放到哪?寄存器、内存。
数据是如何存放的?小端存储。

上一篇 下一篇

猜你喜欢

热点阅读