zoukankan      html  css  js  c++  java
  • 汇编语言第二章寄存器

    随着第一章的结束,我们对汇编语言的概况有了足够清晰和明确的基本认识,第二章的展开将会围绕着寄存器的方方面面具体阐释,寄存器是CPU中程序员可以用指令读写的部件,可以通过更改寄存器中的内容来实现对CPU的掌控。

    不同的CPU,寄存器的个数、结构是不同的,8086CPU有12个寄存器,分别是AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

    通用寄存器

    AX、BX、CX、DX(16位)

    一个16位寄存器可以存储一个16位的数据,为了和早期的CPU操作兼容,每个通用寄存器分为2个8位寄存器来使用。

    AX分为AH和AL
    BX分为BH和BL
    CX分为CH和CL
    DX分为DH和DL

     拿AX寄存器举例

    下面对几个基本概念进行补充:

    字节:记为byte,一个字节由8个bit组成,可以存在8位寄存器中。

    字:一个字由两个字节组成,可以存在一个16位寄存器中。

    汇编指令

    程序员通过汇编指令来控制CPU进行工作。

    下面举几个常见的汇编指令:

    汇编指令中不分大小写,在mov和add指令操作中,操作对象必须位数一致,运算时如果超过寄存器的位数,要舍掉

    物理地址

    CPU通过地址总线送入存储器的,每一个单元的唯一地址。

    16位CPU的特性:

    运算器最多可以处理16位的数据。

    寄存器的最大宽度为16位。

    寄存器和运算器之间的通路为16位。

    我们这次具体介绍8086CPU给出物理地址的方法:

    8086CPU有20位地址总线,可以传送20位地址,而8086CPU只是16位结构,其采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址,

    物理地址=段地址*16+偏移地址

    段地址也称为基础地址或者起始地址,段只是一个隐藏概念。

    段寄存器:CS、DS、SS、ES

    提供段地址

    CS:代码段寄存器,IP:指令指针寄存器

    在8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行

    jmp:此命令用来修改CS、IP的值。

    举例

    jmp 4AE3:2

    CS ← 4E3H
    IP ← 2

  • 相关阅读:
    Python_堡垒机开发基础
    用haslib给字符加密
    python学习(集合)
    编码
    小练习03
    python学习(字典)
    小练习02
    python学习(列表,元祖)
    小练习
    python学习
  • 原文地址:https://www.cnblogs.com/-Cold/p/9742876.html
Copyright © 2011-2022 走看看