0%

Assembly_language

Assembly language

machine language:机器语言是机器指令的集合,机器指令就是机器可以正确执行的命令,由于机器语言难以理解和记忆,产生了汇编语言

汇编语言主体是汇编指令,汇编指令是机器指令的助记符

编译器:将汇编指令转化为机器指令

汇编语言

  • 汇编指令
  • 伪指令
  • 其他符号

指令和数据是应用上的概念,在内存和磁盘中没有任何区别

cpu对存储器的读写:指定存储单元地址,对哪个器件进行操作,进行哪种操作

  • 地址信息:地址总线,用于确定存储单元,地址总线的宽度决定了访问内存单元的容量。若N为总线个数,$2^N$
  • 控制信息:控制线
  • 数据信息:数据线,觉得CPU和外界的数据交换速度

image-20220511101520079

  • RAM:绝大部分数据

  • ROM:存储BIOS

image-20220511103233945

内存地址空间:逻辑上将物理不连续的内存统一起来,由地址总线宽度决定

image-20220511103412882

x86的RAM地址空间为00000-9ffff

寄存器

  • 通用寄存器:16bit,如AX,BX,CX,DX,可以划分为2个独立的8位寄存器,和上代的寄存器兼容,
    • AX的低八位构成AL,高八位为AH,?=044CH

image-20220511105051409

  • 段寄存器:提供段地址,CS,DS,SS,ES
    • 代码段CS:修改IP
    • 数据段DS
    • 堆栈段SS
    • 附加段寄存器ES

8086CPU将内存划分,$物理地址=段地址\times16+偏移地址(16位,64K)$

不同的段地址和偏移地址可以形成同一个物理地址

给定段地址,通过偏移地址可以寻址64K个内存单元

x86汇编

抽象层次(自底向上):

  • 硬件:数字逻辑
  • 微指令:固件,提供访问硬件的接口
  • 机器码:opcode,由多条微指令组成
  • 低级语言:主要是汇编语言,恶意代码分析
  • 高级语言:C、C++,编译为机器码
  • 解释型语言:不直接编译成机器码,翻译成字节码,解释器运行时将字节码翻译为可执行码

image-20220511113702613

内存

  • 数据:静态,全局变量
  • 代码:指令
  • 堆:动态内存
  • 栈:函数局部变量和参数,控制程序执行流

指令:助记符和操作数 mov ecx 0x42

操作数:

  • 立即数 immediate
  • 寄存器
  • 内存地址