美文网首页
汇编语言笔记(持续更新)

汇编语言笔记(持续更新)

作者: youngiii | 来源:发表于2017-10-10 09:38 被阅读102次

    机器语言,机器语言就是0101组成的世界,计算机通过0101执行指令,但是总不能让程序员写0101吧? 既不好记,可读性又差,且容易出错,所以也就有了汇编语言,汇编语言主要是把特定的语句翻译成0101代码
    执行的过程是:程序员->汇编指令->编译器->机器码(0101)->计算机

    存储器

    计算机中最小的存储单元是 bit,也就是一个二进制位
    8bit = 1byte(字节)
    一个存储单元可以存放1个byte,即8bit,如 0000 1100

    CPU对存储器的读写

    CPU是通过总线来跟存储器通信的,总线从逻辑上分为地址总线,控制总线,数据总线

    • 地址总线主要是对地址进行传输,每根导线都有低电平和高电平,用二进制来表示就是0和1,10根导线可以传送10位二进制数据,而10位二进制数据有2的10次方的数据组合。

    • 数据总线主要是对数据进行传输,8根数据总线一次可传送8位2进制

    • 控制总线是个总称,控制总线的宽度决定了CPU对外部器件的控制能力

    寄存器

    一个典型的CPU由运算器,控制器,寄存器等构成

    • 运算器进行信息处理
    • 寄存器进行信息存储
    • 控制器控制各种器件进行工作
    • 内部总线连接各种器件,在它们之间进行数据传送

    通用寄存器

    AX,BX,CX,DX这4个称为通用寄存器,通常用来存放一般性的数据,由于这些寄存器是16位的,为了兼容旧代CPU,所以可拆分了8位
    AX = AH + AL
    BX = BH + BL
    CX = CH + CL
    DX = DH + DL

    寻找物理地址过程

    段的概念

    image.png

    段寄存器

    CS和IP是CPU中两个关键的寄存器,CS为代码寄存器,IP为指令指针寄存器,假设CS = M,IP为N,CPU将从Mx16+N单元开始读取一条指令并执行。执行过程:
    1.cs与ip放入地址加法器,计算得到地址
    2.地址总线传送该地址,然后在内存中找到该值
    3.值通过数据总线传送回cpu的控制电路
    4.送入到指令缓存器
    5.执行控制器执行指令

    修改CS、IP指令

    修改普通寄存器的指令类似于 MOV ax,16move bx,123,表示把16送进ax寄存器,把123送进bx寄存器,大部分都可以通过mov指令来修改寄存器,mov指令被称为传送指令
    但是,mov指令不能用于设置CS和IP,因为它们有专用的指令jmp,用法:jmp 段地址:偏移地址

    寄存器(内存访问)

    image.png

    mov指令

    1.将数据送入寄存器
    2.将一个寄存器中的内存送入到另一个寄存器
    3.将内存单元地址送入到寄存器 mov 寄存器名,内存单元地址mov a1, [0]
    [...]表示一个内存单元,[...]中的0表示内存单元的偏移地址
    段地址默认存放在DS中

    image.png image.png image.png

    CPU的栈机制

    在8086CPU中,有两个寄存器,SS和SP,SS存放栈顶地址,SP存放偏移地址,任意时刻,SS:SP执行栈顶元素。push指令和pop指令执行时,CPU从SS和SP中得到栈顶地址。

    相关文章

      网友评论

          本文标题:汇编语言笔记(持续更新)

          本文链接:https://www.haomeiwen.com/subject/frgqextx.html