汇编(8086cpu): AX,BX,CX,DX寄存器

      AX,BX,CX,DX寄存器这四个寄存器也被称为通用寄存器.一般用来存放数据,一个寄存器可以存放16bit,也就是2bytes. 所以也被称为16位寄存器。

      什么特殊的地方导致这四个寄存器和其他寄存器不一样呢? 是因为这四个寄存器可以被分为两个8位寄存器,比如

       AX = AH + AL, BX = BH+BL, CX = CH + CL,  DX = DH+DL

  8086cpu的数据线是16根,所以可以处理两种尺寸的数据. 

    1. 字节型数据,byte  8bit存放到8位寄存器中。   2. 字型数据,  2bytes=16bit, 存放到16寄存器中。

 

在使用mov指令,要保证数据和寄存器之间位数的一致性。

汇编(8086cpu): AX,BX,CX,DX寄存器_第1张图片

使用mov ax, 5指令, 汇编编译器会将5编译成 16位的5, 但使用mov al,5指令,汇编编译器会将5编译成8位的5.也就是数据的位数要与寄存器的位数一致.

  mov ax, 6666; # ax寄存器只能存放16位数据,所以这条指令没有问题。

  mov ax, 66666;# 66666H已经查过了16位,该数据放入不了ax寄存器,所以执行会报错。

 

那么,在做加法运算中,如果一个数查过了16位,ax会怎么存储? 如果查过了8位,al,ah又会怎么存储?

如下图: 8080H+8080H = 10100H, 当ax只能存放16位,所以ax的值为 0100H,  那么问题来了,前面的又1去哪了呢?

汇编(8086cpu): AX,BX,CX,DX寄存器_第2张图片

当8位的寄存器al加上超过8位的数据时, 执行会报错.

 汇编(8086cpu): AX,BX,CX,DX寄存器_第3张图片

     

 

 

   

你可能感兴趣的:(汇编,汇编)