• 汇编学习入门


    一、CPU的寄存器

    –AX--累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;
    –BX--基址寄存器,常用做存放存储器地址;
    –CX--计数器,作为循环和串操作等指令中的隐含计数器;
    –DX--数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。
    (SI,DI,SP,BP,只能按16位进行存取操作)
    –变址寄存器常用于存储器寻址时提供地址
      –SI(Source Index)是源变址寄存器
      –DI (Destination Index)是目的变址寄存器
    指针寄存器用于寻址内存堆栈内的数据
      –SP为堆栈指针寄存器,指示栈顶的偏移地址,SP不能再用于其他目的,具有专用目的
      –BP为基址指针寄存器,表示数据在段中的基地址
    –CS(代码段)指明代码段的起始地址,用来存放程序的指令序列,代码段寄存器CS存放代码段的段地址,指令指针寄存器IP指示下条指令的偏移地址
      处理器利用CS:IP取得下一条要执行的指令
    –SS(堆栈段)指明堆栈段的起始地址,堆栈段确定堆栈所在的主存区域,堆栈段寄存器SS存放堆栈段的段地址,堆栈指针寄存器SP指示堆栈栈顶的偏移地址
      处理器利用SS:SP操作堆栈栈顶的数据
    –DS(数据段)指明数据段的起始地址,数据段存放运行程序所用的数据,数据段寄存器DS存放数据段的段地址,各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址
      处理器利用DS:EA存取数据段中的数据
    –ES(附加段)指明附加段的起始地址,附加段是附加的数据段,也用于数据的保存:附加段寄存器ES存放附加段的段地址,各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址
      处理器利用ES:EA存取附加段中的数据,串操作指令将附加段作为其目的操作数的存放区域
    –FR(标志寄存器),标志(Flag)用于反映指令执行结果或控制指令执行形式,8086处理器的各种标志形成了一个16位的标志寄存器FR(标志寄存器的内容称为程序状态字PSW)
    –状态标志--用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它。
      –CF  ZF  SF  PF  OF  AF
    –控制标志--可由程序根据需要用指令设置,用于控制处理器执行指令的方式
      –DF  IF  TF 
    PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作

    二、CPU的寻址方式

    1.立即寻址
    操作数在指令中,紧跟在操作码之后,这样的操作数成为立即数,可以是8位或者16位。
    例如:
      MOV AX,1234H
    2.寄存器寻址
    3.直接寻址
    4.寄存器间接寻址
    5.基址寻址
    6.变址寻址
    7.基址变址寻址
     未完待续~
  • 相关阅读:
    关于隐藏UITabBarController和UINavigationController
    Google地图根据地址查询经纬度坐标
    领域驱动设计
    MFMessageComposeViewController
    关于什么时候使用NMock
    博客园现代化建设—[Entity Framework]在LINQ查询中指定返回的字段
    真相大白:为什么Entity Framework不能进行跨数据库查询(附解决方法)
    新问题新方法:在Entity Framework中实现指定字段更新
    分享我对领域驱动设计(DDD)的学习成果
    (转)js去空格
  • 原文地址:https://www.cnblogs.com/M-fengye/p/9789729.html
Copyright © 2020-2023  润新知