提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本文记录笔者为了汇编语言考试,梳理基于8086CPU的汇编语言相关知识点
一、8086CPU及通用寄存器的由来
在了解标题中的四个寄存器之前,笔者先对学习的8086CPU进行一番整理
Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。不久之后,Intel 就推出了 Intel 8088(一个拥有8位外部数据总线的微处理器)。它是以8080和8085的设计为基础,拥有类似的寄存器组,但是地址总线扩充为20位。总线接口单元(Bus Interface Unit)透过6字节预存(prefetch) 的队列(queue)位指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。
Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K 8 位元的输出输入(或32K 16位元),以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个寄存器。
划重点,我们对以上的两段话进行整理如下:
- 8086处理器具备20条地址总线
- 8086处理器具有16根数据线
- 8086处理器拥有四个16位通用寄存器,可当作八个8位寄存器进行存取
二、四个通用寄存器
1.通用寄存器
通用寄存器,顾名思义,是用来存放数据的,数据寄存器,针对8086处理器,你可以把他理解为能够存放16位数据的箱子
对于16位寄存器,能够存放的数据为
0000 0000~1111 1111 1111 1111 即0 ~FFFFH 0 ~ 6553
8086CPU具备四个通用寄存器,它们分别是AX、BX、CX和DX
2.AX、BX、CX和DX寄存器的特点
对于以上四种寄存器,他们与其他数据寄存器的不同之处在于,他们存储数据的16位,可以各自分为2个8位寄存器
如 AX= AH + AL, AX的高8位为AH寄存器, H =high BX= BH + BL, CX=CH + CL, DX= DH + DL
三、为什么寄存器设计成8位、16位
我们知道,在计算机中,内存的最小单元为字节,即8位数据
而在第一部分已经提及,8086CPU的数据线为16根数据线,即8086CPU可以处理2种尺寸的数据
- 字节型数据 1byte=8bit --8位寄存器
- 字型数据 2byte=16bit --16位寄存器 2个字节
对于字型数据,存放到通用寄存器中,分为两种
1.高位字节(AH,BH,CH,DH) 2.低位字节(AL,BL,CL,DL)
在进行汇编语言代码编写时,保证指令和数据的一致性非常重要!!!!
8位数据,只能给8位的寄存器;16位数据,只能给16位的寄存器
位数溢出会发生什么
若加法超过寄存器,如8位寄存器AL,往里面填充数值超过8位,则AL寄存器只保留相加溢出后未溢出的8位数据,溢出的数据,并不会保存到AH寄存器中,而是会存放到其他寄存器中
同样的AX寄存器,相加溢出时,只保存后16位数据,不会保存溢出16位的部分
寄存器是互相独立的,AL就是AL, AX就是AX,不会互相影响
总结
以上便是关于数据寄存器中的四种通用寄存器的总结
|