1
2002.2
2
课程目标
微机原理是学习和掌握微机硬件知识和汇
编语言程序设计的入门课程:
?微型计算机的基本工作原理
?汇编语言程序设计
?微型计算机接口技术
目的:建立微型计算机系统的整体概念,
形成微机系统软硬件开发的初步能力。
3
教学内容
第一章 基础知识
第二章 微型计算机基础
第三章 8086/8088CPU的指令系统
第四章 汇编语言程序设计
第五章 存储器系统
第六章 输入输出和中断技术
第七章 常用数字接口电路
第八章 模拟量的输入输出
4
教材
冯博琴主编,微机原理与接口技术,清华大学出版社,2002.2
微机原理与接口实验指导书,西安交大
课程情况
教学,42学时
实验,14学时
考试:作业 10%,实验 10%,期末考试 80%
答疑辅导
网络, http://ctec.xjtu.edu.cn/bbs/微机原理与接口技术 /
传统:地点:计教中心小楼 103,202,105,205
时间:每周五晚 7:00-10:00
5
第 1章 基础知识
主要内容:
? 各种常用记数制和编码以及它们
相互间的转换;
? 二进制数的算术运算和逻辑运算;
? 符号数的表示及补码运算;
? 二进制数运算中的溢出问题
6
§ 1.1 概 述
? 电子计算机的发展:
? 电子管计算机( 1946-1956)
? 晶体管计算机( 1957-1964)
? 中小规模集成电路计算机( 1965-1970)
? 超大规模集成电路计算机( 1971-今)
? 电子计算机按其性能分类:
? 大中型计算机 /巨型计算机( Mainframe Computer)
? 小型计算机( Minicomputer)
? 微型计算机( Microcomputer)
? 单片 计算机( Single-Chip Microcomputer)
? 微型计算机的核心:微处理器 (中央处理器 CPU)
? Intel CPU的发展见下页表
7
代 发表年份 字长(bits) 型号 线宽(?m) 晶体管数 (万个 ) 时钟频率 (MHz) 速度(MIPS)
一 19711972 48 40048008 50 0.20.3 <1 0.05
二 1974 8 8080 20 0.5 2-4 0.5
三 19781982 16 8086/808880286 2-3 2.913 4.77-108-20 <11-2
四 19851989 32 8038680486 1-2 27.5120 12-3325-66 6-1220-40
五 1993 32 Pentium 0.6-0.8 330 60-200 100-200

1995
1996
1997
1999
2001
32
P/Pro
P/MMX
PII
PIII
P4
0.6
0.6
0.35
.25-.13
.18-.13
550
450
750
850
3000
133-200
166-233
233-450
450-1200
1300-3000
>300
七 2002? 64 Itanium? 0.08 CPU:2.5KCache:30K 800(20条指令 /时钟周期 ) >3000
8
§ 1.2 计算机中的数制
?了解
? 特点;
? 表示方法;
? 相互间的转换。
9
一、常用记数制
?十进制 ——符合人们的习惯
?二进制 ——便于物理实现
?十六进制 ——便于识别、书写
?八进制
10
1,十进制
特点:以十为底,逢十进一;
共 有 0-9十个数字符号 。
表示:
11
2,二进制
特点:以 2为底,逢 2进位;
只有 0和 1两个符号。
表示:
12
3,十六进制
特点:以 16为底,逢 16进位;
有 0--9及 A--F共 16个数字符号。
表示:
13
进位计数制的一般表示
一般地,对任意一个 K进制数 S都可表示为
1 2 0
n 1 2 0
1
1
1
()
??
??
??
??
?
??
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
???
nn
kn
m
m
n
i
i
im
S S K S K S K
S K S K
SK
其中:
Si -- S的 第 i位数码,可以是 K个符号中任何一个;
n,m – 整数和小数的位数;
K -- 基数;
Ki -- K进制数的权
14
如何区分不同进位记数制的数字
在数字后面加一个字母进行区分:
? 二进制:数字后面加 B,如 1001B
? 八进制:数字后面加 O,如 1001O
? 十进制:一般不加,如 1001
? 十六进制:数字后面加 H,如 1001H
? 在明显可以区分其记数制的情况下,可以省略
数字后面的字母
15
二、各种数制间的转换
1,非十进制数到十进制数的转换
按相应 进位计数制的权表达式展开,
再按十进制求和。
例,10110010B = (?)10
13FAH= (?)10
16
2,十进制到非十进制数的转换
? 十进制 → 二进制的转换:
整数部分:除 2取余;
小数部分:乘 2取整。
? 十进制 → 十六进制的转换:
整数部分:除 16取余;
小数部分:乘 16取整。
以小数点为起点求得整数和小数的各个位。
17
3,二进制与十六进制间的转换
?用 4位二进制数表示 1位十六进制数
例,10110001001.110 = (?)H
0101 1000 1001.1100
5 8 9, C
注意:位数不够时要补 0
18
§ 1.3 无符号二进制数的运算
无符号数 算术运算
有符号数 逻辑运算
19
一、无符号数的运算
?算术运算
包括:
加法运算
减法运算
乘法运算
除法运算
20
1,规则
?加法,1+1=0(有进位),…
?减法,0-1=1(有借位),…
?乘除法,…
一个数乘以 2相当于该数左移一位;除以 2
则相当于该数右移 1位。
21
[例 ]:
?00001011× 0100=00101100B
?00001011÷ 0100=00000010B…11B
即,商 =00000010B
余数 =00000011B
22
2,无符号数的表示范围
一个 n位的无符号二进制数 X,其表示范围

0 ≤X ≤ 2n-1
若运算结果超出这个范围,则产生溢出。
(或者说运算结果超出 n位,则产生溢出)
判别方法:
运算时,当最高位向更高位有进位(或
借位)时则产生溢出 。
23
[例 ]:
11111111
+ 00000001
1 00000000
结果超出8位(最高位有进位),发生溢
出。(结果为 256,超出8位二进制数所能
表示的范围 255)
24
3,逻辑运算
?与 (∧ )、或 (∨ )、非 (▔ ),异或 (⊕ )
?特点:按位运算,无进借位
?运算规则
…..
例,A=10110110,B=01101011
求,A∧B,A∨B,A⊕B
25
4,逻辑门
逻辑门:完成逻辑运算的电路
掌握:
?与、或、非门逻辑符号和逻辑关系
(真值表);
?与非门、或非门的应用。
26
与门( AND Gate)
Y = A∧ B
A B Y
0 0 0
0 1 0
1 0 0
1 1 1
&AB Y
注:基本门电路仅完成 1位二进制数的运算
27
或门( OR Gate)
Y = A∨ B
A B Y
0 0 0
0 1 1
1 0 1
1 1 1
Y
A
B
≥1
28
非门( NOT Gate)
1A Y
Y = A
A Y
0 1
1 0
29
异或门( eXclusive OR Gate)
Y = A⊕ B
Y
A
B

A B Y
0 0 0
0 1 1
1 0 1
1 1 0
30
5,译码器
?74LS138译码器:
G1
G2A
G2B
C
B
A
Y0
Y7
?
?
?
? 译码输出
译码输入
译码使能
31
74LS138真值表
使 能 端 输 入 端 输 出 端
G1 #G2A #G2B C B A #Y0 #Y1 #Y2 #Y3 #Y4 #Y5 #Y6 #Y7
? 0 1
? 1 0
? 1 1
0 ? ?
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
? ? ?
? ? ?
? ? ?
? ? ?
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 1 1 0 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 0
32
§ 1.4 带符号二进制数的运算
? 计算机中的带符号二进制数
? 把二进制数的 最高位 定义为符号位
? 符号位为 0 表示 正数,符号位为 1 表示 负数
? 连同符号位一起数值化了的数,称为 机器数 。
? 机器数所表示的真实的数值,称为 真值 。
(在以下讲述中,均以8位二进制数为例)
33
[例 ]:
+52 = +0110100 = 0 0110100
符号位 数值位
-52 = -0110100 = 1 0110100
真值 机器数
34
1,符号数的表示
?对于符号数,机器数常用的表示
方法有 原码, 反码 和 补码 三种。
数 X的原码记作 [X]原,反码记作
[X]反,补码记作 [X]补 。
注意:对正数,三种表示法均相同。
它们的差别在于对负数的表示。
35
?原码 [X]原
? 定 义
符号位,0表示正,1表示负;
数值位:真值的绝对值。
n
n n
X X
X X
X
?
? ?
? ??
? ? ?
?
1
1 1
2
2 2
≥0
0 ≥-
36
原码的例子
真值 X=+18=+0010010
X=-18=-0010010
原码 [X]原 =0 0010010
[X]原 =1 0010010
符号 符号位
n位原码表示数值的范围是
对应的原码是 111? 1~ 011? 1。
( ) ~ ( )nn??? ? ? ?112 1 2 1
37
数 0的原码
? 8位数 0的原码,+0 = 0 0000000
- 0 = 1 0000000
即:数 0的原码不唯一。
38
?反码 [X]反
定义
? 若 X>0, 则 [X]反 =[X]原
? 若 X<0,则 [X]反 = 对应原码的符号位
不变,数值部分按位求反
n
n n
X XX
X X
?
?
???
? ?? ?
?
1
1
2
( 2 1 ) 2
≥0
0 ≥-
39
[例 ]:
? X= - 52 = -0110100
[X]原 = 10110100
[X]反 = 11001011
40
反码的例子
真值 X=+18=+0010010
X=-18=-0010010
反码 [X]反 =0 0010010
[X]反 =1 1101101
符号 符号位
n位反码表示数值的范围是
对应的反码是 100? 0~ 011? 1。
( ) ~ ( )nn??? ? ? ?112 1 2 1
41
0的反码:
[+0]反 = 00000000
[-0]反 = 11111111
即:数 0的反码也不是唯一的。
42
?补码
定义:
? 若 X>0,则 [X]补 = [X]反 = [X]原
? 若 X<0,则 [X]补 = [X]反 +1
-
n
n n
X X
X
X X
?
?
? ?
? ?
?
1
1
2
2 2
≥0
0 > ≥-
43
[例 ]:
? X= –52= – 0110100
[X]原 = 10110100
[X]反 = 11001011
[X]补 = [X]反 +1=11001100
n位补码表示数值的范围是
对应的补码是 100? 0~ 011? 1。
~ ( )112 2 1nn??? ? ?
44
0的补码:
?[+0]补 = [+0]原 =00000000
?[-0]补 = [-0]反 +1=11111111+1
=1 00000000
对 8位字长,进位被舍掉
?∴ [+0]补 = [-0]补 = 00000000
45
?特殊数 10000000
? 该数在原码中定义为,-0
? 在反码中定义为,-127
? 在补码中定义为,-128
? 对无符号数,(10000000)2 = 128
46
8位有符号数的表示范围:
?对 8位二进制数:
?原码,-127 ~ +127
?反码,-127 ~ +127
?补码,-128 ~ +127
? 想一想,16位有符号数的表示范围是多少?
47
2,有符号二进制数与十进制的转换
对用补码表示的二进制数:
1)求出真值
2)进行转换
48
[例 ]:
? 将一个用补码表示的二进制数转换为十进制数。
1) [X]补 = 0 0101110B 真值为,+0101110B
正数
所以,X=+46
2) [X]补 = 1 1010010B
负数
X = [[X]补 ]补 = [11010010]补
= - 0101110B
所以,X = - 46
49
3,补码加减法的运算规则
?通过引进补码,可将减法运算转换
为加法运算。规则如下:
[X+Y]补 =[X]补 +[Y]补
[X-Y]补 =[X]补 - [Y]补
其中 X,Y为正负数均可,符号位参与运算。
50
*补码的运算原理
模 (module)就是一个计数系统的最大容量 。 例如, 钟
表的模为 12,8位二进制数的模为 28。
凡是用器件进行的运算都是有模运算, 运算结果超过
模的部分 会被运算器 自动丢弃 。 因此, 当 器件为 n位时,

X=2n+X (mod 2n)
不难验证,
[X]补 =2n+X (mod 2n)
因此,
[X?Y]补 = 2n + (X?Y) (mod 2n)
= (2n+X) + (2n ?Y) (mod 2n)
= [X]补 + [?Y]补
51
[例 ]:
? X=-0110100,Y=+1110100,求 [X+Y]补
? [X]原 =10110100
? [X]补 = [X]反 +1=11001100
? [Y]补 = [Y]原 =01110100
? 所以,[X+Y]补 = [X]补 + [Y]补
=11001100+01110100
=01000000
52
4,符号数运算中的溢出问题
? 进 (借 )位 ——
? 在加法过程中,符号位向更高位产生进位;
? 在减法过程中,符号位向更高位产生借位。
? 溢出 ——
? 运算结果超出运算器所能表示的范围。
53
溢出的判断方法
? 方法1:
? 同号相减或异号相加 —— 不会溢出。
? 同号相加或异号相减 —— 可能溢出:
? 两种情况:
同号相加时,结果符号与加数符号相反 —— 溢出;
异号相减时,结果符号与减数符号相同 —— 溢出。
? 方法2:
? 两个 8位带符号二进制数相加或相减时,若
C7?C6= 1,
则结果产生溢出。
C7为最高位的进 (借 )位; C6 为次高位的进 (借 )位。
54
[例 ]:
?有符号数运算,有溢出表示结果是错误的
?无符号数运算,有进位表示结果 是 错误的
1 0 1 1 0 1 0 1
+ 1 0 0 0 1 1 1 1
1 0 1 0 0 0 1 0 0
0 1 0 0 0 0 1 0
+ 0 1 1 0 0 0 1 1
1 0 1 0 0 1 0 1
0 1 0 0 0 0 1 0
+ 1 1 0 0 1 1 0 1
1 0 0 0 0 1 1 1 1
CASE1,CASE2:
CASE3:
55
§ 1.5 二进制编码
一、十进制数的表示 —— BCD码
? 用 4位二进制数表示一位十进制数。有两种表
示法,压缩 BCD码 和 非压缩 BCD码 。
? 压缩 BCD码的每一位用 4位二进制表示,
0000~1001表示 0~9,一个字节表示两位十进
制数。
? 非压缩 BCD码用一个字节表示一位十进制数,
高 4位总是 0000,低 4位的 0000~1001表示 0~9。
56
? 计算机中除了能够处理数值数据以外,还可以
处理文字、语音、图像等各种信息,这些信息
统称为非数值数据。
? 非数值数据在计算机中也必须以 二进制形式 表
示,非数值数据的表示本质上是编码的过程。
? 最常用的数据编码:美国标准信息交换代码
(American Standard Code for Information
Interchange,ASCII码 )
(见下页 ASCII编码表,教材中的附录 A)
二、非数值数据的表示
57
ASCII码 — 美国标准信息交换代码
A S C I I 字符表
000 001 010 01 1 100 101 1 10 111
0000 N U L D L E SP 0 @ P ` p
0001 S O H D C 1 ! 1 A Q a q
0010 S T X D C 2 " 2 B R b r
001 1 ET X D C 3 # 3 C S c s
0100 EO T D C 4 $ 4 D T d t
0101 EN G N A K % 5 E U e u
01 10 A C K S Y N & 6 F V f v
01 1 1 B EL ET B ' 7 G W g w
10 00 BS C A N ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF S U B *, J Z j z
101 1 VT ES C + ; K [ k {
1 100 FF FS,< L \ l |
1 101 CR GS - = M ] m }
1 1 10 SO RS, > N ? n ~
1111 SI US /? O ? o D EL
注,H 表示高 3 位,L 表示低 4 位。
H
L
58
ASCII码
? 采用 7位二进制代码对字符进行编码
? 数字 0~9的编码是 0110000~0111001,它们的高 3位均
是 011,后 4位正好与其对应的二进制代码( BCD码)
相符。
? 英文字母 A~Z的 ASCII码从 1000001( 41H)开始顺序
递增,字母 a~z的 ASCII码从 1100001( 61H)开始顺
序递增,这样的排列对信息检索十分有利。
? 最高位通常总为 0,有时也用作奇偶校验位。
59
§ 1.6 计算机中常用数据单位
? bit
1Mb=1024?1024bit=220bit
1Gb=230bit=1024Mb
1Tb=240bit=1024Gb
? Byte
1 Byte=8bit,1KB=1024 Byte,…
? Word
表示字长,有 1bit,4bit,8bit,16bit等,
一般情况下为 2Byte(16bit)。
60
第 1章难点
?补码的概念及其运算
?有符号数运算的溢出问题
61
作业
? 第一章 习题 (p25~ p26)
? 1.3(注意第 3小题,二进制数取小数后 12位)
? 1.5
? 1.7
? 1.8
? 1.10