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

机器语言,机器语言就是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

汇编语言笔记(持续更新)_第1张图片
寻找物理地址过程

段的概念

汇编语言笔记(持续更新)_第2张图片
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 段地址:偏移地址

寄存器(内存访问)

汇编语言笔记(持续更新)_第3张图片
image.png

mov指令

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

汇编语言笔记(持续更新)_第4张图片
image.png

汇编语言笔记(持续更新)_第5张图片
image.png
汇编语言笔记(持续更新)_第6张图片
image.png

CPU的栈机制

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

你可能感兴趣的:(汇编语言笔记(持续更新))