ALU 运算功能详解

总表

ALU 运算功能详解_第1张图片

  • S3、S2、S1、S0、CN_I为控制信号FC 进位标志FZ 零标志FS 正负标志I 中断允许标志;表中功能栏内的FC、FZ、FS表示当前运算可能会影响到该标志。

很显然只放这么一张表是很随意且模糊的,其中有着很多的基础知识,下文将详细讲述其中每一个功能,剖析每一次的运算过程。

  • 接下来我将会顺着二进制依次增大的顺序讲解,并将其作为标题。
  • 若 CN_I 有 1 与 0 的区别的将会分开解析。

FC,FZ,FS是什么

  • 在进入解释前我们先了解一下什么是 FC,FZ,FS

一、FC(Flag Carry)进位标志
ALU 运算功能详解_第2张图片
二、FZ(零标识)
当运算结果为 0 时,FZ = 1,即 FZ 将会亮。

  • 所有的运算都有可能产生 0 的结果

三、FS(正负标识)
当运算结果为负数时,FS = 1,即 FS 将会亮。

逻辑运算

0 0 0 0,F 直通 A、B

  • CN_I = 1

直接输出 A

  • CN_I = 0

直接输出 B


0 0 0 1,F = A + B

这里的 A + B 不是指一般的 1 + 1 = 2,而是使用二进制逻辑运算 “或” 进行运算
有关逻辑运算可以看 二进制逻辑运算 这里我直接放样例

A = 58 0101 1000
B = AB 1010 1011
或运算结果 [0] 1111 1011 = FB
  • FC = 0,FZ = 0,FS = 0;
  • 上表中 [0] 表示 FC 的值,用以表示有无进位若有进位 FC 就会等于 1,也就是说 FC 将会亮(由于异或判断之类的逻辑运算不会产生进位,所以逻辑运算都不会亮

0 0 1 0,F = A * B

同样,这里的 A * B 不是指的 2 * 2 = 4,而是使用二进制逻辑运算 “与” 进行运算(二进制逻辑运算 )

A = 58 0101 1000
B = AB 1010 1011
与运算结果 [0] 0000 1000 = 08

0 0 1 1

0 1 0 0

移位运算

0 1 0 1

0 1 1 0

0 1 1 1

算数运算

1 0 0 0

1 0 0 1

1 0 1 0

1 0 1 1

其他 1 1 0 0

其他 1 1 0 1

1 1 1 0

1 1 1 1

你可能感兴趣的:(计算机组成原理,单片机)