ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-02-10 22:57:35  阅读:157  来源: 互联网

标签:16 汇编语言 IP 物理地址 地址 寄存器 PWN CPU


第二章主要以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。

标签:16,汇编语言,IP,物理地址,地址,寄存器,PWN,CPU
来源: https://blog.csdn.net/weixin_44120526/article/details/113782384

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有