x86汇编--1.王爽《汇编语言》

1 基础知识

1.1 机器语言

  • 机器语言是机器指令的集合。电子计算机的机器指令是一系列二进制数字。计算机将之转换为一系列高低电平脉冲信号来驱动硬件工做的。

1.2 汇编语言的产生

  • 机器语言难记忆、易出错、效率低下,以后诞生了汇编语言。汇编语言的主体是汇编指令。
  • 示例
    操做:寄存器BX的内容送到AX中
    机器指令:1000100111011000
    汇编指令:mov ax,bx
    在这里插入图片描述

1.3 汇编语言的组成

汇编语言的组成以下,其中汇编指令时核心。web

  • 汇编指令:机器码的助记符,有对应的机器码。
  • 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
  • 其余符号:如+、-、*、/等,由编译器识别,没有对应的机器码。

1.4 寄存器

1.5 指令和数据

  • 指令和数据对应到计算器都是二进制数据,同一个二进制数据可做为数据也可做为指令。
  • 示例:
    1000100111011000 -> 89D8H(数据)
    1000100111011000 -> mov ax,bx(指令)

1.6 存储单元

存储单元从零开始顺序编号。
一个存储单元能够存储8bit,一个字节。svg

1.7 CPU对存储器的读写

在计算机中专门有链接CPU和其余芯片的导线,一般称为总线。总线在物理上就是一根根导线的集合。根据传送信息的不一样,总线从逻辑上又分为3类,地址总线、控制总线和数据总线。
在这里插入图片描述.net

  • CPU经过地址线将地址信息3发出。
  • CPU经过控制线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据。
  • 存储器将3号单元中的数据8经过数据线送入CPU。写操做与读操做的步骤类似。

1.8 地址总线

  • CPU是经过地址总线指定存储单元,地址总线传送的能力决定了CPU对存储单元的寻址能力。(通常32位CPU,寻址能力为2^32=4G)

1.9 数据总线

  • CPU经过数据总线来与内存等器件进行数据传送,数据总线的宽度决定了CPU和外界的数据传送速度。

1.10 控制总线

  • 控制总线是一些不一样控制的集合,CPU经过控制总线对外部器件的控制。控制总线的宽度决定了CPU对外部器件的控制能力。

1.14 各种存储器芯片

在这里插入图片描述

1.15 内存地址空间

在这里插入图片描述
每一个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据(对ROM写无效)。
在这里插入图片描述3d

2 寄存器

CPU由运算器、控制器、寄存器 等器件组成,靠内部总线相连。
内部总线实现CPU内部各器件之间的联系;外部总线实现CPU和主板上其余器件的联系。指针

2.1 通用寄存器

8086有14个寄存器:
AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、CS、ES、PSW。
AX、BX、CX、DX一般用来存放通常性数据,被称为通用寄存器。
16位寄存器所能存储的数据最大值为216-1 。
为保证兼容性,8086 CPU的通用寄存器能够分为两个独立的8位寄存器使用。例: AX可分为AH和AL。code

2.2 字在寄存器中的存储

086 CPU全部的寄存器是16位,能够存放2个字节(一个字)。
在这里插入图片描述
8086采用小端模式:高地址存放高位字节,低地址存放低位字节。xml

2.3 几条汇编指令

在这里插入图片描述

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

地址加法器采用物理地址=段地址X16+偏移地址的方法合成物理地址。
在这里插入图片描述blog

2.7 段地址X16+偏移地址=物理地址的理解

以123C8为例的一个物理地址,16进制的寄存器存储不了,就分为基础地址和偏移地址,基础地址12300,16进制寄存器存储不了,就定规则为段地址X16,这个解决了物理地址的存储问题。图片

2.8 段的概念

地址10000H~100FFH的内存单元组成一个段,该段的起始地址(基础地址)为10000H,
段地址为1000H,大小为100H;也能够认为是地址10000H1007FH、10080H100FFH的内存单元组成两个段,该段的起始地址(基础地址)为10000H和10080H,段地址为:1000H和1008H,打小都为80H。
在这里插入图片描述内存

2.9 段寄存器

8086 CPU有4个段寄存器:CS(代码段)、DS(数据段)、SS(堆栈段)、ES(附加段),这4个段提供给8086CPU内存单元的段地址。

2.10 CS和IP

CS(代码段寄存器) 和IP(指令指针寄存器) 是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。在任意时刻CPU将CS:IP指向的内容看成指令执行。
CS为代码段寄存器,IP为指令指针寄存器,
CPU将CS、IP中的内容看成指令的段地址和偏移地址,用它们合成指令的物理地址,
CPU将CS:IP指向的内容看成指令执行。(即PC)
在这里插入图片描述
8086CPU的工做过程简要描述
从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
IP=IP+所读取指令的长度,从而指向下一条指令;
执行指令。转到步骤1,重复这个过程。

2.11 修改CS、IP的指令

  • mov指令(传送指令) 能够改变8086CPU大部分寄存器的值,但不能用于设置CS、IP的值。
  • jmp指令(转移指令) 能够用来同时修改CS和IP的值,格式为
jmp 段地址:偏移地址;同时修改CS和IP
jmp 某一合法寄存器;则是仅修改IP

3 寄存器

参考

一、《汇编语言》 [王爽]
二、x86汇编语言笔记(全)(长文警告)
三、王爽《汇编语言》笔记(详细)
四、汇编入门(长文多图,流量慎入)