吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2047|回复: 4
收起左侧

[学习记录] 滴水汇编第四天

[复制链接]
Insist_2020 发表于 2021-5-18 22:43
本帖最后由 Insist_2020 于 2021-5-18 22:47 编辑

内存
1.寄存器和内存的区别
        <1>.寄存器位于CPU内部,执行速度快,但比较贵。                                                                                                        
        <2>.内存速度相对较慢,但成本较低,所以可以做的很大。                                                                                                        
        <3>.寄存器和内存没有本质区别,都是用于存储数据的容器,都是定宽的。                                                                                                        
        <4>.寄存器常用的有8个:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI。                                                                                                
        <5>.计算机中的几个常用计量单位:BYTE WORD DWORD        
2.内存中常用的计量单位
        <1>BYTE 字节   = 8(BIT)  = 1BYTE                1KB = 1024 BYTE  = 2的10次方BYTE        
        <2>WORD  字        =   16(BIT)  = 2BYTE                 1MB = 1024 KB    = 2的20次方BYTE        
        <3>DWORD 双字   =   32(BIT)  = 4BYTE        1GB = 1024 MB    = 2的30次方BYTE
3.系统硬件的组成
          image.png         
           <1>CPU(central processing unit)中央处理器:包含控制器,运算器,寄存器,计算机系统的运算和控制核心
           <2>ALU(算术/逻辑单元):算术运算与逻辑运算的组合逻辑电路
           <3>PC(程序计数器):指向主存中的某条机器语言指令(即含有该条指令的地址)
           <4>总线
                     数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
                     地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中储存的数据的地址。
                     控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备。
                     扩展总线(Expansion Bus):外部设备和计算机主机进行数据通信的总线,例如ISA总线,PCI总线。
                     局部总线(Local Bus):取代更高速数据传输的扩展总线。
                     数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus),也统称为系统总线
            <5>I/0设备
                     I/O设备(Input/Output Device)的作用:计算机用于输入和输出的设备,主要分为字符设备、块设备和网络通信设备。
                  (1)字符设备(Character Device),又称为人机交互设备。用户通过这些设备实现与计算机系统的通信。大多以字符为单位传输数据,通信速度较慢。
                           常见的有键盘、鼠标、显卡、显示器、打印机和扫描仪等。
                  (2)块设备(Block Device),又称为外部存储器。用户通过这些设备实现程序和数据的长期保存。与字符设备相比,它们以块为单位进行传输,传输速度较快。

                           常见的有磁盘、U盘、磁带和光盘等。
                  (3)网络通信设备。这类设备主要有网卡、调制解调器等,主要用于与远程设备间的通信。这类设备的传输速度比字符设备快,比块设备慢。I/O设备是计算机与外界通信的通道,

                           通过控制器或适配器与I/O总线连接。控制器与适配器的主要区别在于封装方式,控制器是I/O设备或计算机主板上的芯片组,用于翻译CPU指令为设备可识别的控制信号。
                           而适配器是一个独立的外部设备,用于I/O设备与计算机间数据协议的转换。二者在功能上是相同的,通过I/O总线,实现I/O设备与计算机间的为通信。
            <6>存储器
                      存储器是用来存储程序和各种数据信息的记忆部件
                      只读存储器(ROM):易挥发性随机存2113取存储器,高速存取,读写时间相等,且与地址无关,计算机内存等。
                      随机存取存储器(RAM):断电后信息不丢失,如计算机启动用的BIOS芯片与硬盘等。存取速度很低,(较RAM而言)且不能改写
3.内存寻址
             <1>内存的数量特别庞大,无法每个内存单元都起一个名字,且每个内存单元都无特殊的意义,所以用编号来代替,计算机CPU是32位或者64位,主要指是通用寄存器的宽度。

                   而内存的寻址能力由地址总线  的确定的,32位CPU时代有32根地址总线和36根地址总线两种,32位的32根地址总线也就是2的32次方个字节也就是4G,32位的36根地址总线
                  也就是2的36次方个字节也就是64G;所以32位CPU最高的寻址能力为64G
               image.png                         
4.内存分布
         image.png
            <1>2G的内核空间,64kb的空指针赋值区,64k禁入区,用户态访问会报错
5.汇编中内存格式
          image.png
6.从指定内存中写入/读取数据        
          image.png                                                                         
         <1>mov dword ptr ds:[0x0012FF34],0x12345678 将数据写入内存编号0x0012FF34中                                                        
         <2>mov ebx,dword ptr ds:[0x0012FF34] 将内存编号0x0012FF34中的数据读到ebx中                                                        
         <3>dword :要读/写多少  此时是4字节   byte == 1字节(al bl dl cl ah ...)  word == 2字节(ax bx cx dx ...)                                                        
         <4>ptr: Point 代表后面是一个指针 (指针的意思就是里面存的不是普通的值,而是个地址)                                                        
         <5>ds:段寄存器,内核需要用到                                                
         <6>0x0012FF34:内存编号,必须是32位的  前面0可以省略                                                        
                注意:地址编号不要随便写,因为内存是有保护属性与访问权限,并不是所有的内存都可以直接读写(需要特别处理),建议地址编号写成esp的值
7.内存四区

          <1>内存四区的常用属性: Write 写  W    Read 读   R    Execute 可执行  E   Share 可共享   S
          <2>代码区(.text):代码区中主要存放程序中的代码(二进制),属性是RE(可读可执行)。
          <3>数据区(静态存储区):主要包括静态全局区和常量区,如果要站在汇编角度细分的话还可以分为很多小的区。
                     全局区(静态区,static):全局变量和静态变量的存储是放在一块的,初始化的(全局变量和静态变量)在一块区域(.data,显示初始化为非零的全局变量),未初始化的
                                                               全局变量和未初始化的静态变量在相邻的另一块区域(.bss,显式初始化为0或者并未显式初始化)。 程序结束后有系统释放。属性是RW(可读可写)
                     常量区 :常量字符串就是放在这里的。(常量、函数名、关键字、字符串等) 程序结束后由系统释放。属性是R(只读)
          <4>栈区(stack):内存的分配和释放都是自动进行 ,存放函数的参数值,局部变量的值等。栈内存分配运算内置于处理器的指令集中,效率高,
                                           但容量有限,局部变量生命周期短。(linux中查看栈大小,ulimit -s,本机8M)属性是RW(可读可写)
          <5>堆区(heap):有些操作对象只有在程序运行时才能确定,这样编译器在编译时无法为他们预先分配内存空间,只有在程序运行时分配,所以称为动态内存,malloc/free等。
                                            属性是RW(可读可写)

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
我爱小白兔 + 2 + 1 加油!!!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sam喵喵 发表于 2021-5-18 23:10
前面三天凭空消失了吗
a201025a 发表于 2021-5-18 23:46
头像被屏蔽
tlf 发表于 2021-5-19 06:27
szx503 发表于 2022-5-8 15:03
支持 !!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表