• 汇编语言第二章寄存器


    随着第一章的结束,我们对汇编语言的概况有了足够清晰和明确的基本认识,第二章的展开将会围绕着寄存器的方方面面具体阐释,寄存器是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_day2(列表,元组,字典,字符串)
    爬取校花网美眉图
    python FTP常见用例
    mysql-调优
    mysql-事务与存储引擎
    mysql-基本命令与索引
    python基础(三)闭包、装饰器、迭代器、生成器
    Git的http与ssh配置
    python基础(二)抽象
    ssh-keygen 签名ca证书
  • 原文地址:https://www.cnblogs.com/-Cold/p/9742876.html
Copyright © 2020-2023  润新知