第一周 微型计算机基础概论
大家好,又是我,沉迷学习无法自拔的小笨蛋康sir。
这个文集将会同步更新我观看吴宁老师的《微机原理与接口技术》教学视频写的笔记,学习笔记,大概每周一章。
有问题大家可以在评论下面留言讨论,欢迎纠错!
欢迎收藏阅读,动动小手给个硬币点个赞。
——@正能量的康sir
也可移步我的博客(https://blog.csdn.net/qq_33956508)获得更好的阅读体验,也会更新一些其它技术类文章。

第1讲 关于本课程
未来从事计算机应用系统研究,特别是过程控制系统设计。
先修知识:《大学计算机》课程和软件类课程学习经验。
计算机的主要应用:数值计算、信息处理、过程控制,本课程关注过程控制(主要是工业过程控制)。
这是计算机硬件技术。
主要内容:计算机基础知识+微型计算机的基本原理+输入输出接口技术
案例1:家庭安全防盗系统设计
为一栋含8个窗户的家庭设计
功能要求:每个窗台有监测装置,当某一装置连续5次检测出异常时,启动报警(警铃响、警灯闪烁)
可以根据需要布防和关闭
案例分析:
系统涉及硬件线路和控制程序
如何检测出有无异常
检测到的信息在计算机中如何便是
如何确定一场次数?是否来自同一检测装置?
如何启动和停止报警
案例2:温室温度控制系统
温室温度25°C ~38°C
实时显示2位温室温度
给定时间内不能保证温度在要求范围时,发出报警信号
案例分析:
设计硬件系统:温度测量电路、温度控制电路、温度显示电路、报警电路
设计软件系统:温度检测、温度控制(根据检测值和给定控制电炉通/断)、显示温度、报警输出
试问如何读取并被计算机识别?温度如何显示?怎样实现报警?
系统结构框架:

温度:连续变化的量,必须转换成数字信号(离散的电信号)
完成系统设计将涉及:
数据在计算机中表示
现场数据的采集(获取)、转换
现场数据的存储、处理
本课程主要讲授:
1、数值信息表示
2、微型机基本原理(微处理结构、Intel80x86)
3、汇编程序设计
4、半导体存储器及其接口设计
5、输入输出技术(数字并行接口、模拟量并行接口)
3属于软件设计,4、5属于硬件设计
这门课将带给你:
微型计算机基本工作原理理解
简单输入输出接口控制系统软硬件的初步设计
第2讲 微型计算机系统组成
计算机系统:硬件系统、软件系统。
我们讲硬件系统。
硬件系统包括主机系统、外部设备。
主机系统:CPU、存储器、输入输出接口、总线
外部设备:所有可以通过输入输出接口与计算机进行信息交互的电子设备。
我们讲主机系统。
(1)微处理器
微处理器简称CPU,是计算机的核心。主要包括运算器、控制器、寄存器组。

(2)存储器
计算机中的记忆装置。用于存放计算机工作过程中需要操作的数据和程序。

接下来的授课不做特殊说明“存储器”一般指内存储器。
内存储器
(内存条)
特点:
存取速度较快,容量相对较小;
内存按单元组织,每单元对应一个唯一的地址;(内存地址,十六进制)
每个内存单元中存放1Bytc数据;(单元内容,8位二进制)
内存单元个数称为内存容量。

有关存储器的术语:
存储容量:存放的数据量。用字节表示。(8位二进制)
对存储器的操作:读(出)指将内存单元的内容取入CPU,原单元内容不改变;写(入)指CPU将信息放入内存单元,单元中原来的内容被覆盖。对某个器件的读/写相当于与其进行信息交换。
内存储器的分类
按工作方式:随机存取存储器(RAM,掉电以后数据会丢),只读存储器(ROM)
输入输出接口
接口是CPU与外部设备间的桥梁
(平滑连接了高速cpu和低速的外部设备)
主要功能:
数据缓冲寄存;
信号电平或类型的转换;
实现主机与外设间的运行匹配。
CPU<——>I/O接口<——>外设
总线
是一组导线和相关的控制、驱动电路的集合。
是计算机系统各部件之间传输地址、数据和控制信息的通道
地址总线(AB,全称Address Bus)
数据总线(DB,全称Date Bus)
控制总线(CB,全称Control Bus)
软件系统
软件:为运行、管理和维护计算机系统或为实现某一功能而编写的各种程序的总和及其相关资料。
分类:
系统软件:操作系统、编译系统、网络系统、工具软件
应用软件
微机系统概念结构

主机系统特征:
能够与CPU直接进行信息交换的部件属于主机系统
不能够与CPU直接进行信息交换的部件属于外部设备
第3讲 微型计算机的一般工作过程
计算机的工作就是执行程序。程序就是指令的序列。
计算机的工作就是按照一定的顺序,一条一条地执行指令。
计算机中指令的执行过程
指令:由人向计算机发出的、能够位计算机所识别的命令
计算机的工作是逐条执行由指令构成的程序。
计算机的工作过程就是执行程序的过程
程序是指令的序列,计算机的工作过程就是执行指令的过程

指令的执行过程
取指令——>分析指令——>读取操作数——>执行指令——>存放结果
其中,取指令、分析指令、执行指令是核心步骤,读取操作数如果需要操作数才有,
顺序执行:一条指令执行完了再执行下一条指令。
并行执行:同时执行两条或多条指令。
执行时间=取指令+分析指令+执行指令
设:三个部分的执行时间均为△t,则:执行n条指令时间T0为:
顺序执行T0=3n△t
并行执行:理想情况下,仅第一条指令需要3△t,之后每经过1△t就有一条指令执行结束。T=3△t+(n-1) △t.
(注:取指令时总线会忙碌)


两种执行方式时间的比较
并行:更高的效率,更高的复杂度
设加速比S=顺序执行花费的时间/并行执行华为的时间
S=3n△t/(3△t+(n-1) △t)=3n/(2+n)
2.冯·诺依曼计算机
冯·诺依曼计算机的工作原理:存储程序工作原理
结构特点:运算器为核心
冯·诺依曼计算机的工作过程:


取一条指令的工作过程:
将指令所在地址赋给程序计数器PC(program counter);
② PC内容送到地址寄存器AR,PC自动加1;
③ 把AR的内容通过地址总线送至内存储器,经地址译码器译码,选中相应单元。
④ CPU的控制器发出读命令。
⑤ 在读命令控制下,把所选中单元的内容(即指令操作码)读到数据总线DB。
⑥ 把读出的内容经数据总线送到数据寄存器DR。
⑦ 指令译码:数据寄存器DR将它送到指令寄存器IR,然后再送到指令译码器ID
冯·诺依曼计算机体系结构

注:运算器和控制器是CPU的·组成部分,存储器这里是内存储器。
冯·诺依曼机的特点和不足
特点:程序存储,共享数据,顺序执行。属于顺序处理机,适合于确定的算法和数值数据的处理。
不足: 与存储器间有大量数据交互,对总线要求很高。
执行顺序由程序决定,对大型复杂任务较困难
以运算器为核心,处理效率低
由PC控制执行顺序,难以进行真正的并行处理。
哈佛结构:
指令和数据分别存放在两个独立的存储器模块中;
CPU与存储器间指令和数据的传送分别采用两组独立的总线;(以存储器为核心)
可以在一个机器周期内同时获得指令操作码和操作数。

第4讲 常用计数制及其转换
1. 常用计数制
人类最习惯的计数制是十进制
计算机由具有两种状态的开关器件组成,可以用0和1分别表示两种不同的状态
计算机中采用二进制
计算机硬件惟一能够识别的是二进制数。
任何其它计数制和各种信息要让计算机处理,都需要借助软件转换为二进制。
计算机中的常用计数制:十进制、二进制数、十六进制数、八进制数
十进制表示法
特点:以十为底,逢十进一;共有0-9十个数字符号。用D(decimal)代表。

二进制表示法
特点:以2为底,逢2进位;只有0和1两个符号。用B(binary)表示。

(3)引入十六进制、八进制数的理由
十进制数100000的二进制表示11000011010100000
四位一组1 1000 0110 1010 0000
十六进制1 8 6 A 0
(4)十六进制表示法
特点:
有0--9及A--F共16个数字符号;逢16进位。用H(hex)表示

(5)八进制表示法
特点:有0--7共8个数字符号;逢8进位,用O(octal)表示。

标识符
234.98或234.98D或(234.98)D
1101.11B或(1101.11)B
271.54O或(271.54)O
ABCD . BFH或(ABCD . BF)H
计数制的通用表达式
对任意一种计数制,都可以用以下权展开式表示:

2.各种进制数间的转换
(1)非十进制数到十进制数的转换:
按相应的权表达式展开
1011.11B=1×23+0×22+1×21+1×20+1×2-1+1×2-2=8+2+1+0.5+0.25=11.75
5B.8H=5×161+11×160+8×16-1=80+11+0.5=91.5
(2)十进制到非十进制数的转换
对二进制的转换:对整数:除2取余;对小数:乘2取整。

对十六进制的转换:对整数:除16取余;对小数:乘16取整。
对八进制的转换:对整数:除8取余;对小数:乘8取整。
(3)非十进制数与二进制数的转换
十六进制数与二进制的转换
用4位二进制数表示1位十六进制数
整数部分,从小数点向左组,每4位一组,不够4位的高位补0.小数部分,从小数点向右分组,不够4位的在低位补0。
例子:25.5=11001.1B=00011001.1000B=19.8H
1100 1010.0110 1010B=CA.6AH
八进制数与二进制的转换
用3位二进制数表示1位八进制数
整数部分,从小数点向左组,每3位一组,不够3位的高位补0。
小数部分,从小数点向右分组,不够3位的在低位补0。
例子:11001010.0110101B=011 001 010.011 010 100B=(312.324)O
第5讲 计算机中的编码
编码
信息从一种形式或格式转换为另一种形式的过程。
用代码表示各种信息,以便于计算机处理
需要编码的信息种类
数值
字符
声音
图形、图像
计算机中的编码
数值编码:二进制、BCD码
西文字符编码:ASCII码
BCD码
BCD(Binary Coded Decimal二进制编码的十进制)码
用二进制表示的十进制数
特点:
保留十进制的权,数字用0和1表示。
8421BCD编码:
用4位二进制码表示1位十进制数,每4位之间有一个空格
1010—1111是非法BCD码(因为比10大了),只是合法的十六进制数
BCD码码与十进制和二十进制数之间的转换
BCD码与十进制数之间存在直接对应关系
例:(1001 1000 0110.0011)BCD=986.3
BCD码与二进制的转换
先转换为十进制数,再转换二进制数;反之同样。
(0001 0001 .0010 0101)BCD=11 .25=(1011 .01)B
BCD码在计算机中的存储方式
以压缩BCD码形式存放:
用4位二进制码表示1位BCD码
一个存储单元中存放2位BCD数
以扩展BCD码形式存放
用8位二进制码表示1位BCD码.即高4位为0,低4位为有效位
每个存储单元存放1位BCD
ASCII码
西文字符编码
将每个字母、数字、标点、控制符用1Byte二进制码表示
其中:标准ASCII的有效位:7bit,最高位默认为0。(现在使用的是扩展ASCII码,8位,这门课不涉及)
下表中A-F,0-9要熟记

ASCII码的奇偶校验
奇校验
加上校验位后编码中“1”的个数为奇数。
例:A的ASCII码是41H(1000001B)
以奇校验传送则最高位前加1,为 C1H(11000001B)
偶校验
加上校验位后 编码中“1”的个数为偶数。
上例若以偶校验传送,则不需要变化,为 41H。
随堂练习
10010110.1001B =(150.5625)D=(0001 0101 0000.0101 0110 0010 0101)BCD
1F3DH= (7997)D =(0111 1001 1001 0111)BCD
若以奇校验传送字母B,则B的ASCII=(C2)H=( 11000010)B
第6讲 计算机中数的表示与运算
计算机中的二进制数表示与运算
按数的表表示方法分类
定点数:小数点固定的一种数。早期计算机用。不足:编程时需要确定小数点位置;难以表示两个大小相差较大的数;存储空间利用率低。
定点整数:小数点在最右
定点小数:小数点在最左
浮点数(现在普遍使用,稍后重点讲)
按数的性质分类
无符号数:数中所有的0和1都是数据本身
有符号数:需用0或1表示数的性质(整数或复数)
各种编码多视为无符号数,数值多视为有符号数
无符号数和有符号数都是机器数
浮点数
浮点数:小数点的位置可以左右移动的数
0.35x102
2是阶码,10是阶基(二进制中是2),35是尾数(小数点后面的部分)

规格化浮点数:尾数部分用纯小数表示,即小数点右边第1位不为0。
无符号数
无符号数的算术运算
加法运算:1+1=10(有进位)
减法运算:10-1=01(有借位)
乘法运算:00001011×0100=00101100B, 每乘以2,相对于被乘数向左移动1位
除法运算:00001011÷0100 =00000010B商=00000010B 余数=11B,每除以2,相对于被除数向右移动1位
有符号数
有符号数:用最高位表示符号,其余是数值。0表示正数,1表示负数。
符号数的表示方法:原码、反码、补码
注意:数的性质由设计者决定,在低级语言程序设计中,根据数的性质由程序语言处理(按无符号数或有符号数处理)(硬件无法识别,由程序员确定)
原码
最高位为符号位,其余为真值部分。 [X]原=符号位+|绝对值|
优点:真值和其原码表示之间的对应关系简单,容易理解
缺点:计算机中用原码进行加减运算比较困难;0的表示不唯一([+0]原=0 0000000,[-0]原=1 0000000)。
反码
对一个机器X:
若X>0 ,则 [X]反=[X]原
若X<0, 则 [X]反=对应原码的符号位不变,数值部分按位求反。
例子:X=-52=-0110100
[X]原=1 0110100
[X]反=1 1001011
数0的反码也不是唯一的。[+0]反=[+0]原=00000000,[-0]反=[-0]原数值部分分按位取反=11111111
补码
若X>0, 则[X]补= [X]反= [X]原
若X<0, 则[X]补= [X]反+1
例:X=-52=-0110100
[X]原=1 0110100
[X]反=1 1001011
[X]补=[X]反+1=11001100
数0的补码是唯一的。
[+0]补=[+0]原=00000000,[-0]补=[-0]反+1=11111111+1=1 00000000 对8位字长,进位被舍掉就为00000000和[+0]补相同。
补码的说明:
钟表将指针从5点拨到1点
两种拨法
逆时针拨:5-4=1
顺时针拨:5+8=12+1=1 (12为模,自动丢失)
于是,对模12有5-4=5+8
8和-4互为补数
[-4]补=12-4=8
5-4=5+(-4)=5+(12-4)=5+8=12+1
补码的好处:实现将减法运算转换为加法运算。
补码的算数运算
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X+(-Y)]补 =[X]补+[-Y]补
例一:66-51=66+(-51)=15
用补码运算
[+66]补= [+66]原= 01000010
[-51]原=10110011
[-51]补=[-51]反+1=11001100+1=11001101
[+66]补+ [-51]补=1 00001111=15
例二:X=-52=-0110100,Y=116=+1110100,求X+Y=?
[X]原=10110100
[X]补= [X]反+1=11001100
[Y]补= [Y]原=01110100
[X+Y]补= [X]补+ [Y]补=11001100+01110100=0 1000000
X+Y=+1000000
现代计算机系统中,程序设计时,负数可用“-”表示,由编译系统将其转换为补码。
例:若输入数=-3
程序编译后的值=FDH
特殊数10000000
无符号数:(10000000)B=128
在原码中定义为:(10000000)B=-0
在反码中定义为:(10000000)B= -127
在补码中定义为:(10000000)B= -128
计算机能力的局限性
计算机的运算能力是有限的
计算机无力解决无法设计出算法的问题
无法处理无穷运算或连续变化的信息
计算机能够表示的数(表数)的范围是有限的
计算机的表数范围受字长的限制
例:对8位机:
无符号数的最大值:1111 1111
有符号正数的最大值:0111 1111
当运算结果超出计算机表数范围时,将产生溢出
(1)无符号整数的表示范围:
当计算机中数的运行结果超出表数范围时,则产生溢出。
无符号整数的表数范围:
0 ≤ X ≤ 2n-1,n表示字长
无符号数加减运算溢出的判断方法:
当最高位向更高位有进位(或借位)时则产生溢出
[例]:2个8位数的加法运算
最高位向前有进位,产生溢出
11111111
+ 00000001
=1 00000000
最高位向前有进位,产生溢出
溢出位超出8位有效字长
在有效字长范围内,结果为0, 出错
(2)有符号整数的表示范围
原码和反码:-(2n-1) ≤X≤2n-1-1
补码:-2n-1≤X≤2n-1-1
对8位二进制数:
原码:-127~+127
反码:-127~+127
补码:-128~+127
符号数运算中的溢出判断
两个有符号二进制数相加或相减时,若运算结果超出可表达范围,则产生溢出.
溢出的判断方法:
最高位进位状态+次高位进位状态=1,则结果溢出
除法运算溢出时,产生"除数为0"中断;乘法运算无溢出问题。
[例]:
若:X=01111000, Y=01101001
则:X+Y=
01111000
+01101001
=11100001
次高位向最高位有进位,而最高位向前无进位,产生溢出。
(事实上,两正数相加得出负数,结果出错)
符号二进制数与十进制的转换
转换方法:
求出真值
进行转换
计算机中的符号数默认以补码形式表示。
原码=符号位+绝对值
正数的补码=原码=符号位+绝对值
∵负数的补码≠原码 ∴负数的补码≠符号位+绝对值
那么,负数的补码如何得到真值呢
例:补码数转换为十进制数
设:
[X]补=0 0101110B 真值=+0101110B X=+101110B=+46
若设:
[X]补=1 1010010B X≠-1010010B 欲求X真值,需对[X]补再取补
X=[[X]补]补=[11010010]补= - 0101110 = - 46
对正数:
补码=反码=原码,且 原码=符号位+真值
所以:正数补码的数制部分为真值
因正数的反码、补码与其对应的原码相同,故其数值部分亦为真值
对负数:
补码≠反码≠ 原码
所以:负数补码的数制部分≠真值
负数只有原码的数值部分是真值
负数反码和补码的数值部分都不是真值
第7讲 基本逻辑运算与逻辑门
关于逻辑
逻辑:是思维规律,事物因果之间所遵循的规律。逻辑的基本表现形式是命题和推理
命题:能判断真假的陈述语句
推理:从前提推出结论的思维过程。前题是已知的命题,结论是通过推理规则得出的命题。
关于逻辑——命题
语句例:
2+3=5——真命题
3是偶数——假命题
明天上午有课吗?——不是命题
3不是偶数——非(否定)
小明既学过英语,也学过德语——并(同时)
从先到北京经郑州走,或者经太原走——或者
复合命题可以由简单命题通过“联结词”所表示的运算得到。
命题是逻辑的基本表现形式,所以,“联结词”所表示的运算就是逻辑运算。
并非——“非“运算
并且——“与“运算
或者——“或“运算
命题的“真”和“假”可以对应为
在物理上:开关的“断开”和“闭合”,电平的“高”和“低”,……
在数学上:二进制的“1”和“0”
现代计算机由各种逻辑器件构成,数学基础是逻辑代数
逻辑代数
逻辑代数由英国数学家乔治·布尔发明
主要研究和判断相关的运算
用字母表示变量,变量的取值只有0和1。“0”对应“假”,“1”对应“真
逻辑运算与基本逻辑门
逻辑运算
用符号来表示命题及其联结关系
例如:命题“小明及学过英语,也学过德语“可以符号化为:A and B
表示两个命题之间具有逻辑关系——真值表
逻辑关系真值表

1.“与“运算
“与“运算
仅当输入条件全部为“真“时,输出得结果为”真“
若输入条件有一个为“假“,则输出结果为”假“
“与“运算符号:“·”, “∧”
若用1表示“真”,用0表示“假”,则与规则:1∧1=1, 1∧0=0, 0∧1=0, 0∧0=0
在电路中,与运算相当于开关的串联电路。仅当所有开关都闭合时,电路才通电。

与门(AND gate)
对多个逻辑变量执行“与”运算的门电路




“或”运算
“或”运算
输入条件中有一个为“真”,则输出的结果为“真”
仅当输入条件全部为“假”时,输出结果才为“假”
“或”运算符号:“+”,“∨”
“或”运算规则: 0∨0=0 ,0∨1=1, 1∨0=1, 1∨1=1
电路中,“或”运算相当于开关的并联电路
仅当所有开关都断开时,电路才无电流通过。

或门(OR gate)
对多个逻辑变量执行“或”运算的门电路



“非”运算
“非”运算:
当决定事件结果的条件满足时,事件不发生。
非”属于单边运算,只有一个运算对象,运算符为一条上横线。可以表示为:A=B。
“非”运算
“非”运算电路的表示:当开关断开时灯亮;开关闭合时灯灭。

非门电路(NOT gate)
对单个逻辑变量进行“非”运算
F=A

小结:
逻辑运算与数学运算的区别:
算术运算是两个数之间的运算,低位运算结果将对高位运算产生影响;
逻辑运算是按位进行的运算,低位运算结果对高位运算不产生影响
当“与”门的输入端有1位为低电平(0)时,则输出为“0”
当“或”门的输入端有1位为高电平(1)时,则输出为“1”
(以上两种情况,其它输入对输出不会产生影响,我们称对“与”门(或“或”门)进行了“封锁”)
第8讲 其它常用逻辑运算及其逻辑电路
“与非“逻辑
“与”运算 + “非”运算= “与非”运算
A·B或者A∧B
将与门的输出接入非门的输入,构成“与非门”

“或非”逻辑
“或”运算 + “非”运算=“或非”运算
A+B 或者 A∨B
将或门的输出接入非门的输入,构成“或非门”

“与非门”和“或非”小结
“与非门”及“或非门”均为多输入单输出的门电路
可实现多个变量的“与非”或者“或非”运算
例子:

“异或”逻辑
“异或”逻辑关系是在与、或、非3种基本逻辑运算基础上的变换。
异或逻辑的布尔代数表达式:F=A·B+A·B=A⊕B,⊕为异或运算符
“异或”运算是两个变量的运算
运算规则:相同则为0,相异则为1
异或门
对输入的两个逻辑变量执行“异或”运算的门电路
异或门是两输入单输出的门电路


“同或”逻辑
“同或”运算是在“异或”运算的基础上再进行“非”运算的结果。
同或运算的布尔表达式:F=A⊕B
“同或”运算是两个变量的运算
运算规则:
相同则为1,相异则为0
同或门
对输入的两个逻辑变量执行“同或”运算的门电路


本章小结
学习要求:
微型计算机系统组成
计算机中的数制及其转换
补码的概念和运算
冯·诺依曼结构及基本原理
基本逻辑门及其逻辑关系
教学要求
希望理解并能够回答以下问题:
微处理器、微型计算机、微型计算机系统三者间有什么不同?
计算机为什么要采用二进制?除二进制外为什么还有其它计数制?
什么是无符号数?什么是有符号数?
为什么要引入补码?
冯·诺依曼计算机具有什么结构特点和基本工作原理?
利用冯·诺依曼计算机执行一条指令需要的基本过程?
什么是逻辑?真值表的含义?
程序计数器PC的作用
希望掌握并能够回答以下问题:
不同计数制之间如何转换?
原码、反码和补码之间的关系?
二进制运算
如何判断运算结果是否溢出?
基本逻辑门电路的符号及输入与输出的关系(逻辑真值表)
注意点:
内存的组织模式
单元,单元内容,单元地址
逻辑门及逻辑关系
难点及要点:
补码的概念及其运算
基本逻辑门及其逻辑关系

