80x86汇编2-数据宽度&逻辑运算

数据宽度

  1. 数学上的数字,是没有大小限制的,可以无限的大。但在计算机中,由于受硬件的制约,数据都是有长度限制的(我们称为数据宽度),超过最多宽度的数据会被丢弃
  2. 4位宽度表示:假设计算机只能存储4位2进制数
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

在这里插入图片描述
无符号数:0 1 2 3 4 5 6 7 8 9 A B C D E F
有符号数:

  1. 正数:0 1 2 3 4 5 6 7
  2. 负数:-1 -2 -3 -4 -5 -6 -7 -8 F E D C B A 9 8

当数据超过F的时候,多余的数据将会被舍弃

在这里插入图片描述


在这里插入图片描述

在我们32位的计算机中,列如地址等等,超过8个F的数据就会被舍弃
在这里插入图片描述
当我们往汇编里写入0x123456789的时候,前面的1被舍弃!

.
几个重要的计量单位:

  • BYTE 字节 8BIT 1字节
  • WORD 字 16BIT 2字节
  • DWORD 双字 32BIT 4字节

一个字节是8个2进制组成,比如0001 1000,转换成16进制就是18
两个字节是16个2进制组成,比如0001 0001 0010 0010,转换成16进制就是1122
四个字节是32个2进制组成,比如0011 0011 0001 0001 0011 0011 0001 0001,转换成16进制就是33113311
在32位计算机中通常我们的地址就是4字节,32个二进制或者8个16进制数来组成
因为我们32位的计算机最大存储为FFFFFFFF,所有最大的寻址空间就是0-0xFFFFFFFF

逻辑运行

逻辑或(or |)只要有一个是1就是1
在这里插入图片描述
只要其中一条线路连通,或者两条电路都连通,电路就会通电

逻辑与(and &)两个都是1才是1
在这里插入图片描述
只有两个条线路连通,电路才会通电

逻辑异或(xor ^)不一样是1
在这里插入图片描述
当两个开关一个位开一个为关的时候,电路才会通电

逻辑非(not !)1是0 ,0是1
0和1反过来就行了

拓展,CPU如何计算2+3=?

X=0010,Y=0011

在这里插入图片描述
先异或一次,得到1
R=0001

在这里插入图片描述
0010 << 1 == 0100
得到的0010左移一位得到0100

X:0001,Y:0100
在这里插入图片描述
得到一个值5,然后把x和y再逻辑与,得到的值左移一位得到的如果是0,那么R就是需要的值,如果左移完不是0,那么R和左移完的值再次逻辑异或和逻辑与,然后左移…

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35425243/article/details/82758247