zoukankan      html  css  js  c++  java
  • 第二章整理

    [标题级别说明:普通字体为了解,斜体为理解,加粗为掌握]

    [()和[]里标注的是在其之前有下划线名词的一些解释]

    >>通用寄存器(AX, BX, CX, DX):

    通常用于存放一般性数据,每个寄存器均为16位。存放无符号数据范围为0~2^16-1.

    以AX为例,可分为两个8位寄存器单独使用,高八位AH(high),低八位AL(low),其可存放无符号数据范围为0~2^8-1.

    >>段寄存器(CS,DS,ES,SS)

    >>理解段的概念

    段是8086为解决用16位寄存器表示20位的物理地址而引入的一个逻辑上的概念。 可以根据需要,将地址连续、起始物理地址为16倍数的一组内存单元(不超过64KB)当作一个"段"使用。

    >>掌握字数据在寄存器中的存储

    首先要了解字在寄存器中的存放:字节 (内存划分的基本单位) 字 (两个字节 )双字( 四个字节) 四字( 八个字节)

    字的高(低)8位存放于通用寄存器的高(低)8位寄存器

    >>掌握物理地址的计算方法,并理解其本质

    物理地址:CPU访问内存单元时要给出内存单元的地址。 所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。

    8086内部的寄存器都是16位的,而外部地址总线宽度为20位,因此8086在内部用两个16位地址 通过计算合成得到一个20位的物理地址。

    CPU根据"物理地址 = 段地址 × 16 + 偏移地址"得到物理地址,用"段地址:偏移地址"(又称"逻辑地址",不唯一)来描述物理地址,段地址 × 16 构成段的起始物理地址,故根据需要划分段使用时,段的起始物理地址必须是16的倍数。

    >>掌握寄存器CS和IP的用途

    CS: 代码段段寄存器,用于存放代码段的「段地址」

    IP: 指令指针寄存器,用于存放CPU将要读取的指令在代码段中的偏移地址。

    计算机工作时通过CS:IP判断哪些是指令,CS:IP对应的物理地址[(CS) × 16 + (IP) ]存放的是CPU将要读取的指令。

    计算机工作步骤->第1步: CPU基于CS:IP,计算出物理地址,然后到相应的内存单元读取指令,送到指令缓冲区。 第2步: CPU自动修改IP的值,IP = IP + 所读取指令的长度,从而为下一条指令读取做准备; 第3步: 执行指令。 转第1步,重复此过程。

    要注意的是, IP和CS值的修改不能通过mov指令实现,需借助转移指令 (如jmp, call等)。

    >>掌握汇编指令mov, add和jmp的基本用法 

    mov和add指令使用的注意事项:

    (1) 在mov和add指令中,两个操作对象的位数应一致。

    (2) 运算时超出寄存器表示的位数的情形:

    例2中AL和AH各自作为独立的寄存器使用.

    用jmp指令修改CS和IP的一些用法

    (1) 同时修改CS、IP的内容:jmp   段地址: 偏移地址

    (2)只修改IP的内容:jmp   某一合法寄存器

  • 相关阅读:
    HOT Scene!
    Windows Live Beta ONLINE!
    Shanda EZ Mini
    HDR Lighting & Bloom Lighting
    将整张网页存成png图片
    What's NEW in C++/CLI Language
    [快讯] Visual Studio 2005和SQL Server 2005来了!
    [原创] 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
    使用模版列来控制在一个GridView中某些列有热连接,某些列无热连接
    七种武器——.NET工程师求职面试必杀技
  • 原文地址:https://www.cnblogs.com/kori/p/9920490.html
Copyright © 2011-2022 走看看