汇编语言:AX、BX、CX、DX寄存器知识点梳理

文章目录

  • 前言
  • 一、8086CPU及通用寄存器的由来
  • 二、四个通用寄存器
    • 1.通用寄存器
    • 2.AX、BX、CX和DX寄存器的特点
  • 三、为什么寄存器设计成8位、16位
    • 位数溢出会发生什么
  • 总结


前言

本文记录笔者为了汇编语言考试,梳理基于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位的寄存器
汇编语言:AX、BX、CX、DX寄存器知识点梳理_第1张图片

位数溢出会发生什么

若加法超过寄存器,如8位寄存器AL,往里面填充数值超过8位,则AL寄存器只保留相加溢出后未溢出的8位数据,溢出的数据,并不会保存到AH寄存器中,而是会存放到其他寄存器中

同样的AX寄存器,相加溢出时,只保存后16位数据,不会保存溢出16位的部分

寄存器是互相独立的,AL就是AL, AX就是AX,不会互相影响

总结

以上便是关于数据寄存器中的四种通用寄存器的总结

你可能感兴趣的:(#,汇编语言,单片机,嵌入式硬件)