zoukankan      html  css  js  c++  java
  • [汇编语言学习笔记][第二章寄存器]

    第二章 寄存器

    8086有14个寄存器,分别为AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。

    2.1 通用寄存器

    8086CPU的所有寄存器都是16位,可以存放两个字节。 AX , BX , CX , DX 这四个寄存器通常用来存放一般性数据,被称为通用寄存器

    为了兼容之前的8位通用寄存器,将这4个寄存器拆开为8个8位寄存器分别为

    H的含义High,高位,L的含义Low,低位

    • AX=AH+AL
    • BX=BH+BL
    • CX=CH+CL
    • DX=DH+DL

    2.2 字在寄存器的存储

    因为..x8086架构的原因,未来的字长都指的的是16位(8086机器的一个寄存器大小)

    2.3 几条汇编指令

    mov ax,18
    mov ah,78
    add ax,8
    mov ax,bx
    add ax,bx
    

    寄存器的名称不区分大小写

    • 若AX=00C5H,执行add al,93H 后等于多少呢

      我原来以为可以变成0158H,看答案才知道因为只是al相见,所以进位必须舍去

      答案为0058H

    2.5 16位结构CPU

    为什么叫16位呢?

    • 运算器一次最多处理16位的数据
    • 寄存器的最大宽度为16位
    • 寄存器和运算器之间的通路为16为

    2.6 8086CPU给出物理地址的方法

    问题:8086有20位数据总线(1MB寻址能力),但是它是16位CPU内部总线(64K),只能送出16位地址,如何解决?

    解决:通过内部用两个16位地址合成的方法来形成一个20位的物理地址

    物理地址=段地址*16+偏移地址
    本质不过就是扩大了4位而已,变成了20位。
    为什么只用20位呢?因为地址总线只有20位。
    
    
    内存并没有分段,但是CPU给内存分了段。分段方式管理内存
    所以实际可能描述内存地址,用这样的方式 2000:1F60单元
    代表内存的2000段中的1F60单元
    
    • (基础地址=段地址*16)
    • (物理地址=基础地址+偏移地址)

    2.7 段寄存器

    8086有4个段寄存器: CS , DS , SS , ES

    2.8 CS和IP

    • 基本定义

      CSIP 是8086CPU中最关键的两个寄存器,他们指示了CPU当前要读取指令的地址

      CS位代码段寄存器,IP为指令指针寄存器,**任意时刻**CPU将CS:IP所指向的内容当做指令执行

    • 执行过程

      1. 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器。
      2. IP=IP+所读取指令的长度,从而指向下一条指令
      3. 执行指令,转到步骤(1),重复这个过程

    在8086CPU加电启动或复位后 (即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H。即在8086PC刚启动,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元的指令是8086PC机开机执行后的第一条指令

    2.11 修改CS,IP的指令

    • 不能用mov指令

      jmp 段地址:偏移地址
      jmp 2AE3:3 //执行后 CPU将从2AE33H处读取指令
      
      jmp 某一合法寄存器(用寄存器给IP复制)
      jmp ax//执行前 ax=1000H,CS=2000H,IP=0003H
            //执行后 ax=1000H, CS=2000H,IP=1000H
  • 相关阅读:
    【Cocos2d游戏开发之七】在cocos2d中添加/删除系统组件,并解决View设置透明会影响View中的其他组件的问题!
    作为Web开发人员,我为什么喜欢Google Chrome浏览器
    站长的痛苦:鲜为人知让网站不再被K的秘决
    iOS多任务:suspend VS terminate
    社交网络让互联网“笑”了 让安全“哭”了
    好的程序员做不出好的软件设计
    影响搜索引擎收录网站内容的四大原因分析
    我是马云:新入职员工勿批判公司
    25个非常棒的jQuery滑块插件和教程
    联通进军IM市场
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480525.html
Copyright © 2011-2022 走看看