zoukankan      html  css  js  c++  java
  • 第二章 寄存器 总结

    一 什么是寄存器

    寄存器是cpu的主要部件,程序员通过改变各种寄存器中的内容来实现对cpu的控制。

    二 通用寄存器

    1,8086cpu中,寄存器AX,BX,CX,DX通常存放一般性数据,称通用寄存器,每个寄存器均为16位,可以存放两个字节。

    2,寄存器拆分,AX可分为AH,AL,BX可分为BH,BL,CX可分为CH,CL,DX可分为DH,DL;

    三 字在寄存器中的存储

    字节(Byte)和字(Word).一个字节由8给bit组成,一个字由两个字节组成,可存于一个16位寄存器中,字的高八位存于通用寄存器的高八位寄存器,字的低八位可存于通用寄存器的低八位寄存器。

    四 几条汇编指令

    举例

           mov ax,18 ;将18送入寄存器AX    AX=18

      mov ah,78 ;将78送入寄存器AH    AH=78

      add ax,8  ;将寄存器AX中的数值加上8   AX=AX+8

      mov ax,bx ;将寄存器BX中的数据送入寄存器AX  AX=BX

      add ax,bx  ;将AX和BX中的数值相加,结果存在AX中  AX=AX+BX

    写一条汇编指令或一个寄存器的名称时不区分大小写 如bx和BX含义相同。

    五 物理地址

     8086在内部用2个16位地址通过计算合成得到20位的物理计算地址。

    由cpu中的地址加法器实现:

    地址加法器:物理地址=段地址*16+偏移地址

    六 CS和IP

    1 CS和IP是8086CPU中最为关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。

    2 CS:IP对应的物理地址存放的是cpu将要读取的指令,(CS)*16+IP=指令的物理地址。

    3 在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。CPU从何处执行指令是由CS和IP中的内容决定的,程序员可以通过改变CS,IP中的内容来控制CPU执行目标指令。

    但是,mov指令不能用于改变CS IP的值 我们可以使用jmp指令来修改CS IP的指令

    若同时修改 CS IP的内容 可以用   jmp 段地址:偏移地址 的指令完成。

    jmp 2AE3:3 执行后 CS=2AE3,IP=0003H CPU将从2AE33H处读取指令。

    如果只是想改变IP中的内容,可以用形如:“jmp 某一合法寄存器”的指令来完成。

    jmp ax,相当于mov IP ax。

    4.所以,要让CPU执行我们放在代码段中的指令,必须要将CS和IP指向第一条指令的首地址。

  • 相关阅读:
    Intent
    What should we do next in general after collecting relevant data
    NOTE FOR Secure Friend Discovery in Mobile Social Networks
    missing pcap.h
    after building Android Source code
    plot point(one column)
    When talking to someone else, don't infer that is has been talked with others at first. It may bring repulsion to the person who is talking with you.
    进程基本知识
    Python input和raw_input的区别
    强制 code review:reviewboard+svn 的方案
  • 原文地址:https://www.cnblogs.com/WJL123/p/9852325.html
Copyright © 2011-2022 走看看