PWN任务(三)《汇编语言》第二章寄存器学习笔记

第二章主要以8086CPU的寄存器为例子进行介绍。
一.

  1. 16位寄存器(如AX)可分为两个独立的寄存器AH(存放高8位)和AL(存放低8位),对其中一个寄存器进行操作时要将其单独看待,比如AL溢出不会溢出到AH上。
  2. 16位寄存器与8位寄存器之间不能进行数据传送和运算
  3. CPU通过地址总线送入存储器的必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前必须要在内部先形成这个物理地址。
    二.
  4. 16位结构的CPU具有以下特性
    (1)运算器一次最多可以处理16位的数据
    (2)寄存器的最大宽度为16位
    (3)寄存器和运算器之间的通路为16位
  5. 8086CPU采用一种在内部用两个16位地址(段地址和偏移地址)合成的方法来形成一个 20位的物理地址
  6. 地址加法器采用
    物理地址=段地址×16+偏移地址
    的方法合成物理地址
  7. 上面公式的本质含义是CPU在访问内存时,用一个基础地址(段地址×16)和一个相对基础地址的偏移地址相加,给出内存单元得物理地址。
    三.
  8. 段地址这个概念并不是说内存被划分成了一个一个的段,每一个段有一个段地址。内存并没有分段,段的划分来自CPU
  9. 编程时可根据需要将若干地址连续的内存单元看作一个段,用段地址×16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。
  10. 一个段的起始地址一定是16的倍数;偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。
  11. CPU可用不同的段地址和偏移地址形成同一个物理地址
    四.
  12. 8086CPU有4个寄存器,CS,DS,SS,ES。
  13. CS是代码段寄存器,IP是指令指针寄存器,在8086CPU中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M×16+N单元开始,读取一条指令并执行。也可表述为:在8086机中,任意时刻,CPU将CS:IP指向的内容当做指令执行。
  14. mov指令能设置大部分寄存器的值,但不能设置CS、IP的值。能改变CS、IP的内容的指令被统称为转移指令,其中最简单的是jmp指令。
  15. 若想同时修改CS、IP的内容,可用形如"jmp段地址:偏移地址"的指令完成。
  16. 若仅修改IP的内容,可用形如"jmp某一合法寄存器"的指令完成用寄存器中的值修改IP。
上一篇:二进制安全学习:最新指导Pwn环境搭建教程(安装Peda插件Pwn库 IDApro for Mac15)


下一篇:pwn入门