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

  • 相关阅读:
    敏捷个人2013.06月份户外活动报道:奥森健步读书分享会
    敏友的【敏捷个人】有感(16): 成为一个敏捷的人
    #敏捷个人# 每日认识101(14):成为一个敏捷个人
    4周的敏捷生活练习,你来吗?
    OKGo vs RxHttpUtils ...
    Android开发之EditText多行文本输入
    android开发中json与java对象相互转换
    android 调试崩溃Unable to instantiate application的解决方法
    Android.mk 使用说明
    几种知名开源富文本编辑器记录和对比(仅供参考)
  • 原文地址:https://www.cnblogs.com/-Cold/p/9742876.html
Copyright © 2011-2022 走看看