(汇编)8086CPU地址 寄存器笔记

寄存器

8086CPU从功能上分为两大部分:执行部件EU(Execution Unit)与总线接口部件BIU(BUS Interface Unit)
图片来源网络

执行部件的构成:

功能:是负责执行所有的指令,向总线接口部件提供指令执行的结果数据和地址,并对通用寄存器和标志寄存器进行管理。

1.四个通用寄存器:AX(累加器 Accumulator), BX(基址寄存器 Base), CX(计数寄存器 Count), DX(数据寄存器 Data)。
X表示16位,可按地址高低分为8位寄存器 ~H 和 ~L,其中 ~ 表示A or B or C or D。这里既可以作为4个16位通用寄存器,也可以当做8个8位寄存器使用。

程序设计中,一般把AX用作累加器,BX 用作基址寄存器,CX用作计数器,DX用作数据寄存器。

2.四个专用寄存器:基数指针寄存器BP(Base Pointer),堆栈指针寄存器SP(Stack Pointer),源变址寄存器SI(Source Index),目的变址寄存器DI(Destination Index)

SP:堆栈指针寄存器;装栈顶指针偏移量。

BP:基址指针寄存器:装栈段中一个数据区的基址偏移量。

SI:源变址寄存器;装源操作数地址的偏移量。

DI:目的变址寄存器;装目的操作数地址偏移量。

图片来源于网络
图片来源于网络

3.标志寄存器FR(Flags Register):用来存放运算结果和特征,16位寄存器。

Nine individual bits of the Flags register are used as control flags 控制标志 (3 of them) and status flags 状态标志 (6 of them). The remaining 7 are not used.
A flag can only take on the values 0 and 1. We say a flag is set if it has the value 1.

The status flags are used to record specific characteristics of arithmetic and of logical instructions.

地址位标志
15
14
13
12
11OF
10DF
9IF
8TF
7SF
6ZF
5
4AF
3
2PF
1
0CF

标志位分为两大类:一类是状态标志,用来表示算术、逻辑运算的结果特征。(CF,PF,AF,ZF,SF,OF)。一类是控制标志;用来表示控制CPU的操作特征。(IF、DF、TF)

CF(FR0)进位位:CF=1为加、减运算结果的最高位有进位或有借位,否则CF=0。

PF(FR2)奇偶位:PF=1为操作结果“1”的个数为偶数,否则PF=0。

AF(FR4)辅助进位位:AF=1为运算结果的低4位向高4位有进位或有借位,(用于10进制BCD码运算指令)否则A=0。

ZF(FR6)零值位:ZF=1运算结果为0,否则ZF=0。

SF(FR7)符号位:SF=1运算结果最高为0(E),否则SF=0。

OF(FR11)溢出位:OF=1在算术运算时,带符号数的运算结果超出数的表示范围。否则OF=0。

TF(FR8)单步标志位:TF=1CPU进入单步工作方式。

IF(FR9)中断允许位:IF=1允许CPU响应可屏蔽外部中断请求。IF=0禁止中断。

DF(FR10)方向位:DF=1在字符串操作时使地址指针自动减量。DF=0自动增量。

4.算术逻辑部件ALU

总线接口部件

功能:执行外部总线周期,负责存储器与外部端口I|O传送数据。也就是负责CPU与存储器和外设之间的信息交换。

(1)四个段寄存器:代码段寄存器CS(Code Segment),数据段寄存器DS(Data Segment),附加段寄存器ES(Extra Segment),堆栈段寄存器SS(Stack Segment)。

CS:代码段寄存器;装代码段的起始地址;
DS:数据段寄存器;装数据段的起始地址;
SS:堆栈段寄存器;装堆栈段的起始地址;
ES:附加段寄存器;装附加段的起始地址。

(2)指令指针寄存器IP(Instruction Pointer Register ): 存放当前指令的下一第指令的起始存储单元的偏移地址。

This is a crucially important register which is used to control which instruction the CPU executes. The ip, or program counter, is used to store the memory location of the next instruction to be executed. The CPU checks the program counter to ascertain which instruction to carry out next. It then updates the program counter to point to the next instruction. Thus the program counter will always point to the next instruction to be executed

(3)地址加法器

(4)指令队列

地址

采用分段结构的存储器中,任何一个逻辑地址都由段基值(存放在某一个段寄存器中,是一个逻辑段的起始单元地址(段基址)的高16位)和偏移地址(offset)(表示某个存储单元与它所在段的段基址之间的字节距离)两部分构成,都是 16位二进制数。

逻辑地址表示:

  			段基值:偏移量
  			如2366:001AH
  			表示该逻辑单元的段起始地址位于23660H,段内偏移量为001AH个字节。其物理地址为2367AH。

物理地址:存储器的绝对地址,范围:00000H~FFFFFH,是CPU访问存储器的实际寻址地址(也称为绝对地址)

逻辑地址转物理地址:
16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加。如下的地址运算:
物理地址=段基址(cs ds es ss )×16+偏移地址

原因:

8086CPU地址线为20条,所以8086CPU寻址范围1MB(2^20=1024KB)。但指令仅给出16位地址,与寻址有关的寄存器也只有16位长,因此寻址范围只有64KB,为了寻址1MB,所以分成四个逻辑段。当CPU访问内存时,**段寄存器的内容(段基址)自动左移4位(二进制),与段内16位地址偏移量相加,形成20位的物理地址。**即8086系统的物理地址是将段地址寄存器的内容左移4位(或乘16)加上偏移地址,即可得到20位的物理地址。

二者搭配(见图):
图片来源网络

Note:
CPU在从存储器取指令时,以段寄存器CS作为代码段的基址指针,以IP的内容为偏移量,共同形成一条指令的存放地址

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值