1 / 303

计算机原理

计算机原理. 唐玉华. 国防科技大学计算机学院. 第三章 运算方法与运算器. 3.1 基本运算. 3.2 定点加(减)法运算. 3.3 定点乘法运算 3.4 定点除法运算 3.5 浮点运算方法 3.6 运算器组织. 1、运算方法 讨论各种算术运算和逻辑运算是按什么规则进行的。 计算机的运算最终可分解为四则运算与基本的逻辑运算。 2、 运算器 运算方法的硬件实现. 第三章 运算方法与运算器. 第三章 运算方法与运算器. 运算器的硬件组织 1位全加器 n 位并行加法器 与移位寄存器组合构成乘法器与除法器

Télécharger la présentation

计算机原理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 计算机原理 唐玉华 国防科技大学计算机学院

  2. 第三章 运算方法与运算器 3.1 基本运算 3.2 定点加(减)法运算 3.3 定点乘法运算 3.4 定点除法运算 3.5 浮点运算方法 3.6 运算器组织

  3. 1、运算方法讨论各种算术运算和逻辑运算是按什么规则进行的。 计算机的运算最终可分解为四则运算与基本的逻辑运算。2、 运算器运算方法的硬件实现 第三章 运算方法与运算器

  4. 第三章 运算方法与运算器 • 运算器的硬件组织 • 1位全加器 • n位并行加法器 • 与移位寄存器组合构成乘法器与除法器 • 定点整数阶码运算器和定点小数尾数运算器组成浮点运算器 • 与其他寄存器组构成完整的ALU

  5. 第 3.1 节 基本运算

  6. 3.1、基本运算 • 知识点 • 理解计算机中的基本运算 • 逻辑运算 • 移位运算 • 算术运算 • 重点 • 掌握基本运算方法

  7. 3.1、基本运算 • 运算器的基本运算 • 对寄存器中的数据进行运算 • 是计算机中最基本的操作,是最小的有独立意义的操作单元,一个时钟周期完成 • 需要控制信号

  8. 3.1、基本运算 • 运算的表征 • 针对哪个寄存器进行操作 • 进行什么性质的操作 • 执行这些运算需要什么控制条件 目的寄存器D op源寄存器S

  9. 3.1.1、逻辑运算 • 对象: 逻辑数 • 主要特点 • 寄存器中的数据按位进行操作,即各位同时进行指定的操作 • 每一位均按二值布尔规则运算,各位之间没有关系,无进位和溢出

  10. 3.1.1、逻辑运算 • 逻辑运算的种类 • 二变量X和Y可组成的逻辑函数形式: • F=0X Y+1X Y +2 X Y+3 X Y • 其中系数 0 ~3 为特征值,共有16种组合 • 表3.1 两个变量组成的16个逻辑函数的操作

  11. 3.1.1、逻辑运算 • 基本逻辑运算及其应用 (1) 清除 A0 表示A寄存器所有位清0 • 用于建立机器的启动初始状态 • 清除状态位信息 • 实现机器工作状态转换 • 外设工作状态的建立与撤消 • 清除寄存器内容等

  12. 3.1.1、逻辑运算 (2)置“1”运算 A1 表示A寄存器所有位置“1” • 用来置寄存器或计数器的初值,置工作状态位以启动机器 • 工作状态转换 • 外设工作状态建立等

  13. 3.1.1、逻辑运算 (3)逻辑与运算 AAB 表示A、B两寄存器对应位实现逻辑与 运算,结果送A寄存器 • 用于数据处理中的“屏蔽”(Mask)或删除操作

  14. 3.1.1、逻辑运算 (3)逻辑与运算 AAB 例: 通过将B的对应位置0,可以使用与操作 将A的某位清除

  15. 3.1.1、逻辑运算 (4)逻辑或运算 AAB 表示A、B两寄存器对应位实现逻辑或运算,结果送A寄存器 • 主要用于数据处理中的“选位置1” (Selective Set),插入(Insert)和拼组(Packing)等操作

  16. 3.1.1、逻辑运算 (4)逻辑或运算 ① 选位置1 • 寄存器某些位要求置“1”时的操作 例:要求A寄存器A0、A3、A5被置1

  17. 3.1.1、逻辑运算 (4)逻辑或运算 ② 插入操作 • 用新数值取代寄存器中某些位 例:在A寄存器前4位插入新的数值 • 首先将A的前4位删除(与操作) • 在A的前4位插入新数值(或操作)

  18. 3.1.1、逻辑运算 ② 插入操作 例:在A寄存器前4位插入新的数值 • 首先将A的前4位删除(与操作) • 在A的前4位插入新数值(或操作)

  19. 3.1.1、逻辑运算 (5)异或运算 AA  B 表示A、B两个寄存器对应位实现异或运算,结果送A寄存器 • 主要用于数据处理中“比较(Compare)”以及“选位置反(Selective-Complement)”等操作

  20. 3.1.1、逻辑运算 (5)异或运算 ①选位置反 • 寄存器某些位要求置反操作 例:将A的A2、A3、A6、A7内容置反 变符号操作: B的第一位为1,其余位为0

  21. 3.1.1、逻辑运算 (5)异或运算 ②比较操作 两个寄存器内容逐位加以比较,如两个寄存器内容相同,经异或运算后,目的寄存器内容为0;两个寄存器内容不同时,经异或运算后,目的寄存器内容不等于0 比较操作后,还须对目的寄存器进行判0

  22. 3.1.1、逻辑运算 (5)异或运算 ②比较操作 • 同或

  23. 3.1.2、移位运算 • 移位运算既属算术运算又属逻辑运算 • “末端”触发器 • 右移时是指最左边那位触发器 • 左移时是指最右边那位触发器 • 移位类型 • 移位性质:逻辑移位,循环移位,算术移位 • 移位数据长度:字节、半字、字、双字、多字 • 移位位数:1位、2位、多位 7 0 寄存器

  24. 3.1.2、移位运算 1、逻辑移位 • 对寄存器中整组数据进行移位 • 数据处理中字的装配、拼组、拆散等 • 程序控制中的状态位和特殊信息的调用 • 串行信息的传送 • 寄存器末端触发器补入0,其符号表示为SHR A 或 SHL A 没有数字下标一般表示移一位

  25. A1 A2A3A4A5 A6A7 A8 10110101 A的始值 …… 丢失 补0 01011010 SHR A 3.1.2、移位运算 例:A寄存器逻辑右移运算

  26. A1 A2A3A4A5 A6A7 A8 10110101 A的始值 丢失 ……  01101 010 补0 SHL A 3.1.2、移位运算 例:A寄存器逻辑左移运算

  27. 3.1.2、移位运算 1、逻辑移位 • 拼组操作:将两个或多个二进制编码信息(如字母)组合成一个字的操作 例:将ASCII码中三个字母Y、O、U拼成一个21位的字。在21位寄存器A中拼组

  28. 3.1.2、移位运算 2、循环移位 • 寄存器两端触发器有移位通路,形成闭合的移位环路。在移位时,寄存器内信息在该环路内循环流动 • 用于寄存器移位时信息仍须保留的情况 • 描述语句为 CIR A或 CIL A

  29. A1 A2A3A4A5 A6A7 A8 10111001 A的始值 ……  01110011 CIL A 3.1.2、移位运算 例:A寄存器循环左移

  30. A1 A2A3A4A5 A6A7 A8 10011001 A的始值 ……  11001100 CIR A 3.1.2、移位运算 例:A寄存器循环右移

  31. 3.1.2、移位运算 例:用移位操作将寄存器A的内容送到B分析 • A的内容要保持,对A进行循环右移 • 每次移位将A右端数据传给A的左端,同时传给B的左端 • 对B进行右移 • 循环n次完成 A寄存器 B寄存器

  32. 3.1.2、移位运算 3、算术移位 • 寄存器带符号数的移位 • 移位时,数的符号位不变 • 算术移位语句: ASHR A或 ASHL A • 算术运算数的移位操作会引起数值变化 • 右移一位,相当于带符号的数除以2(乘以1/2) • 左移一位,相当于带符号的数乘以2

  33. 3.1.2、移位运算 3、算术移位 • 对于正数 • 原码、反码和补码均相同,移位时只需要在末端补“0”。左移时可能出现符号错误 • 若A<2n-2,则左移后的数值增大1倍 • 若A为偶数,且A0,则右移后的数值缩小1倍 • 对于负数的移位,不同码制的处理不同

  34. A1 A2A3A4A5 A6A7 A8 11010111 A的始值  补0…… 丢失 ASHR A 10101011 3.1.2、移位运算 3、算术移位 (1)原码 • 符号位不参与移位,只是绝对值移位,其末端补入0 例:A寄存器进行算术右移运算

  35. A1A2A3A4A5 A6A7 A8 10010101 A的始值  丢失 …… 补0 10101010 ASHL A 3.1.2、移位运算 3、算术移位 (1)原码 • 符号位不参与移位,只是绝对值移位,其末端补入0 例:A寄存器进行算术左移运算

  36. 3.1.2、移位运算 3、算术移位 (2)补码 • 算术移位实质上是数值的增大与缩小的运算,而符号位是否要参与移位操作? • 补码表示的数进行算术运算时,符号位要参与运算,即补码的符号位可以作为数的一部分参加运算 • 问题:算术移位怎样才能保持正确的符号和正确的移位值?

  37. 3.1.2、移位运算 3、算术移位 (2)补码右移 例:设x= -1011000,则[x]补=10101000,第一位为符号位。现将其真值x右移,再求出其对应补码,列式如下: 不移位x = -1011000 [x]补= 10101000 右移一位½x = -0101100 [½x]补= 11010100 右移二位 ¼x = -0010110 [¼x]补= 11101010

  38. A1 A2A3A4A5 A6A7 A8 A的始值 1 0 1 0 1 0 0 0 …… 丢失 1 1 0 1 0 1 0 0 ASHR A 符号位不变 3.1.2、移位运算 3、算术移位 (2)补码右移 • 结论:补码右移时,只要将其符号位也随之右移且符号位不变即可

  39. 3.1.2、移位运算 3、算术移位 (2)补码左移 例:设x= -0010110,则[x]补=11101010 ,第一位为符号位。现将其真值x左移,再求出其对应补码,列式如下: 不移位x = -0010110 [x]补= 11101010 左移一位2x = -0101100 [2x]补= 11010100 左移二位 4x = -1011000 [4x]补= 10101000

  40. 3.1.2、移位运算 3、算术移位 (2)补码左移 • 结论:左移时其末端补入0,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会出现溢出,即超出数的表示范围,这样将破坏正确的符号位

  41. A1 A2A3A4A5 A6A7 A8 10101000 A的始值 丢失…… 补0 ASHL A 产生错误 01010000 3.1.2、移位运算 3、算术移位 (2)补码左移 • 为了保持正确符号,往往采用补码变形码,使其有两位或多位符号位

  42. A1 1A12A2A3A4A5 A6A7 A8 1 10101000 A的始值 丢失…… 补0 101010000 ASHL A 3.1.2、移位运算 3、算术移位 (2)补码左移 • 符号位出现10情况表示负数溢出 • 符号位出现01情况表示正数溢出

  43. 正数 左移 补0 负数 左移 补0 正数 右移 补0 负数 右移 补1 3.1.2、移位运算 3、算术移位 (2)补码 • 对于补码表示数的算术移位,符号位参与操作 • 右移时,其末端补入符号位 • 左移时,其末端补入0 • 采用补码变形码保持符号的正确性

  44. 3.1.2、移位运算 3、算术移位 (3)反码 • 反码表示的数进行算术运算时,符号位也要参与运算,即反码的符号位可以作为数的一部分参加运算 • 问题:算术移位微操作怎样才能保持正确的符号和正确的移位值?

  45. 3.1.2、移位运算 3、算术移位 (3)反码右移 例:设x= -1011000,则[x]反=10100111,第一位为符号位。现将其真值x右移,再求出其对应反码,列式如下: 不移位 x = -1011000 [x]反= 10100111 右移一位 ½x = -0101100 [½x]反= 11010011 右移二位¼x = -0010110 [¼x]反= 11101001

  46. A1 A2A3A4A5 A6A7 A8 A的始值 1 0 1 0 1 0 0 0 …… 丢失 1 1 0 1 0 1 0 0 P: ASHR A 符号位不变 3.1.2、移位运算 3、算术移位 (3)反码右移 • 结论:反码右移时,只要将其符号位也随之右移且符号位不变即可

  47. 3.1.2、移位运算 3、算术移位 (3)反码左移 例:设x= -0010110,则[x]反=11101001 ,第一位为符号位。现将其真值x左移,再求出其对应反码,列式如下: 不移位 x = -0010110 [x]反= 11101001 左移一位 2x = -0101100 [2x]反= 11010011 左移二位 4x = -1011000 [4x]反= 10100111

  48. 3.1.2、移位运算 3、算术移位 (3)反码左移 • 结论:左移时其末端补入1,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会出现溢出,即超出数的表示范围,这样将破坏正确的符号位

  49. A1 A2A3A4A5 A6A7 A8 10101000 A的始值 丢失…… 补1 P:ASHL A 产生错误 01010001 3.1.2、移位运算 3、算术移位 (3)反码左移 • 为了保持正确符号,往往采用变形码,使其有两位或多位符号位

  50. A1 1A12A2A3A4A5 A6A7 A8 1 10101000 A的始值 丢失…… 补1 1 01010001 P:ASHL A 3.1.2、移位运算 3、算术移位 (3)反码左移 • 符号位出现 10 情况表示负数溢出,符号位出现 01 情况表示正数溢出

More Related