汇编语言笔记--第二章--寄存器

时间:2022-04-17 19:25:15
一个CPU,由运算器,控制器,寄存器等器件组成,这些器件靠内部总线相连。对于码农来说,最主要的部件就是寄存器。8086CPU有14个寄存器,每个寄存器有一个名字:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。所有寄存器都是16位的,可以存放两个字节。

2.1通用寄存器

AX,BX,CX,DX这四个通用寄存器,每个寄存器可分为两个可单独使用的8位寄存器来用:AH,AL,BH,BL,CH,CL,DH,DL


2.2字在寄存器中的存储
8086CPU可以一次性处理一下两种尺寸的数据
1)字节:Byte,由8个bit组成,可以存在8位寄存器中
2)字:word,有2个Byte组成,分别成为这个字的高位字节和地位字节
16进制表示一个数据能更直观一些,在最后面加H


2.3 几条汇编指令
mov,add


2.4 物理地址


2.5 16位结构的cpu
8086是16位机(16位结构的cpu),有以下特性:
1)运算器一次最多可处理16位数据
2)寄存器最大宽度为16位
3)寄存器和运算器之间的通路为16位

2.6 8086cpu给出物理地址方法
8086有20位地址总线,1M的寻址能力,所以采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址:
1)读写内存是,cpu中的相关部件提供两个16位的地址:段地址  、偏移地址
2)段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
3)地址加法器讲两个16位的地址合成一个20位的物理地址
4)输入输出控制电路讲20位的物理地址送上地址总线
5)20位的物理地址呗地址总线传到存储器
地址加法器规则------->物理地址=段地址*16+偏移地址


2.7 "段地址*16+偏移地址=物理地址"的本质含义


2.8 段的概念
段的划分来自CPU,用分段的方式来管理内存。
段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16位,16位的寻址能力为64KB,所以一个段的长度最大为64KB
※段地址*16=段的起始物理地址

2.9 段寄存器
8086的四个段寄存器:CS,DS,SS,ES


2.10 CS 和 IP
CS 和 IP 是8086cpu中最关键的寄存器,他们知识了CPU当前要读取指令的地址。CS:代码段寄存器   IP:指令指针寄存器
在8086PC机中,这一时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M*16+N单元开始,读取一条指令并执行。
1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
2)IP=IP+所读取的指令的长度,从而纸箱下一条指令
3)执行指令。转到步骤1),重复这个过程
8086CPU加电启动或复位后,CS=FFFFH,IP=0000H,所以FFFF0H单元中的指令是8086CPU开机后执行的第一条指令
在内存中,指令和数据没有任何区别,都是二进制信息,CPU在工作时把有的信息看做指令,有的信息看做数据


2.11 修改CS,IP的指令
mov指令可以修改大部分8086CPU中的寄存器的值,但是不能修改CS:IP的值,能够改变CS:IP值的指令被称为“转移指令”,最贱的一个是jmp
格式一:jmp 段地址:偏移地址   ------ > jmp 2AE3:3  执行后 CS=2AE3H ,IP=0003H     jmp3:0B16 执行后  CS=0003H,IP=0B16H
格式二:jmp 某一合法寄存器     ------ > jmp ax   仅仅修改IP的内容(约等于mov IP ax)


2.12 代码段