计算机组成原理与汇编语言知识点梳理(一)

本文介绍了计算机系统的基本组成,包括存储器、运算器、控制器等,以及冯·诺依曼体系结构。讨论了信息的存储方式,特别是整数的表示,如无符号整数和补码表示的带符号整数,以及它们的转换和处理。还涉及了整数运算中的溢出情况和加法器的工作原理。
摘要由CSDN通过智能技术生成

计算机组成原理与汇编语言(一)

第一章 计算机系统漫游

计算机系统层次

在这里插入图片描述

计算机的定义

通常所说的计算机,其全称是电子式数字计算机,它是一种能存储程序,能自动连续的对各种数字化信息进行算术、逻辑运算的快速工具。

  • 冯.诺依曼
  • 计算机硬件由存储器运算器控制器输入设备输出设备5大部件组成

    ​ •运算器:运算设备,加减乘除,与或非

    ​ •控制器:控制中心

  • 二进制代码表示指令和数据

  • 计算机采用存储程序的工作方式

  • 指令数据同等地位存放于存储器内,并可按地址寻访

  • 指令在存储器内按顺序存放

计算机的工作过程

  1. 编制程序
  2. 输入设备:输入机器代码
  3. 机器代码存入存储器
  4. 处理器获取机器代码中的一条指令
  5. 控制器分析/解码指令
  6. 运算器执行指令要求的运算
  7. 处理器获取机器代码中的下一条指令
  8. 控制器分析/解码指令
  9. 运算器执行指令要求的运算
  10. 存储器中的数据送到输出设备
  11. 输出设备:输出数据
  • Hello程序的生命周期

    •1.1 程序创建:程序员创建hello.c,及其数字化表示

    ​ 输入源程序(以高级编程语言形式输入), 计算机内存储的源程序(以机器码形式存储)

    •1.2 程序翻译:hello.c被翻译成机器可执行程序

    ​ 源程序:人可以读懂的程序

    ​ 可执行程序:系统可以读懂的程序

    ​ 源文件->可执行文件(机器代码文件):通过编译器实现

    •1.4 程序运行:硬件系统对程序的处理过程

    处理器 主存 I/O设备 总线

    •1.5 程序提速:高速缓存

    在这里插入图片描述

    •1.6 程序存储:存储器层次结构

    ​ 寄存器—高速缓存—主存—硬盘

    •1.7 硬件管理:操作系统

第二章 信息的表示和处理

  • 用十六进制方便表示二进制

信息的存储

信息存储

大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的存储器单位,而不是存储器中访问单独的位(bit)。

比特是英文 binary digit的缩写。比特是表示信息的最小单位,是二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量。一般来说,n比特的信息量可以表现出2的n次方种选择。

机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器(virtual memory).存储器的每个字节都由一个唯一的数字来标识,称为虚拟地址空间(virtual address space).

  • 十六进制表示法:
    • 一个字节由8位组成。在二进制表示法中,它的值域为:000000002 ~ 111111112 ;如果用十进制整数表示值域为010 ~ 25510
    • 由于二进制和十进制表示位模式比较麻烦。因此用十六进制(hexadecimal)数来表示位模式,十六进制简写(hex)表示符号"0~9"和"A ~ F "来表示16个数.一个字节的值域为0016 ~ FF16 .
  1. : 每台计算机都有一个字长(word size),指明整数和指针数据的标称大小(nominal size)
  2. 数据大小
  3. 寻址

非数的数字化表示

  1. 表示字符串
  2. 表示代码
  • ​ 1个字 = n个字节 (n=1,2,4,8)

  • 字长:

    ​ 整数的标称大小 int

    ​ 指针的标称大小 char*

    ​ 参与一次整数运算的二进制数位数

  • 数据大小(不同类型的数据存储空间大小不同)

    char 1字节

    int 4字节

    int 4字节*

    float 4字节

    double 8字节

  • 寻址

    ​ 一个数据:多个连续字节,地址算最低地址

  • 表示字符串

    ​ 用ASCLL码表示,一个字符用一个字节

  • 表示代码

    • 不同指令不同编码
      • add:0000
      • sub:0001
    • 相同指令add不同机器可能不同编码
      • 机器一:0000
      • 机器二:0010

整数表示

整数的数据类型
无符号整数
  • n位 2 n 2^n 2n个数; 二值编码:0000…0~1111…1; 取值范围:0~ 2 n − 1 2^{n-1} 2n1

  • 例如:4位->16个数

    ​ 二值编码:0000 ~ 1111

    ​ 取值范围:0~15

    • 8位->256个数

    ​ 二值编码:0000 0000~1111 1111

    ​ 取值范围:0~255

带符号整数–补码(two’s-complement)

通过补码来表示负数值,将字的最高有效位解释为负权(negative weight),最高有效位也称为符号位,符号位被设置为1时,表示值为负,而当设置为0时,值为非负.

  • n位 2 n 2^n 2n个数;二值编码:0000…0~1111…1;取值范围: − 2 n − 1 -2^{n-1} 2n1 ~ 2 n − 1 2^{n-1} 2n1

  • 例如:4位 -> 16个数

    二值编码:0000~1111

    取值范围: -8 ~ +7

    8位 -> 256个数

    二值编码:00000000~11111111

    取值范围: -128 ~ +127

在这里插入图片描述

典型数值编码

以8位为例

TMax(带符号)TMin(带符号)-10UMax(无符号)UMin(无符号)
+127-128-102550
011111111000000011111111000000001111111100000000

以4位为例

TMax(带符号)TMin(带符号)-10UMax(无符号)UMin(无符号)
+7-8-10150
011110001111000011110000
负整数与补码的转换方法:
  • 整数 -> 补码: 把"-"用1表示,对后面的数从前到后逐位取反,直到最后一个"1"不再取反,直接写下,后面若有"0"直接写下
  • 整数 <- 补码:把补码的第一个"1"变为"-",对于后面的数逐位取反,直到最后一个"1"不再取反,直接写下,后面若有"0"直接写下.

取反加一原理的一样

注:求补码只能用于带符号数的负数,无符号数没有补码

例如:

-1的补码为15 -001->1111

-2的补码为14 -010->1110

-3的补码为13 -011->1101

无符号数与带符号数的转换

在这里插入图片描述

  • 注意C语言中的强制类型转换
  • 若运算中既有带符号数也有无符号数,则转为无符号数运算
  • 在比较大小的时候,如果其中一个运算数是无符号的,那么在比较之前,另一个运算数会转换为无符号数。

整数的处理

一个算术运算溢出,是指完整的整数结果不能放到数据类型的字长限制中去。

1.无符号数加法

例如:

2位进制数加法(计算机内部不会以十进制进行加法运算)4位进制数加法
20+38 =580101 + 0010 = 0111
46+82 = 128 (溢出)1101 + 0100 = 10001 (溢出)
溢出判断:是否有进位产生溢出判断:是否有进位产生
  • 无符号数溢出判断:是否有进位产生
2.有符号整数加法
4位二进制数加法转换到十进制的加法
0101 + 0010 = 01115 + 2 = 7
1101 + 0100 = 10001 (无溢出)-3 + 4 = 1
0110 + 0100 = 1010 (溢出) [正溢]6 + 4 = -6
1000 + 1100 = 10100(溢出) [负溢]-8 + -4 = +4
  • 有符号数溢出判断

正溢: 正 + 正 = 负

负溢: 负 + 负 = 正

溢出判别

  • 例:设定点整数字长8位,补码表示(最高位为符号位),表示范围为-128~127,运算结果超出此范围就发生溢出。
  • 另一种方法:采用变形补码判断(双符号位) —— 正号:00,负号:11
  • 用Sn+1、Sn分别表示结果最高符号位和第2符号位
  • 溢出=Sn+1 ⊕ S (⊕:异或)

补充:在这里插入图片描述



例子:

在这里插入图片描述


补码加减运算
  1. 补码加法运算

    • [X+Y] = [X] +[Y]
  2. 补码减法运算

    • [X-Y] = [X] + [-Y]
  3. 补码运算规则:

    • 参加运算的操作数用补码表示
    • 符号位参加运算
    • 若指令码为加,则两数直接相加:
      • 若操作码为减,则将减数连同符号位一起取反加1后再与被减数相加
      • [-Y] = 对[Y] 取反加一
    • 运算结果用补码表示

整数补充知识:加法器与ALU

一位加法:

在这里插入图片描述

1.加法器:

在这里插入图片描述

2.ALU:

在这里插入图片描述

3.乘以常数
  • 乘的优化计算 (计算机中加法比乘法运算快)

  • 乘->移位+加法+减法+位级运算

  • 例如:•x∗2n → x≪n

    • x∗14=x∗(8+4+2)=x≪3+x≪2+x≪1

    • x ∗ 5 =x ∗ (4+1)

未完待续。。。。。。。。

计算机组成原理与汇编语言(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值