c语言 复习:寄存器+内存

本文详细解析了通用寄存器的不同类型,如32位和16位寄存器,以及8位寄存器,并重点讲解了MOV指令的使用规则,包括源操作数和目标操作数的选择。此外,还探讨了寄存器与内存的区别以及内存格式和操作技巧,适合初学者和进阶者参考。

2022.4.18

寄存器

通用寄存器

1、32位寄存器:EAX EBX,ESP,EBP,ESI,EDI.

2、16位寄存器:  AX,CX,DX,BX,SP,BP,SI,DI.

3、8位寄存器:AL,CL,DL,BL,AH,CH,DH,BH.

MOV指令

形势:MOV 目标操作数,源操作数

  作用:拷贝源操作数到目标操作数

1、源操作数可以是立即数、通用寄器、寄存器、或者内存单元

2、目标操作数可以是通用寄存器、段寄存器或者内存单元

3、操作数的宽度必须一样

4、源操作数和目标操作数不能同时为内存单元

ADD指令:加法,SUB指令:减法

寄存器语言

r—通用寄存器

m—内存

imm—立即数

r8—代表8位通用寄存器

m8—8位内存

imm8—8位立即数

例子:

MOV  r/m8(目标操作数),r8(源操作数):第一位操作数可以是8位寄存器或者一块内存第二个操作数是8位寄存器

MOV r8,r/m8:将通用寄存器或者一块内存放入8位寄存器

内存

寄存器与内存的区别,

1、寄存器位于CP内部,执行速度快,但比较贵

2.内存速度相对较慢,但成本较低,所以可以做的很大

3.寄存器和内存没有本质区别,都是用于存储数据的容器,都是定宽的

4.寄存器常用的有8个,EAX,ECX,EDX、EBX、ESP、EP、ESI、EDI

5.计算机中的几个常用计量单位, BYTE WORD DWORD

BYTE节=8(BI)

WORD字=16(BIT)

DWORD双字=32(BIT)

IKB =1024 BYTE

1B=1024

1GB=1024B

6.内存的数量特别庞大,无法每个内存单元都起一个名字,所以用编号来代替,我们称计算机CPU是32位或64位

有很多书上说之所以叫32位计算机是因为寄存器的宽度是32位,是不准确的,因为还有很多寄存器是大于32位的

计算机内存的每一个字节会有一个编号(即内存编号的单位是字节)

1、内存格式

  1每个内存单元的宽度为8

  2[编号]称为地址

  3地址的作用:当我们想从内存中读取数据或者想向内存中写入[OxFFFFFFFF]

2、从指定内存中写入/读取数据

 mov dword ptr ds: [0x0012FF34](奇奇怪怪的单词)

dord:要读/写多少此时是4字节  byte=1字节 word=2字节

ptr: Point代表后面是一个指针(指针的意思就是里面存的不是普通的值,而是个地址

ds;段存器(不太明白的样子)

0x0012FF34:内存编号,必须是32位的,0可省去

AT:地址编号不要随便写,计算机未必读得出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值