zoukankan      html  css  js  c++  java
  • 什么是汇编语言?(简要介绍)

    汇编是低级语言,可以用来直接控制硬件,所以不同于高级语言,因为汇编的代码和机器码有关,所以不同的机器使用不同的汇编码。

    汇编因为是在二进制上面发展过来的,所以比二进制更加方便,举个栗子:

     一个hello world程序(别问我Hello Word是啥,谢谢~)用二进制语言写的话需要花50行的0和1,相比汇编语言的16行,差的太多太多~

    16位汇编采用实模式

    (可以随意对内存编程的模式,也就是说,如果存放着系统的内存是允许被修改的,一经修改系统将会发生故障)

    32位汇编采用的是保护模式(拥有权限级别,1级2级3级 根据等级的不同,访问的内存单元也不同)

    16位寻址能力为2的16次方 从00000-FFFFF 就是内存大小

    接下来我们介绍几个常用的寄存器

    AX,BX,CX,DX

    Ax:累加器

    BX:存放一个内存单元的偏移地址

    Cx :循环的计数器,当cx=0时,跳出循环执行下一条指令

    Dx: 存放着数据

    Cs:存放着当前执行的指令的段地址

    IP:存放着要执行的指令的偏移地址 (和CS是一组)

    Cs*16+IP =要执行的指令的实际地址

    (乘16是因为要将地址转变为基地址,加上了偏移地址后就是实际地址)

    当10000成为基地址,加载内存后,前面的内存单元和下一个内存单元之间,偏移量会变

    这时候我们只需要计算偏移量,也就是0 1 2 3这些小的数字,加起来后我们就可以轻松的获取到程序的内存(就是执行的代码)


    接下来我们讲一个特殊的东西,在汇编里面,有一种叫“栈”的奇特结构

    这种结构的特性是,最先进去的内存最后出来,最后进去的内存最先出来。

    栈遵循先进后出的原则

     

    然后我们介绍两个跟栈有关的寄存器SS SP

    Ss存放着栈顶的段地址

    Sp存放着栈的偏移地址

    无论何时 ss:sp指向栈顶

    栈由于其特殊的结构,经常用来做数据交换。

    补充:

    Ds cs ss 这些寄存器是不能通过直接赋予数值来改变寄存器的地址,只能通过ax,bx等寄存器的中转去改变!

  • 相关阅读:
    HTML link标签media参数
    初始化一个本地GIT仓储
    总结一下js的原型和原型链
    根据用户注册信息推荐 代码部分
    冷启动问题概述
    概率图模型
    LFM 隐语义模型
    item Collaborative Filtering
    推荐系统评测
    user Collaborative Filtering
  • 原文地址:https://www.cnblogs.com/anbus/p/9861005.html
Copyright © 2011-2022 走看看