1,寄存器他与普通的内存条差不多但它是在CPU内部的可以对CPU数据进行快速储存
寄存器的基本样式如下
| 寄存器 | | ? ? ?编号 (二进制) | ? ? ? ?十进制 | 32位 | 16位 | 8位 | | | EAX | AX | AL | 0000 | 0 | ECX | CX | CL | 0001 | 1 | EDX | DX | DL | 0010 | 2 | EBX | BX | BL | 0011 | 3 | ESP | SP | AH | 0100 | 4 | EBP | BP | CH | 0101 | 5 | ESI | SI | DH | 0110 | 6 | EDI | DI | BH | 0111 | 7 |
2,实际上寄存器是包含关系大致意思
?3,基础汇编指令 mov 指令 用法 mov eax,0x32435? 即将32453移动到EAX中
基本指令
MOV指令 | 移动 | ADD指令 | 加法 | SUB指令 | 减法 | NOT指令? | 逻辑运算? ? ?非运算 | AND指令?? | ? ? ? ? ? ? ? ? ? ? 与运算 | OR指令?? | ? ? ? ? ? ? ? ? ? ? 或运算 | XOP指令 | ? ? ? ? ? ? ? ? ? ? 异或运算 | 用法示例 | add eax,123(就是在寄存器eax记录数再加一) |
?4,内存 当我们需要运算一个很大的数时我们就会发现寄存器不够用了,而这就自然而然
引出内存的概念,内存是在CPU外面的所以说它可以很大但速度就与寄存器差很多啦,所
以内存不想寄存器有那麽多EAX ECX 啥的具体分类,内存是通过0x000 0x001 0x002这种
进行编号的由于寄存器和内存功能啥的是一致的(内存要和硬盘区分开)所以说以32为计算
机为例寄存器识别? ?0x00000000到0xffffffff 所以说内存编号只能到0x00000000 0xffffffff为止
内存一个存储单元最大单位是字节?而寄存器是四个字节所以说在汇编中内存的读取是一次性读取
四个地址 内存编号0x00000000 0xffffffff 所以说内存存储最大位0xffffffff+1也就是4G,所以说32位
计算机对应的识别内存是4G。(事无绝对也可以通过补丁等手段令其改变)
5,在汇编中获取内存是若用0x3223f890f这种方法会与立即数产生矛盾所以用内存时需要先[]来将
地址括住
?即写的数是多大
by? ?八位 | word? ? 十六位 | dword? 32位 |
即正确格式? ?mov word ptr ds:[0x003243f9],0x4721abcd
|